已经写过博客《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,如果出现如下所示,说明一路畅通了: