开发时有时需要验证 HTTPS、混合内容或与协议有关的行为。mkcert 可以生成由本地开发 CA 签发的证书;它用于开发环境,不替代公网网站证书。
安装工具与本地 CA
按 mkcert 官方安装说明安装适合操作系统的版本,然后运行:
mkcert -install |
这一步创建本地 CA 并安装信任。工具是否能配置某个浏览器的信任,还取决于系统和浏览器环境。
为实际访问的地址生成证书
在专门存放开发证书的目录运行:
mkcert -cert-file localhost.pem -key-file localhost-key.pem localhost 127.0.0.1 ::1 |
证书包含列出的主机名与 IP。若后来改用局域网 IP 或自定义域名访问,需要让该地址也包含在证书中。
证书并不会启动 HTTPS 服务。生成文件之后,还需要让服务器使用证书和私钥。
用 Nginx 代理本地预览服务
以下配置适用于本机预览服务已运行在 127.0.0.1:5520 的情况。证书路径需改为实际路径,配置块位于 http 上下文内:
server { |
检查配置并启动或重新加载 Nginx,再访问 https://localhost/。443 端口若被其他程序占用,需要先解决冲突或选择其他端口。
跨设备访问为什么仍会警告
另一台设备默认不信任当前电脑创建的本地 CA。要测试局域网 HTTPS,需要证书包含访问地址,并在测试设备上安装信任用的根证书。
可以通过 mkcert -CAROOT 找到 CA 目录。用于信任的是 rootCA.pem;rootCA-key.pem 是根私钥,不应发送给其他设备或提交到仓库。站点私钥也应放在公开网站目录之外。
常见排错入口
- 名称不匹配:检查地址栏中的域名或 IP 是否在证书中。
- 不受信任:确认目标设备及浏览器信任了正确的本地 CA。
- 502:确认上游预览服务已启动,代理端口正确。
- 混合内容:检查 HTTPS 页面是否仍请求 HTTP 资源。
本笔记提供独立开发环境的操作示例,没有修改当前预览服务或线上证书。
参考资料
选题参考:Sakura Yumine:本地 https 环境解决方案。本文按本地 Hexo 预览场景重新编写。
技术依据:mkcert 官方说明、Nginx HTTPS 配置。
