使用 mkcert 轻松生成本地 HTTPS 开发证书
什么是 mkcert?
mkcert 是一个用 Go 语言编写的简单工具,用于在本地开发环境中快速生成浏览器信任的 HTTPS 证书。它由 Filippo Valsorda 开发,解决了开发者在本地开发时配置 HTTPS 的痛点。
核心特性
1. 零配置
mkcert 会自动安装本地 CA(证书颁发机构),无需手动配置浏览器信任
2. 跨平台支持
- macOS
- Linux
- Windows
- WSL(Windows Subsystem for Linux)
3. 多域名支持
支持为多个域名和 IP 地址生成证书
4. 自动信任
生成的证书会自动被系统和浏览器信任
安装方法
macOS
text
brew install mkcert brew install nss # 如果使用 Firefox
Linux
text
# Ubuntu/Debian sudo apt install libnss3-tools # 下载并安装 mkcert curl -JLO "https://dl.filippo.io/mkcert/latest?for=linux/amd64" chmod +x mkcert-linux-amd64 sudo mv mkcert-linux-amd64 /usr/local/bin/mkcert
Windows
text
choco install mkcert # 或使用 scoop scoop bucket add extras scoop install mkcert
基本使用示例
1. 安装本地 CA
text
mkcert -install
这个命令会在系统中安装一个本地证书颁发机构。
2. 为 localhost 生成证书
text
mkcert localhost
生成的文件:
- localhost.pem - 证书文件
- localhost-key.pem - 私钥文件
3. 为多个域名生成证书
text
mkcert example.com "*.example.com" example.test localhost 127.0.0.1 ::1
4. 查看已安装的 CA
text
mkcert -CAROOT
实际应用场景
场景 1:本地 Web 开发
text
# 生成开发证书
mkcert myapp.local localhost 127.0.0.1
# 使用 Node.js Express 服务器
const https = require('https');
const fs = require('fs');
const express = require('express');
const app = express();
const options = {
key: fs.readFileSync('myapp.local+4-key.pem'),
cert: fs.readFileSync('myapp.local+4.pem')
};
https.createServer(options, app).listen(443);
场景 2:Docker 容器开发
text
# Dockerfile 示例
FROM golang:1.19-alpine
# 安装 mkcert
RUN apk add --no-cache mkcert
# 生成证书
RUN mkcert -install && \
mkcert localhost
# 复制证书到应用
COPY localhost.pem /app/cert.pem
COPY localhost-key.pem /app/key.pem
场景 3:Go Web 服务器
text
package main
import (
"log"
"net/http"
)
func main() {
http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
w.Write([]byte("Hello, HTTPS!"))
})
// 使用 mkcert 生成的证书
log.Fatal(http.ListenAndServeTLS(
":8443",
"localhost.pem",
"localhost-key.pem",
nil,
))
}
高级用法
1. 自定义证书存储位置
text
mkcert -cert-file ./certs/server.crt \
-key-file ./certs/server.key \
example.com
2. 生成 PKCS#12 格式证书
text
mkcert -pkcs12 example.com
3. 为特定 IP 地址生成证书
text
mkcert 192.168.1.100
4. 卸载本地 CA
text
mkcert -uninstall
与其他工具集成
1. 与 Nginx 集成
text
# nginx.conf 配置
server {
listen 443 ssl;
server_name localhost;
ssl_certificate /path/to/localhost.pem;
ssl_certificate_key /path/to/localhost-key.pem;
location / {
proxy_pass http://localhost:3000;
}
}
2. 与 Caddy 集成
text
localhost {
tls /path/to/localhost.pem /path/to/localhost-key.pem
reverse_proxy localhost:3000
}
常见问题解决
问题 1:证书不被信任
text
# 重新安装 CA mkcert -uninstall mkcert -install
问题 2:Firefox 不信任证书
text
# 确保安装了 NSS 工具 # 在 Linux 上: sudo apt install libnss3-tools # 然后重新安装 CA mkcert -install
问题 3:证书过期
mkcert 生成的证书默认有效期为 825 天,过期后重新生成即可:
text
mkcert -install mkcert yourdomain.local
安全注意事项
- 仅用于开发环境:mkcert 生成的证书只适合本地开发使用
- 保护私钥:不要将私钥提交到版本控制系统
- 定期更新:建议定期重新生成证书
- 团队协作:团队成员需要各自安装 mkcert 和 CA
性能优势
由于 mkcert 使用 Go 编写,它具有: - 快速启动:编译为单个二进制文件,启动迅速 - 低内存占用:Go 的垃圾回收机制优化了内存使用 - 跨平台一致性:在不同操作系统上表现一致
总结
mkcert 极大地简化了本地 HTTPS 开发环境的配置过程。通过自动管理 CA 和生成受信任的证书,开发者可以专注于业务逻辑而不是 SSL/TLS 配置。无论是前端开发、API 测试还是微服务开发,mkcert 都是一个值得推荐的开发工具。
它的简单性(只需两个命令即可设置完整的 HTTPS 环境)和可靠性(生成的证书被所有主流浏览器信任)使其成为现代 Web 开发工作流中不可或缺的工具。
mkcert_20260204150900.zip
类型:压缩文件|已下载:0|下载方式:免费下载
立即下载




还没有评论,来说两句吧...