本文主要讲的是linux系统生成ssl证书后nginx配置,话不多说直接开整:
一、证书生成
1. 生成证书
进入Linux系统中,执行如下命令。期间会提示输入密码,输入两次相同密码即可。
openssl genrsa -des3 -out server.key 2048
使用AES-256加密算法生成2048位RSA私钥,防止私钥泄露导致信任链被破坏;
安全要点:私钥必须设置强密码(建议16位以上混合字符),并存储在加密存储设备中
说明:
openssl: OpenSSL 工具的命令行执行器
genrsa: 生成RSA密钥的命令
-des3: 使用Triple-DES算法对生成的私钥进行加密,这会在生成私钥时要求你设置一个密码,以便在每次使用私钥时都需要提供密码-out selfca.key: 指定生成的私钥的输出文件名为 selfca.key,私钥文件将被保存在当前工作目录中
2048: 指定生成的RSA私钥的位数为2048位,这是一种常见的安全密钥长度
2. 去除密码校验
如果想去除此输密码的步骤,可以执行如下命令,根据使用需求选择。
openssl rsa -in server.key -out server.key
3.创建证书申请文件
根据要求填写证书申请相关信息。
openssl req -new -key server.key -out server.csr
说明:
enssl req: 这是 OpenSSL 工具中用于处理证书签署请求(CSR)的命令
-new: 表示创建新的 CSR
-x509: 表示生成自签名的 X.509 证书,而不是生成 CSR
-days 3650: 设置证书的有效期为 3650 天(10 年)
-key selfca.key: 指定用于生成证书的私钥文件为 selfca.key
-subj "/C=CN/ST=GD/L=ZS/O=SJJ/OU=SJJ/CN=CA": 设置证书主题(Subject)的信息。这里使用了简化的 Distinguished Name (DN),包括了国家(C=CN)、省/州(ST=GD)、城市(L=ZS)、组织(O=SJJ)、组织单位(OU=SJJ)、通用名称(CN=CA)等信息
-out selfca.crt: 指定生成的证书文件的输出路径和文件名,这里为 selfca.crt
4.生成自签证书,即根证书CA
openssl req -new -x509 -key server.key -out ca.crt -days 3650
5.创建服务器证书
openssl x509 -req -days 3650 -in server.csr -CA ca.crt -CAkey server.key -CAcreateserial -out server.crt
openssl x509: 这是 OpenSSL 工具中用于处理 X.509 证书的命令
-req: 表示输入的文件是证书签署请求(CSR)
-extfile <(printf "subjectAltName=IP:xx.xx.xx.xx"): 使用扩展文件,该文件包含了额外的证书扩展信息。在这里,subjectAltName 扩展用于指定主体的备用名称(Subject Alternative Name),这里指定了 IP 地址 xx.xx.xx.xx。你也可以在方括号中添加其他主机名或 IP 地址,用逗号分隔
-days 3650: 设置生成的证书的有效期为 3650 天(10 年)
-in server.csr: 指定输入的证书签署请求文件,这里为 server.csr
-CA selfca.crt: 指定用于签署证书的 CA 证书文件,这里为 selfca.crt
-CAkey selfca.key: 指定用于签署证书的 CA 私钥文件,这里为 selfca.key
-CAcreateserial: 创建一个新的序列号文件,该文件用于跟踪 CA 签署的证书的唯一性
-out server.crt: 指定生成的证书文件的输出路径和文件名,这里为 server.crt
证书生成完成
最终列表:
selfca.key:CA私钥,用于后续签名SSL证书
selfca.crt:CA根证书,用于后续签名SSL证书,需要加入到操作系统或浏览器的信任列表中
server.key:服务器私钥,需要配置到https服务,比如Apache和Nginx配置文件中
server.csr:证书签署请求文件,后续没用了
server.crt:自签名SSL证书,需要配置到https服务,比如Apache和Nginx配置文件中,这就是代表服务器的身份证件
https://blog.youkuaiyun.com/friend_X/article/details/146349295
二、配置Nginx的https
1.配置
- 把刚才生成的文件 server.key,server.crt 拷贝至nginx所在服务器的目录下。
- 编辑nginx文件 nginx.conf,指定文件所在的路径。
server {
listen 443 ssl;
server_name enterprise.com;
ssl_certificate /data/ssl/server.crt;
ssl_certificate_key /data/ssl/server.key;
ssl_session_timeout 5000m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
}
这两个目录可以随便放,只要能访问到即可 /data/ssl/server.crt、/data/ssl/server.key;
2.重启nginx看效果
nginx -s reload
记得重启nginx!
由于是临时的,所以会出现这个提示,不影响使用,如果要安全的可以自己去申请
https://blog.youkuaiyun.com/w172717/article/details/135973073
扩展:
如果生成的是这种格式文件,不打紧,直接替换即可,其他不变:
ssl_certificate /etc/ssl/xxx.pem;
ssl_certificate_key /etc/ssl/xxx.key;
https://blog.youkuaiyun.com/friend_X/article/details/146349295