跳到主要内容
方的代码随记
返回

自签 SSL 证书(openssl / minica / mkcert)

更新于:

准备工作

在应用文件夹里创建一个目录存放证书:

mkdir cert
cd cert

生成 SSL 证书需要三步:

  1. 生成一个私钥;
  2. 用私钥创建 CSR(证书签署请求);
  3. 从 CSR 生成 SSL 证书。

一、生成私钥

需要安装 OpenSSL:

openssl genrsa -out key.pem

执行后会在 cert 目录下生成私钥文件 key.pem。

二、创建 CSR(证书签名请求)

由于我们是自己的证书机构,需要用 CSR 来生成证书:

openssl req -new -key key.pem -out csr.pem

命令会询问几个问题(国家、组织、域名等),都可以回车跳过,也可以按需要提供。完成后会在 cert 目录下生成 csr.pem。

三、生成 SSL 证书

用 key.pem 和 csr.pem 生成证书:

openssl x509 -req -days 365 -in csr.pem -signkey key.pem -out cert.pem

使用 x509 是因为它是定义公钥证书格式的标准。这里把有效期设为 365 天。

执行后证书保存在 cert/cert.pem,csr.pem 可删可留。

四、自建根证书

# Mac OS
brew install openssl
# Ubuntu
sudo apt install -y openssl

# 创建根密钥
openssl genrsa -out ca-key.pem 4096

# 创建根证书并签名
openssl req -new -x509 -days 3600 -key ca-key.pem -out ca-cert.pem

# 验证根证书
openssl x509 -text -in ca-cert.pem -noout

五、用 minica 签发证书

# Mac OS
brew install minica
# 其他系统
go install github.com/jsha/minica@latest

# 给域名签发
minica -ca-cert ca-cert.pem -ca-key ca-key.pem --domains "your-domain.com,*.example.com"

# 给 IP 签发
minica -ca-cert ca-cert.pem -ca-key ca-key.pem --ip-addresses "127.0.0.1"

六、用 mkcert 签发本地可信证书

# Mac OS
brew install mkcert

mkcert -key-file key.pem -cert-file cert.pem example.com *.example.com

mkcert 会自动把根证书安装到系统信任库,本地开发时浏览器不会报证书警告,比手工自签更省事。

站点级证书(含 CA 私钥、扩展配置、SAN)的完整流程见 准备站点证书。


分享这篇文章:

上一篇
准备站点 SSL 证书
下一篇
SSL/TLS 证书全景指南