使用mkcert配置本地https
Table of Contents
之前写过两篇给你的网站配置https的文章:
但这两篇文章讲的都是在线上配置,很多时候项目在本地也需要同样的使用https协议(而本地所使用的域名并没有注册,而是直接在hosts
文件中指定的),所以在本地我们不能使用以上的方法,而是使用一个叫mkcert的工具来生成证书。
安装mkcert
Windows安装mkcert
如果你知道Chocolatey,你可以用choco
来安装:
choco install mkcert
如果你没用过choco
,那直接在这里下载最新的Windows版mkcert:
下载了就可以直接用,不需要安装(用法在下边)。
macOS安装mkcert
其中nss是为了保证火狐浏览器能识别证书
brew install mkcert nss
Linux安装mkcert
Linux上要先安装nss(Network Security Services):
Ubuntu/Debian上安装nss:
sudo apt install libnss3-tools
RHEL/CentOS上安装nss:
sudo yum install nss-tools
Manjaro/Arch Linux上安装nss:
sudo pacman -S nss
SUSE Linux上安装nss:
sudo zypper install mozilla-nss-tools
安装nss后,再安装mkcert,常规方法无法安装,比如Ubuntu你没法用sudo apt install mkcert
来安装。
方法一:可以用Linuxbrew来安装(Linux安装和使用LinuxBrew)
brew install mkcert
方法二:直接在这里下载Linux的可执行文件,然后再给它添加可执行权限:
sudo +x ./mkcert-v1.4.1-linux-amd64
注意事项
下边用到的mkcert命令,如果你是直接下载的,名字并不是mkcert,比如在Windows中我下载的就是mkcert-v1.4.1-windows-amd64.exe
,建议打开cmd窗口后,直接把下载的mkcert拖到窗口中(如果拖到窗口中也不显示,那就再点一下鼠标右键应该就能显示)。
在Linux中也一样,不是直接叫mkcert
,也是把它拖到命令窗口中,再参考后面的命令使用。
设置mkcert为本地CA
前面已经我们已经安装好了mkcert(其实就是把mkcert的可执行文件下载下来),现在开始使用。
CA是Certificate Authority的缩写,即证书颁发机构,我们要配置让浏览器信任mkcert颁发的证书。
设置命令:
mkcert -install
生成HTTPS证书
注意:下边的命令生成的证书都是在当前目录下。
生成证书
给www.example.com
生成证书:
mkcert www.example.com
以上命令会在当前目录下生成:
www.example.com.pem
www.example.com-key.pem
生成通配符证书*.example.com
:
mkcert "*.example.com"
以上命令会在当前目录下生成:
_wildcard.example.com.pem
_wildcard.example.com-key.pem
给本地环回地址(127.0.0.1)生成证书:
mkcert 127.0.0.1
以上命令会在当前目录下生成:
127.0.0.1.pem
127.0.0.1-key.pem
其实以上三个可以写在一起的:
mkcert www.example.com *.example.com 127.0.0.1
生成证书后,如何使用可查看这里,其实就是在http服务器(如nginx、apache等)里使用语句指定证书的路径,再把端口换成443即可,重启nginx/apache,再重启浏览器,即可生效。
上机操作
Mac和Linux用户相对比较熟悉命令,我就不录屏操作了,按前面说的方法,命令去做就行,这里有一个Windows上使用的gif(点击图片可放大):
注意:如果拖动mkcert到cmd中后不显示路径,点击一下鼠标就会显示。
事实上,你把这证书用在远程服务器也是可以的,只不过这样的话,只有生成证书的那台电脑能识别,其它电脑/手机都打不开。