使用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.pemrootCA.pem将被安装在~/Library Application Support/mkcert。默认会自动在PC系统和浏览器安装这个根证书。

为域名或IP创建HTTPS证书

mkcert 127.0.0.1 #创建IP证书
mkcert kanchuan.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下载到手机文件系统;打开系统设置,找到类似 安全-凭据管理 的设置项,选择从存储设备安装证书即可。

相关文章:

Let’s Encrypt acme.sh 泛域名证书
HTTPS and HTTP/2 with curl

发表留言

您的电子邮箱地址不会被公开,必填项已用*标注。发布的留言可能不会立即公开展示,请耐心等待审核通过。