如何在本地开发环境中实现可信任的SSL证书?

如何在没有SSL警告的情况下访问本地开发环境的HTTPS呢?

作为开发人员,您可能需要在多个项目、客户和Web应用程序上工作。Web应用程序开发的先决条件之一是在开发阶段在浏览器上本地测试网站。在生产环境中,您正在开发的应用程序很有可能使用SSL/TLS证书进行安全保护。

同意吗?

如果您必须测试某些功能,并利用需要源为https://的第三方API呢?

您可以说自签名证书没问题。但是您是否尝试过访问已实现自签名证书的站点?您仍然会在Chrome和其他浏览器上收到证书警告。

您看到了不安全徽章吗?

不好吧?

在开发环境中拥有有效的SSL证书的最佳方式是通过管理自己的CA,并且使用mkcert这一点是可能的。这是一个易于实现的方法,可以让您在以下本地开发Web地址上拥有有效的证书。

  • example.com
  • *.example.com
  • example.test
  • localhost
  • 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了。

root@yaoweibin:~/mkcert# /home/chandan/.linuxbrew/bin/mkcert -install
使用本地CA“/root/.local/share/mkcert”✨
本地CA现在已安装在系统信任库中!⚡️

root@yaoweibin:~/mkcert#

然后,为开发环境生成证书。假设您将在example.com上拥有您的网站,您可以使用以下命令获取证书和密钥文件。

root@yaoweibin:~/mkcert# /home/chandan/.linuxbrew/bin/mkcert example.com
使用本地CA“/root/.local/share/mkcert”✨

为以下名称创建了新的证书📜
 - "example.com"

证书位于“./example.com.pem”,密钥位于“./example.com-key.pem”✅

root@yaoweibin:~/mkcert#

太棒了!现在,我有一个有效的证书及其密钥文件,可以在我的Nginx、Apache或其他web servers上使用。

让我们以Apache HTTP服务器为例进行说明。如果尚未安装,请启用SSL模块和配置。

root@yaoweibin:/etc/apache2# a2enmod ssl
考虑到ssl的依赖性setenvif:
模块setenvif已启用
考虑到ssl的mime依赖性:
模块mime已启用
考虑到ssl的依赖性socache_shmcb:
启用模块socache_shmcb。
启用模块ssl。
有关如何配置SSL并创建自签名证书的信息,请参见/usr/share/doc/apache2/README.Debian.gz。
要激活新配置,您需要运行:
  systemctl restart apache2
root@yaoweibin:/etc/apache2#

如建议的那样,重新启动Apache。

此时,如果您netstat,您将注意到Apache已经启动,安全端口为443。

root@yaoweibin:/etc/apache2# netstat -anlp |grep 443
tcp6       0      0 :::443                  :::*                    LISTEN      11616/apache2       
root@yaoweibin:/etc/apache2#

但是,我们还没有完成。它是用默认(虚拟)证书启动的,我们需要替换它。

使用vi编辑default-ssl.conf文件,并用您生成密钥和证书文件的路径替换以下内容。

SSLCertificateFile      /root/mkcert/example.com.pem
SSLCertificateKeyFile /root/mkcert/example.com-key.pem

在重新启动Apache之前,还必须修改hosts文件,使example.com解析为您的本地主机而不是互联网主机。完成后,重新启动Apache HTTP服务器并访问example.com – 您将看到提供了一个受信任的证书。

结论

这在本地环境中拥有受信任的证书非常方便。上述只是一个example.com的示例,但您也可以针对localhost和其他主机进行操作。如果您需要外部签发者来颁发证书,请查看how to get that in free

类似文章