OpenSSL生成自签名证书(HTTPS)
OpenSSL生成自签名证书(HTTPS)
需要安装 openssl
1. 生成根 CA(只需要执行一次)
openssl genrsa -out rootCA.key 2048
openssl req -x509 -new -nodes -key rootCA.key -sha256 -days 3650 -out rootCA.pem -subj "/CN=My Local Root CA"
2. 使用根 CA 签发服务端证书
- 第1步
openssl genrsa -out server.key 2048
- 第2步
# windows下可能不一定成功,那就手动创建 server.ext 文件,并输入 EOF 中间的部分
cat > server.ext <<EOF
authorityKeyIdentifier=keyid,issuer
basicConstraints=CA:FALSE
keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
subjectAltName = @alt_names
[alt_names]
DNS.1 = localhost
IP.1 = 127.0.0.1
EOF
如下图

- 第3步
openssl req -new -key server.key -out server.csr -subj "/CN=localhost"
openssl x509 -req -in server.csr -CA rootCA.pem -CAkey rootCA.key -CAcreateserial -out server.crt -days 825 -sha256 -extfile server.ext
3. windows 导入
Windows 需要把 pem 转换成 crt格式
openssl x509 -outform der -in rootCA.pem -out rootCA.crt
4. 检查
执行完上述命令,你将得到以下文件
rootCA.key # CA 私钥
rootCA.pem # CA 证书,需要客户端浏览器导入,Windows导入rootCA.crt
rootCA.srl # openssl 自动生成
server.key # 服务器证书私钥
server.csr
server.crt # 服务器证书
server.ext
5. windows 导入证书的方式,可以我这样, 也可以直接双击(双击步骤略有不同)
证书导入到 Windows 信任根(必须是“本地计算机”)
- 按下快捷键
Win + R - 输入
certlm.msc> 回车(打开“本地计算机证书管理”) - 找到:受信任的根证书颁发机构 > 证书
- 右键点击“证书” > 所有任务 > 导入
- 按提示选择:文件:
rootCA.crt - 存储位置:受信任的根证书颁发机构
- 点击完成后,应该会提示“导入成功”。
6. 解释为啥要用 CA 证书
HTTPS 证书体系是 “信任链”模型:
浏览器只信任那些由可信根(CA)签发的证书。
如果你导入的是“服务器证书”,浏览器会说:“此证书不是由受信任的颁发机构签发”。因为它只是“被签发的对象”,而不是“签发者”。
本文来自博客园作者:星尘的博客,转载请注明出处:https://www.cnblogs.com/yqbaowo/p/19142620

浙公网安备 33010602011771号