chaihongjun.me

mkcert在windows系统上制作SSL证书

    已经写过博客《mkcert一款零配置的本地可信赖https证书制作工具》介绍过一个0配置的本地证书制作工具。目前的版本已经是到1.3了,而且同步到windows平台。现在有了Win平台的证书,就更方便的本地开发再推送到远端github,最后自动部署。有了本地证书就更不用为了本地环境线上环境的证书问题(http->https)而烦恼,不需要顾及协议问题。

    1. 本地环境曾经介绍过是cmder+gow,按照官方文档的介绍首先去下载Chocolatey(win平台的包管理器,类似npm吧),这里注意它不是一个exe可执行程序,它需要在有超级管理员权限的shell下面进行安装。官方推荐的是cmd或者powershell。因为我使用的是cmder,所以配置了一下让cmder启动的时候变成cmd as admin,以超级管理员身份启动cmd。

    2. 然后启动cmder,并且复制安装脚本:

@"%SystemRoot%\System32\WindowsPowerShell\v1.0\powershell.exe" -NoProfile -InputFormat None -ExecutionPolicy Bypass -Command "iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))" && SET "PATH=%PATH%;%ALLUSERSPROFILE%\chocolatey\bin"

    到cmder并执行。安装过程可能因为网络问题会有点慢,请稍安毋躁。当然,Chocolatey也提供了其他的安装方式,比如完全的离线安装,具体请参考官网的安装说明:https://chocolatey.org/install

    3. 待上面的Chocolatey安装完成了之后就是要正式安装mkcert了。同样是在cmder的cmd as admin,执行脚本:

choco install mkcert

    一样的,经过字符界面的滚动完成一系列动作等待完成安装。

    前面都是win平台安装mkcert流程,后面介绍的是正式的弄出证书来了。

    4. 证书都是证书签发机构签发的,所以,首先让本地的电脑变成一个证书签发机构:

$  mkcert -install
Using the local CA at "C:UserschjAppDataLocalmkcert" ✨
The local CA is now installed in the system trust store! ⚡️
Note: Firefox support is not available on your platform. ℹ️

    执行mkcert -install 之后,会在

C:Users你的用户名AppDataLocalmkcert

    生成本地的CA证书

rootCA.pem
rootCA-key.pem

    注意提示,win系统不支持firefox。

    5. CA证书完事之后,就是我们需要给自己签发一个开发用的网站域名证书了。假设,在本地想用www.example.com这个域名做开发,甚至,生产线上是www.demo.com,在本地也想用www.demo.com。于是请直接:

$ mkcert www.demo.com  
Using the local CA at "C:UserschjAppDataLocalmkcert" ✨
Created a new certificate valid for the following names ?
 - "www.demo.com"

The certificate is at "./www.demo.com.pem" and the key at "./www.demo.com-key.pem" ✅

上面的反馈信息告诉我们,使用了本地的CA创建了关于www.demo.com这个域名的证书和密钥文件。这两个文件就在执行mkcert这个命令的当前路径下面。

6. 于是将上面生成的两个文件放置到合适的目录内,方便nginx配置SSL:

ssl on;
ssl_certificate   www.demo.com.pem;
ssl_certificate_key www.demo.com-key.pem;

修改完nginx的配置之后重启nginx服务

7. 由于是本地测试开发,所以要在hosts(C:WindowsSystem32driversetc)文件里面做好解析:

# 192.168.0.2 是我的本地IP
192.168.0.2  
# 或者
127.0.0.1 www.demo.com

最后,浏览器访问一下www.demo.com,如果出现如下所示,说明一路畅通了:

mkcert在windows系统上制作SSL证书

知识共享许可协议本作品采用知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议进行许可。作者:柴宏俊»