Nginx SSL证书更新及密码套件更新

一、域名更换证书

ssl证书一般包括证书文件crt、cer、pem、pfx和私钥文件key。

CER、CRT、PEM 和 PFX 是不同的证书文件格式,它们之间存在一些区别:

CER (DER 编码)

CER 文件是使用 DER 编码的证书文件格式。

CER 文件通常包含单个 X.509 证书。

CER 文件可以包含根证书、中间证书或服务器/客户端证书。

CRT (PEM 编码)

CRT 文件是使用 PEM 编码的证书文件格式。

CRT 文件通常包含单个 X.509 证书,以 "-----BEGIN CERTIFICATE-----" 和 "-----END CERTIFICATE-----" 标签括起来。

CRT 文件可以包含根证书、中间证书或服务器/客户端证书

PEM (Base64 编码)

PEM 文件是使用 Base64 编码的证书文件格式。

PEM 文件可以包含单个或多个证书、私钥或其他 SSL/TLS 相关信息。

PEM 文件通常以 "-----BEGIN CERTIFICATE-----" 和 "-----END CERTIFICATE-----" 或 "-----BEGIN PRIVATE KEY-----" 和 "-----END PRIVATE KEY-----" 标签括起来。

PFX (PKCS#12 格式)

PFX 文件是一种二进制格式,用于将私钥和证书打包在一起。

PFX 文件可以包含服务器/客户端证书及其相应的私钥。

PFX 文件通常受密码保护,用于在不同系统或平台之间传输证书和私钥。

总的来说:

  • CER 和 CRT 都是 X.509 证书文件,区别在于编码格式(DER 和 PEM)。

  • PEM 是一种通用的证书/私钥存储格式,可以包含单个或多个证书、私钥等。

  • PFX 是一种打包证书和私钥的二进制格式,通常用于在不同系统之间传输证书。

在配置 SSL/TLS 时,需要根据具体的应用程序要求选择合适的证书文件格式。通常 PEM 格式是最常用的,因为它可以灵活地包含证书链和私钥。

如果需要查看转换后的 CRT 证书内容,可以使用以下命令:

复制代码
openssl x509 -in output_certificate.crt -text -noout

这将显示证书的详细信息,包括颁发者、主题、有效期等。

1.1 pfx格式证书转换成key和crt

  • 准备阶段
复制代码
1、nginx在编译安装时得安装ssl模块。
2、如果系统没有openssl,则安装opssl。
3、上传ssl证书到服务器/usr/local/nginx/ssl/xxx.pfx。
  • 生成证书crt可key
复制代码
openssl pkcs12 -in /usr/local/nginx/ssl/xxx.pfx -clcerts -nokeys -out /usr/local/nginx/ssl/xxx.crt
openssl pkcs12 -in /usr/local/nginx/ssl/xxx.pfx -nocerts -nodes -out /usr/local/nginx/ssl/xxx.key
  • 验证证书正确性
复制代码
openssl s_server -www -accept 443 -cert /usr/local/nginx/ssl/xxx.crt -key /usr/local/nginx/ssl/xxx.key
  • 配置nginx
复制代码
server {  
    listen 443;  
    server_name localhost;
    ssl on;  
    ssl_certificate /usr/local/nginx/ssl/xxx.crt;  
    ssl_certificate_key /usr/local/nginx/ssl/xxx.rsa;  
    ssl_session_timeout 5m;  
    ssl_protocols SSLv2 SSLv3 TLSv1;  
    ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;  
    ssl_prefer_server_ciphers on;  
    location ~ /api/(.*) {
            proxy_redirect off;
            proxy_set_header Host $host;
            proxy_set_header X-Ssl on;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_pass http://serverAPI;
        }
    }

1.2 pfx格式证书通过pem转换成key和crt

  • 准备阶段
复制代码
1、nginx在编译安装时得安装ssl模块。
2、如果系统没有openssl,则安装opssl。
3、上传ssl证书到服务器/usr/local/nginx/ssl/xxx.pfx。
  • 先将pfx转换成.pem文件
复制代码
# openssl pkcs12 -in 你的文件名.pfx -nodes -out 转换后的文件名.pem
openssl pkcs12 -in CertificateAndKey.pfx -nodes -out test.pem
  • 将pem文件导出为key
复制代码
openssl rsa -in test.pem -out test.key
  • 将pem文件导出为crt
复制代码
openssl x509 -in test.pem -out test.crt
  • 验证证书正确性
复制代码
openssl s_server -www -accept 443 -cert /usr/local/nginx/ssl/xxx.crt -key /usr/local/nginx/ssl/xxx.key
  • 配置nginx
复制代码
server {  
    listen 443;  
    server_name localhost;
    ssl on;  
    ssl_certificate /usr/local/nginx/ssl/xxx.crt;  
    ssl_certificate_key /usr/local/nginx/ssl/xxx.key;  
    ssl_session_timeout 5m;  
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;  
    ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;  
    ssl_prefer_server_ciphers on;  
    location ~ /api/(.*) {
            proxy_redirect off;
            proxy_set_header Host $host;
            proxy_set_header X-Ssl on;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_pass http://serverAPI;
        }
    }

1.3 将cer证书文件转换为crt格式

**  1.3.1 转换 .cer 文件为 .crt 文件**

  • 可以使用 OpenSSL 工具将.cer文件转换为.crt文件

复制代码
# 如果cer格式是PEM编码的直接使用下面
openssl x509 -in input_certificate.cer -out output_certificate.crt -outform PEM
# 如果cer格式是DER编码格式直接使用下面
openssl x509 -in input_certificate.cer -out output_certificate.crt -inform DER -outform PEM
​
其中:
input_certificate.cer 是输入的 CER 格式证书文件。
output_certificate.crt 是输出的 CRT 格式证书文件。
-inform DER 指定输入证书的格式为 DER。
-outform PEM 指定输出证书的格式为 PEM。

**  1.3.2 更新 Nginx 配置**

    • 在 Nginx 的server块中,更新ssl_certificate和ssl_certificate_key指令:

      复制代码
      ssl_certificate /path/to/your_certificate.crt;
      ssl_certificate_key /path/to/your_private_key.key;
    • 如果你使用了.pem格式的私钥文件,则将ssl_certificate_key指令更新为:

      复制代码
      ssl_certificate_key /path/to/your_private_key.pem;

二、SSL/TLS协议信息泄露漏洞(CVE-2016-2183)

SSL/TLS 密码套件(ssl_ciphers)是指在 SSL/TLS 握手过程中,客户端和服务器协商使用的加密和消息认证的算法集合。

复制代码
# 更新ssl_ciphers配置
ssl_ciphers HIGH:!aNULL:!MD5:!DES:!3DES;
相关推荐
Evan芙19 小时前
搭建nexus服务,实现本地仓库、代理仓库
java·nginx·tomcat
秋田君20 小时前
前端工程化部署入门:Windows + Nginx 实现多项目独立托管与跨域解决方案
前端·windows·nginx
Evan芙1 天前
nginx核心配置总结,并实现nginx多虚拟主机
运维·数据库·nginx
邂逅星河浪漫1 天前
【域名解析+反向代理】配置与实现(步骤)-SwitchHosts-Nginx
linux·nginx·反向代理·域名解析·switchhosts
sg_knight1 天前
Nuxt 4 生产环境部署指南 (Node.js + Nginx)
运维·nginx·node.js·nuxt·ssr
中年程序员一枚1 天前
Nginx配置运行python的uvicorn项目
chrome·python·nginx
苹果醋31 天前
Java设计模式实战:从面向对象原则到架构设计的最佳实践
java·运维·spring boot·mysql·nginx
元气满满-樱1 天前
Nginx负载均衡
运维·nginx·负载均衡
原神启动11 天前
Nginx云计算大数据——安装AND版本升级(普通升级+平滑升级+失败回滚)
大数据·nginx·云计算
那你能帮帮我吗2 天前
nginx路径相关配置汇总
nginx