【使用 OpenSSL生成自签名服务器证书】扫盲贴
目录
一、生成自签名根证书和私钥
1、生成根证书私钥
2、生成根证书
(1)创建openssl.cnf文件
(2)生成根证书rootCA.crt
3、为什么根证书不要CSR(证书签名请求)文件
(1)什么是根证书?
(2)自签名证书和CSR的区别
二、生成服务器端证书
1、生成服务端私钥
2、生成CSR
(1)创建OpenSSL配置文件
(2)生成CSR
(3)使用根证书签署服务端证书
3、类比解释:信任关系
4、更新服务端证书
5、关键点
三、使用 OpenSSL生成自签名服务器证书(无单独根证书)
1、生成私钥
2、生成证书签名请求(CSR)
3、生成自签名服务器证书
四、使用其他工具生成自签名服务器证书(无单独根证书)
1、安装 mkcert 工具
2、生成证书和私钥
五、自行生成的ssl证书时问题解决
1、遇到的问题
2、原有配置
3、解决步骤
(1)检查并修改 Nginx 的 SSL 协议版本支持
(2)参数说明
4、检查并修改 Nginx 的密码套件支持
(1)在 Nginx 配置文件中找到或添加 ssl_ciphers 和 ssl_prefer_server_ciphers 配置项
(2)配置参数说明
5、测试和优化配置
6、修改后显示效果
六、证书和 SSL 握手检查
1、证书有效性检查
2、SSL 握手检查
七、总结
1、自签名的服务器证书注意点
2、根证书和服务端证书之间的信任关系
一、生成自签名根证书和私钥
1、生成根证书私钥
首先,生成一个自签名的根证书和私钥。这个根证书将作为信任锚(Trust Anchor),客户端会信任由这个根证书签署的所有证书。
# openssl genrsa - out rootCA . key 2048参数说明:
openssl: OpenSSL工具的主命令。
genrsa: 生成RSA密钥对的命令。
-out rootCA.key: 指定输出文件名为rootCA.key,这是生成的私钥文件。
2048: 指定密钥的长度为2048位。
2、生成根证书
(1)创建openssl.cnf文件
创建openssl.cnf 文件,文件内容如下:
# tou c h openssl . cnf# vim openssl.cnf
---------------------------------
[ req ]
default_bits = 2048
default_keyfile = rootCA.key
distinguished_name = req_distinguished_name
prompt = no
[ req_distinguished_name ]
C = CN
ST = Beijing
L = Beijing
O = CodeProject
OU = Development
CN = CodeProject Root CA
(2)生成根证书rootCA.crt
# openssl req -x509 -new -nodes -key rootCA.key -sha256 -days 36500 -out rootCA.crt -config openssl.cnf
参数说明:
-x509:表示生成自签名证书(而不是证书签名请求)。
-new:表示生成新证书。
-nodes:表示不加密私钥文件(即不需要密码保护)。
-key rootCA.key:指定私钥文件为rootCA.key。
-sha256:使用SHA-256哈希算法。
-days 36500:指定证书的有效期为36500天(约100年)。
-out rootCA.crt:指定输出的证书文件名为rootCA.crt。
-config openssl.cnf:指定使用openssl.cnf配置文件中的信息。
3、为什么根证书不要CSR(证书签名请求)文件
在生成根证书(Root CA 证书)时,不需要 CSR(证书签名请求)文件,这是因为根证书是自签名的。
具体来说,根证书的生成过程和普通证书不同,以下是详细解释:
(1)什么是根证书?
1、根证书是公钥基础设施(PKI)中的顶级证书,它用来签署其他证书,包括中间证书和最终用户证书。
2、根证书通常由证书颁发机构(CA)生成和自签名。
(2)自签名证书和CSR的区别
自签名证书是由自身私钥签名的证书。
因为它是信任链的起点,所以不需要外部的证书颁发机构(CA)来签署。
这就是为什么在生成根证书时不需要 CSR 文件的原因。