使用mkcert生成自签名证书
原创 2023-05-11
本地HTTP环境无法测试一些浏览器的特性,本文介绍一种便捷的方案在本地部署自签名HTTPS环境。
本博客采用的是Let’s Encrypt
+acme.sh
方案部署线上HTTPS证书,已上线稳定运行很长时间。最近在做浏览器指纹相关的调研时发现,本地的HTTP环境无法直接调用一些API,就是在上一篇文章中提到的Secure Context
安全上下文限制 ,本文将介绍在本地Web环境部署自签名HTTPS证书的便捷方案。
mkcert是一个制作本地自签名HTTPS证书的简单工具,它的使用非常简单,甚至不需要额外的配置信息。
安装mkcert
以macOS系统为例,可以通过Homebrew直接安装mkcert工具:
brew install mkcert
为本地环境新建并安装根证书
mkcert -install
根证书rootCA-key.pem
、rootCA.pem
将被安装在~/Library Application Support/mkcert
。默认会自动在PC系统和浏览器安装这个根证书。
为域名或IP创建HTTPS证书
mkcert 127.0.0.1 #创建IP证书
mkcert easeapi.com #或创建域名证书
执行完成后会在在当前目录生成{ip或域名}-key.pem
、{ip或域名}.pem
文件。
配置Web服务器
以Nginx为例,在Nginx配置文件的http或server节点增加配置项:
listen 443 ssl
ssl_certificate {ip或域名}.pem;
ssl_certificate_key {ip或域名}-key.pem;
在移动设备上安装根证书
以上操作完成后,默认会在mkcert -install
完成时将根证书安装在PC上,PC浏览器可以直接通过HTTPS协议访问本地Web。而对于移动设备就需要先安装根证书才能正常访问。
在iOS上使用
在Safari
浏览器上通过HTTP协议访问上述过程生成的rootCA.pem
文件。按照系统提示安装根证书。
在Android上使用
一些Android机型可以参考iOS的方法安装,但另一些Android机型可能不识别pem
格式的文件。此时先将`rootCA.pem
下载到手机文件系统;打开系统设置,找到类似 安全-凭据管理 的设置项,选择从存储设备安装证书即可。