如何通过HTTPS访问本地开发环境而没有SSL警告?
作为开发人员,您可能需要处理多个项目,客户端和Web应用程序。 Web应用程序开发的先决条件之一是在开发阶段在浏览器上本地测试网站。在生产环境中使用SSL / TLS证书保护正在开发的应用程序的可能性很高.
同意?
如果您必须利用第三方API(要求来源为https://)来测试某些功能,该怎么办?
您可以说自签名证书,这没有错。但是,您是否尝试过访问自签名证书实现的网站?您仍然会在Chrome和其他浏览器上收到证书警告.
你看到了吗 不安全 徽章?
不好,对?
在开发环境上拥有有效SSL证书的最佳方法是管理自己的CA,并可能通过 证书. 一种易于实施的方法,可让您在以下本地开发网站上拥有有效的证书.
- example.com
- * .example.com
- example.test
- 本地主机
- 127.0.0.1
- :: 1
您可以在macOS,Windows,CentOS,Ubuntu和其他基于UNIX的操作系统上实施mkcert。以下示例来自Ubuntu.
首先,让我们安装具有certutil来管理证书数据库的网络安全服务工具.
apt-get更新
apt-get安装libnss3-tools
您可能还需要确保在服务器上安装了brew。如果未安装,请使用以下命令.
apt-get安装linuxbrew-wrapper
最后,使用brew安装mkcert.
brew install mkcert
注意:要使用brew安装,您不应该是root用户。它被安装在/home/$USER/.linuxbrew/bin/mkcert
其中$ USER是您用来安装的用户名
现在,是时候将本地CA安装在系统信任库中了.
[受电子邮件保护]:〜/ mkcert#/home/chandan/.linuxbrew/bin/mkcert-安装
在使用本地CA "/root/.local/share/mkcert" ✨
现在,本地CA已安装在系统信任库中! ⚡️
[受电子邮件保护]:〜/ mkcert#
然后,为开发环境生成证书。假设您要在example.com上建立网站,并且可以使用以下命令来获取证书和密钥文件.
[受电子邮件保护]:〜/ mkcert#/home/chandan/.linuxbrew/bin/mkcert example.com
在使用本地CA "/root/.local/share/mkcert" ✨
创建了对以下名称有效的新证书certificate
– "example.com"
证书位于 "./example.com.pem" 和关键在 "./example.com-key.pem" ✅
[受电子邮件保护]:〜/ mkcert#
大!现在,我已经拥有一个有效的证书及其密钥文件,可以在我的Nginx,Apache或其他Web服务器上使用.
让我们以Apache HTTP服务器为例。如果尚未启用,请启用SSL模块和配置.
[受电子邮件保护]:/ etc / apache2#a2enmod SSL
考虑ssl的依赖setenvif:
模块setenvif已启用
考虑ssl的依赖mime:
模块哑剧已经启用
考虑对ssl的依赖项socache_shmcb:
启用模块socache_shmcb.
启用模块SSL.
有关如何配置SSL和创建自签名证书的信息,请参见/usr/share/doc/apache2/README.Debian.gz.
要激活新配置,您需要运行:
systemctl重新启动apache2
[受电子邮件保护]:/ etc / apache2#
按照建议,重新启动Apache.
此时,如果您使用netstat,则会注意到Apache已使用安全端口443启动。.
[受电子邮件保护]:/ etc / apache2#netstat -anlp | grep 443
tcp6 0 0 ::: 443 ::: *听11616 / apache2
[受电子邮件保护]:/ etc / apache2#
但是,我们还没有完成。它以默认(虚拟)证书开头,我们需要替换该证书.
使用vi文件修改default-ssl.conf并将以下内容替换为生成密钥和证书文件的路径.
SSLCertificateFile /root/mkcert/example.com.pem
SSLCertificateKeyFile /root/mkcert/example.com-key.pem
在重新启动Apache之前,您还必须处理example.com的主机文件,以便它解析为您的localhost而不是Internet主机。完成后,重新启动Apache HTTP服务器并访问example.com –您将看到正在提供受信任的证书。.
结论
在本地环境中拥有受信任的证书可能很方便。以上仅是example.com的示例,但是您可以为localhost和其他主机执行此操作。如果您需要外部签名者来颁发证书,请查看如何免费获取证书.