• 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 证书内容,可以使用以下命令:

    1
    openssl x509 -in output_certificate.crt -text -noout

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

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

    • 准备阶段

    1
    2
    3
    1、nginx在编译安装时得安装ssl模块。
    2、如果系统没有openssl,则安装opssl。
    3、上传ssl证书到服务器/usr/local/nginx/ssl/xxx.pfx。
    • 生成证书crt可key

    1
    2
    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
    • 验证证书正确性

    1
    openssl s_server -www -accept 443 -cert /usr/local/nginx/ssl/xxx.crt -key /usr/local/nginx/ssl/xxx.key
    • 配置nginx

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    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
    2
    3
    1、nginx在编译安装时得安装ssl模块。
    2、如果系统没有openssl,则安装opssl。
    3、上传ssl证书到服务器/usr/local/nginx/ssl/xxx.pfx。
    • 先将pfx转换成.pem文件

    1
    2
    # openssl pkcs12 -in 你的文件名.pfx -nodes -out 转换后的文件名.pem
    openssl pkcs12 -in CertificateAndKey.pfx -nodes -out test.pem
    • 将pem文件导出为key

    1
    openssl rsa -in test.pem -out test.key
    • 将pem文件导出为crt

    1
    openssl x509 -in test.pem -out test.crt
    • 验证证书正确性

    1
    openssl s_server -www -accept 443 -cert /usr/local/nginx/ssl/xxx.crt -key /usr/local/nginx/ssl/xxx.key
    • 配置nginx

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    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文件

      • 1
        2
        3
        4
        5
        6
        7
        8
        9
        10
        # 如果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指令:

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

        1
        ssl_certificate_key /path/to/your_private_key.pem;

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

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

    1
    2
    # 更新ssl_ciphers配置
    ssl_ciphers HIGH:!aNULL:!MD5:!DES:!3DES;

     

     
     
  • 相关阅读:
    Sedex验厂有证书吗?
    GPU提升多分类问题
    软件设计与体系结构——创建型模式
    一文解码语言模型:语言模型的原理、实战与评估
    PSINS工具箱学习(一)下载安装初始化、SINS-GPS组合导航仿真、习惯约定与常用变量符号、数据导入转换、绘图显示
    多线程学习(C/C++)
    查找-二叉排序树
    matlab新建数据字典及如何导入
    空间参考简介
    激光雷达技术详解:MATLAB代码实践与遥感测距原理通俗解析
  • 原文地址:https://www.cnblogs.com/ya-qiang/p/18265136