本文作者:icy

go-使用 mkcert 轻松生成本地 HTTPS 开发证书

icy 今天 11 抢沙发
go-使用 mkcert 轻松生成本地 HTTPS 开发证书摘要: 使用 mkcert 轻松生成本地 HTTPS 开发证书 什么是 mkcert? mkcert 是一个用 Go 语言编写的简单工具,用于在本地开发环境中快速生成浏览器信任的 HTTP...

go-使用 mkcert 轻松生成本地 HTTPS 开发证书

使用 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

安全注意事项

  1. 仅用于开发环境:mkcert 生成的证书只适合本地开发使用
  2. 保护私钥:不要将私钥提交到版本控制系统
  3. 定期更新:建议定期重新生成证书
  4. 团队协作:团队成员需要各自安装 mkcert 和 CA

性能优势

由于 mkcert 使用 Go 编写,它具有: - 快速启动:编译为单个二进制文件,启动迅速 - 低内存占用:Go 的垃圾回收机制优化了内存使用 - 跨平台一致性:在不同操作系统上表现一致

总结

mkcert 极大地简化了本地 HTTPS 开发环境的配置过程。通过自动管理 CA 和生成受信任的证书,开发者可以专注于业务逻辑而不是 SSL/TLS 配置。无论是前端开发、API 测试还是微服务开发,mkcert 都是一个值得推荐的开发工具。

它的简单性(只需两个命令即可设置完整的 HTTPS 环境)和可靠性(生成的证书被所有主流浏览器信任)使其成为现代 Web 开发工作流中不可或缺的工具。

mkcert_20260204150900.zip
类型:压缩文件|已下载:0|下载方式:免费下载
立即下载
文章版权及转载声明

作者:icy本文地址:https://www.zelig.cn/2026/03/334.html发布于 今天
文章转载或复制请以超链接形式并注明出处软角落-SoftNook

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏

阅读
分享

发表评论

快捷回复:

验证码

评论列表 (暂无评论,11人围观)参与讨论

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