Rootop 服务器运维与web架构

自签名证书生成步骤

流程分为3步:生成私钥 – 生成CSR – 自己颁发证书

# 1、生成RSA私钥
[root@docker-server cert]# openssl genrsa -out server.key 2048
openssl          OpenSSL工具,用于处理加密和证书管理。
genrsa           生成 RSA 私钥(PKCS#1 格式)。
-out server.key  指定输出文件 server.key(存储私钥)。
2048             指定密钥长度为 2048 位(常见长度包括 2048、3072、4096 位)。

建议2048以上,1024在nginx中重启时会提示错误:长度过小。

#  server.key 内容
-----BEGIN RSA PRIVATE KEY-----
···
···
···
-----END RSA PRIVATE KEY-----

私钥的编码格式通常分为 PKCS#1 和 PKCS#8。
PKCS#1 是 RSA 密钥结构标准,PKCS#1私钥通常使用 PEM 格式存储。
PEM(Privacy-Enhanced Mail)文件是 Base64 编码的文本格式。

PS:使用 genpkey 命令生成 PKCS#8 格式的 RSA 私钥
[root@docker-server cert]# openssl genpkey -algorithm RSA -out server.key -pkeyopt rsa_keygen_bits:2048
# server.key 内容
-----BEGIN PRIVATE KEY-----
···
···
···
-----END PRIVATE KEY-----

PKCS#8 和 PKCS#1 私钥格式可以互相转换。

# 2、生成csr(Certificate Signing Request证书签名请求)
[root@docker-server cert]# openssl req -new -key server.key -out server.csr
生成证书签名请求(CSR),CSR 是向 证书颁发机构(CA) 申请 SSL/TLS 证书时提交的文件。
openssl req      调用 OpenSSL 的 req(Request)模块,用于处理证书请求 csr。
-new             生成一个新的 CSR(不是已有证书的更新)。
-key server.key  使用 server.key 私钥生成 CSR,公钥通过私钥计算得出。
-out server.csr  生成的证书签名请求(CSR)保存到 server.csr 文件。

使用私钥计算出公钥,生成的CSR中会包含主体信息、公钥,用于将来签名。

填写证书信息,需输入:
国家(C):如 CN
省份(ST):如 Shandong
城市(L):如 Jinan
组织(O):如 YourCompanyName
部门(OU):如 IT
通用名称(CN):如 dev.domain.com
邮箱(emailAddress):如 dev@mail.com

将生成的server.csr提交给CA,CA通过它签发证书。自己作为ca角色的话,就自己签发。


# 3、颁发证书
[root@docker-server cert]# openssl x509 -req -in server.csr -signkey server.key -out server.crt -days 365
参数	            说明
-req	            表示使用的是 CSR 输入
-in server.csr	    输入的 CSR 文件
-signkey server.key	使用哪个私钥签发(此处的签名者和持有者相同)
-out server.crt	    输出生成的证书
-days 365	        有效期
这样生成的 server.crt 就是自签名证书,它的签名者就是它自己。
客户端(如浏览器)默认不信任它,除非你导入它为“受信任根证书”。

总结最后得到3个文件:
server.key 私钥
server.csr 证书签名请求 csr
server.crt 颁发的证书


# 其它
# 一条命令直接生成私钥和公钥
[root@docker-server a]# openssl req -x509 -newkey rsa:2048 -keyout key.pem -out cert.pem -days 365 -nodes -subj '/C=CN/ST=SHANDONG/L=JINAN/O=GAO DE TECH/OU=IT/CN=dev.xxx.com'
-nodes 是no des加密

# 提取查看公钥内容
[root@docker-server ca]# openssl x509 -in server.crt -noout -pubkey

# 查看证书信息
[root@docker-server ca]# openssl x509 -in server.crt -noout -text

原创文章,转载请注明。本文链接地址: https://www.rootop.org/pages/5554.html

作者:Venus

服务器运维与性能优化

评论已关闭。