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

# 运维 # Web

相关文章:

网站流量都去哪了
SSH修改默认22端口
阿里云云盘扩容笔记
WordPress安装及基本配置
近期服务器的一些改进