如何在没有SSL警告的情况下通过HTTPS访问本地开发环境?
作为开发人员, 你可能需要处理多个项目, 客户端和Web应用程序。 Web应用程序开发的先决条件之一是在开发阶段在浏览器上本地测试网站。在生产环境中使用SSL / TLS证书保护正在开发的应用程序的可能性很高。
同意?
如果你必须使用要求来源为https://的第三方API来测试某些功能, 该怎么办?
你可以说自签名证书, 这没有错。但是, 你是否尝试过访问自签名证书实现的网站?你仍然会在Chrome和其他浏览器上收到证书警告。
你看到”不安全”徽章吗?
不好吧?
在开发环境上拥有有效SSL证书的最佳方法是管理自己的CA, 并可能通过mkcert进行管理。一种易于实施的方法, 可让你在以下本地开发Web地址上拥有有效的证书。
- example.com
- * .example.com
- example.test
- 本地主机
- 127.0.0.1
- ::1
你可以在macOS, Windows, CentOS, Ubuntu和其他基于UNIX的操作系统上实施mkcert。以下示例来自Ubuntu。
首先, 让我们安装具有certutil来管理证书数据库的网络安全服务工具。
apt-get update
apt-get install libnss3-tools
你可能还需要确保在服务器上安装了brew。如果没有安装, 请使用以下命令。
apt-get install linuxbrew-wrapper
最后, 使用brew安装mkcert。
brew install mkcert
注意:要使用brew安装, 你不应该是root用户。它被安装在/home/$USER/.linuxbrew/bin/mkcert
其中$ USER是你用来安装的用户名
现在, 是时候在系统信任存储中安装本地CA了。
[email protected]:~/mkcert# /home/chandan/.linuxbrew/bin/mkcert -install
Using the local CA at "/root/.local/share/mkcert" ✨
The local CA is now installed in the system trust store! ⚡️
[email protected]:~/mkcert#
然后, 为开发环境生成证书。假设你要在example.com上拥有网站, 并且可以使用以下命令来获取证书和密钥文件。
[email protected]:~/mkcert# /home/chandan/.linuxbrew/bin/mkcert example.com
Using the local CA at "/root/.local/share/mkcert" ✨
Created a new certificate valid for the following names ????
- "example.com"
The certificate is at "./example.com.pem" and the key at "./example.com-key.pem" ✅
[email protected]:~/mkcert#
大!现在, 我已经有了一个有效的证书及其密钥文件, 可以在我的Nginx, Apache或其他Web服务器上使用。
让我们以Apache HTTP服务器为例。如果尚未启用, 请启用SSL模块和配置。
[email protected]:/etc/apache2# a2enmod ssl
Considering dependency setenvif for ssl:
Module setenvif already enabled
Considering dependency mime for ssl:
Module mime already enabled
Considering dependency socache_shmcb for ssl:
Enabling module socache_shmcb.
Enabling module ssl.
See /usr/share/doc/apache2/README.Debian.gz on how to configure SSL and create self-signed certificates.
To activate the new configuration, you need to run:
systemctl restart apache2
[email protected]:/etc/apache2#
根据建议, 重新启动Apache。
此时, 如果你使用netstat, 则会注意到Apache已使用安全端口443启动。
[email protected]:/etc/apache2# netstat -anlp |grep 443
tcp6 0 0 :::443 :::* LISTEN 11616/apache2
[email protected]:/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和其他主机执行此操作。如果你需要外部签名者来颁发证书, 请查看如何免费获得它。
评论前必须登录!
注册