Minica 是一个由 Go 语言编写的超轻量级私有 CA 工具,主打“零配置、单二进制”,非常适合在本地开发、内网测试环境或微服务间快速生成 TLS 证书。它不提供 OCSP 或 CRL 吊销功能,设计理念是 CA 操作者同时管理所有使用该证书的主机。

安装方式

  • Go 命令安装(推荐,需 Go 1.15+): go install github.com/jsha/minica@latest
  • macOS Homebrewbrew install minica
  • 源码编译git clone https://github.com/jsha/minica.git cd minica && go build

核心运行机制

  • 自动生成根 CA:首次在目录下运行 minica命令时,会自动在当前目录生成 minica-key.pem(根私钥)和 minica.pem(根证书),后续签发会自动复用该根 CA,除非你手动删掉这两个文件。
  • 按域名建目录:每签发一个(或一组)证书,会在当前目录创建一个以第一个域名/IP 命名的文件夹,里面存放该服务的 key.pem(私钥)和 cert.pem(证书)。
  • 有效期规则:根证书有效期 100 年,终端(叶)证书默认有效期 2 年零 30 天
  • 安全策略:不会覆盖已存在的密钥/证书文件,且生成的密钥文件权限默认为 0600(仅所有者读写)。

常用命令实战

minica --domains myapp.local
./minica.pem         # 根证书(需导入系统/浏览器信任区)
./minica-key.pem     # 根私钥
./myapp.local/       # 以域名命名的目录
    ├── cert.pem     # 服务端证书
    └── key.pem      # 服务端私钥
minica --domains "*.example.com,api.example.com"
minica --ip-addresses "192.168.1.100,10.0.0.5"
指定加密算法:默认使用 ECDSA P-384,也可强制指定 RSA:
minica --domains test.local --ca-alg rsa

配置 Nginx HTTPS

生成证书后,在 Nginx 配置中指向对应文件即可:

server {
    listen 443 ssl;
    server_name myapp.local;

    ssl_certificate     /path/to/myapp.local/cert.pem;
    ssl_certificate_key /path/to/myapp.local/key.pem;
    
    # 信任链:需要把 minica.pem 内容追加到 cert.pem 后面,或直接配置信任
}

标签: none

评论已关闭