如何使用mkcert创建SSL证书
您是否厌倦了在本地开发项目中使用不受信任的SSL证书
您是否厌倦了在本地开发项目中使用不受信任的SSL证书?维护自己的证书颁发机构CA是一个痛苦的事情,这过程中需要用到神秘的程序和命令。
在本教程中,我将向您展示一种在没有CA的情况下在本地开发计算机上创建受信任SSL证书的简单方法。
mkcert是一个简单的零配置工具,由Filippo Valsorda使用Go编写,用于制作本地浏览器可信HTTPS SSL证书,无需任何配置。
这将对您非常大的帮助,因为你无法从可信证书颁发机构获取有效的证书。让我们深入研究安装和使用mkcert。
例如,我们开发站点的Service worker时就需要使用本地的可信证书进行测试,当初就找到mkcert这个软件,感谢Filippo Valsorda编写的软件。
线上可以使用免费证书,具体请参考教程使用Certbot为域名添加HTTPS SSL证书与自动续订。
安装 mkcert
如果要在基于Debian的Linux发行版,例如Ubuntu,Linux mint等发行版安装mkcert,请运行命令sudo apt install wget libnss3-tools
安装依赖软件certutil
。
要在基于Redhat的Linux发行版,例如CentOS和Fedora等发行版安装mkcert。您需要安装nss-tools
工具,运行命令sudo yum install nss-tools -y
。
安装完成后,下载mkcert从Github仓库中的发行页面。在下载之前请先检查mkcert发布页面获取最新版本。
在撰写本文时,最新版本是v1.3.0
。我们将使用wget命令下载mkcert二进制文件到当前目录。
然后运行命令sudo
mv
mkcert /usr/local/bin
移动mkcert二进制文件到/usr/local/bin
目录。
这样就可以不使用相对路径或者绝对路径运行mkcert
命令。最后运行chmod命令chmod +x mkcert
为mkcert二进制文件添加可执行权限。
sudo apt-get update
sudo apt install wget libnss3-tools
sudo yum install nss-tools -y #for centos Fedora Redhat
export VER="v1.3.0" && wget -O mkcert https://github.com/FiloSottile/mkcert/releases/download/${VER}/mkcert-${VER}-linux-amd64
chmod +x mkcert
sudo mv mkcert /usr/local/bin
对于macOS用户,您可以手动下载二进制安装mkcert或者从中brew
安装mkcert。
brew install mkcert
brew install nss # if you use Firefox
mkcert 创建SSL证书
mkcert支持MacOS,Windows,Fedora,RHEL,CentOS的update-ca-trust
。Ubuntu,Debian的update-ca-certificates
。Firefox,Chrome and Chromium,Java等CA根证书系统。
在创建本地可信证书之前,您需要运行命令mkcert -install
在本地安装CA根证书系统。
当安装CA后mkcert将会提示你Created a new local CA at "/home/myfreax/.local/share/mkcert",此时CA已经安装你在家目录中 。
完成后,开始为您的域名生成SSL证书。例如,我们使用mkcert为域名dev.myfreax.com
创建本地可信SSL证书。
命令mkcert dev.myfreax.com
将会创建本地浏览器受信任的证书。mkcert会在当前目录创建两个文件dev.myfreax.com-key.pem
和dev.myfreax.com.pem
。
example.org-key.pem
文件是SSL证书的Key,可通过Nginx的ssl_certificate_key
指令指定。
example.org.pem
文件是SSL证书,可通过Nginx的ssl_certificate
指令指定。
mkcert -install
mkcert dev.myfreax.com
配置 Nginx SSL证书
现在让我们使用一个简单的Nginx配置文件测试mkcert创建的SSL证书。首先你需要编辑Linux hosts文件,添加域名与IP的映射记录。
你可运行命令echo "127.0.0.1 dev.myfreax.com" | sudo tee -a /etc/hosts
直接追加一条DNS记录/etc/hosts
文件。
然后创建以下Nginx配置文件,记得将nginx的配置包含到你Nginx的主配置文件。如果你不会配置Nginx。可以参考我们的教程如何在Ubuntu 20.04设置Nginx虚拟主机。