使用mkcert生成本地HTTPS证书

mkcert是一个用Go语言写的本地HTTPS证书生成工具。目前只支持MacOS和Linux系统,Windows还得在等等。写这篇日志时当前版本为0.9.0。

mkcert v1 is almost ready. This is a release candidate for testing on Linux

不过1.0很快就要来了,下面简单介绍下此工具的使用。

首先从Chrome63开始Google开始禁用所有.app和.dev域名的非HTTPS访问。所以以前做开发最常用的homestead.app被提示不安全而无法访问。所以借由此机会演示一下如何可是使用https://homestead.app来访问我的本地web服务。

安装

根据官方文档以及我本地是MacOS所以我执行了下面的命令安装

1
brew install --HEAD https://github.com/FiloSottile/mkcert/raw/master/HomebrewFormula/mkcert.rb

如果你的Mac上还没有安装brew这个软件包管理器,强烈建议你安装一下。

生成本地证书

安装成功后我们就可以执行mkcert -install命令来生成本地证书。这个证书同时会存放到你的本地钥匙串中。

mkcert-1

然后我们可以打开MacOS上的钥匙串看到多了一个mkcert development CA的证书记录

mkcert-4

mkcert-5

接下来继续生成对应域名的https证书。可以看到文档里说的很清楚。可以一次生成一个也可以一次生成多个,甚至可以生成泛域名证书。可以说还是很强大的。下面我生成一个针对homestead.app这个域名的单域名证书。

mkcert-2

首先我是在~/cert目录下执行的生成命令,所以此域名证书就会在当前目录下生成。可以看到生成了一个密钥对,这个就是稍后我们要配置到Nginx里的。

配置证书到Nginx

首先启动一台nginx服务器,然后将上面生成的2个证书文件拷贝到nginx所有的服务器上(至于你怎么整到服务器上面自己想办法)。

我这里将文件放到了/etc/nginx/ssl/目录中。然后打开你的站点的nginx配置文件,一般位于/etc/nginx/conf.d目录下,找到对应站点编辑。

在server{}块中加入

1
2
ssl_certificate     /etc/nginx/ssl/homestead.app.pem;
ssl_certificate_key /etc/nginx/ssl/homestead.app-key.pem;

保存,重启nginx服务。

结果

mkcert-3

如果是使用Windows或者想不通过过这种方式可以参考这篇文章,这里面有Windows的配置。同样可以达到效果其本质都是一样的。