tonglin0325的个人主页

使用openssl生成自签名ssl证书

使用自签名的证书的网站默认不会被浏览器信任,使用浏览器带打开可能会弹出如下界面,需要在浏览器中点击继续前往或者添加例外

添加的例外可以在Firefox浏览器中如下界面中设置——隐私与安全——证书中进行查看

生成CA私钥#

ca.key是证书颁发机构(Certificate Authority,CA)的私钥文件,CA私钥用于签署证书并保护证书颁发机构的安全性。

1
2
openssl genrsa -out ca.key 2048

生成CA证书#

ca.crt是证书颁发机构(Certificate Authority,CA)的证书文件,CA证书用于签名其他证书,验证证书的合法性。

1
2
3
# 20 年有效期
openssl req -x509 -new -nodes -key ca.key -sha256 -days 7300 -out ca.crt

生成服务器ssl证书私钥#

server.key是服务器私钥,用于生成服务器证书、加密通信和验证身份。

1
2
openssl genrsa -out server.key 2048

生成服务器ssl证书CSR#

server.csr 是指服务器证书签名请求(Certificate Signing Request,CSR)文件。

在创建 SSL/TLS 证书时,CSR 是一个包含有组织或个人身份信息的加密文本块,用于向证书颁发机构(CA)请求签署数字证书。

1
2
openssl req -new -sha256 -key server.key -out server.csr

创建域名附加配置文件#

cert.ext是域名附加配置文件

1
2
3
extendedKeyUsage=serverAuth
subjectAltName=DNS:xx.com,DNS:*.xx.com

使用CA签署服务器ssl证书#

server.crt:这是服务器的公钥证书文件。它包含服务器的公钥以及与该公钥相关联的其他信息,比如服务器的域名等

1
2
3
4
5
# ssl证书有效期10年
openssl x509 -req -in server.csr -sha256 -days 3650 \
-CAcreateserial -CA ca.crt -CAkey ca.key \
-CAserial serial -extfile cert.ext -out server.crt

查看证书的签署信息#

1
2
openssl x509 -in server.crt -noout -text

使用CA验证证书是否通过#

1
2
3
openssl verify -CAfile ca.crt server.crt
server.crt: OK

参考:使用openssl制作自定义CA、自签名ssl证书

https://github.com/UnblockNeteaseMusic/server/blob/enhanced/generate-cert.sh