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. 第1步
openssl genrsa -out server.key 2048
  1. 第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

如下图
image

  1. 第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 信任根(必须是“本地计算机”)

  1. 按下快捷键 Win + R
  2. 输入 certlm.msc > 回车(打开“本地计算机证书管理”)
  3. 找到:受信任的根证书颁发机构 > 证书
  4. 右键点击“证书” > 所有任务 > 导入
  5. 按提示选择:文件:rootCA.crt
  6. 存储位置:受信任的根证书颁发机构
  7. 点击完成后,应该会提示“导入成功”。

6. 解释为啥要用 CA 证书

HTTPS 证书体系是 “信任链”模型:
浏览器只信任那些由可信根(CA)签发的证书。

如果你导入的是“服务器证书”,浏览器会说:“此证书不是由受信任的颁发机构签发”。因为它只是“被签发的对象”,而不是“签发者”。


本文章的原文地址
GitHub主页

posted @ 2025-10-15 09:51  星尘的博客  阅读(212)  评论(0)    收藏  举报