准备工作
在应用文件夹里创建一个目录存放证书:
mkdir cert
cd cert
生成 SSL 证书需要三步:
- 生成一个私钥;
- 用私钥创建 CSR(证书签署请求);
- 从 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)的完整流程见 准备站点证书。