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

nginx,ssl · 浏览次数 : 10

小编点评

本文主要介绍了SSL/TLS证书文件格式及其转换方法,并探讨了SSL/TLS协议信息泄露漏洞CVE-2016-2183。文章首先概述了不同证书文件格式的特点,然后详细说明了如何将PFX格式证书转换为CRT和KEY文件,以及如何将CER证书文件转换为CRT格式。最后,文章给出了更新Nginx配置以利用最新安全补丁的方法。 1. **证书文件格式**:文章介绍了CER、CRT、PEM和PFX四种不同的证书文件格式,包括它们的特点和使用场景。CER和CRT是X.509证书文件,PEM是一种通用的证书/私钥存储格式,而PFX是一种打包证书和私钥的二进制格式。 2. **证书文件格式转换**:文章详细讲解了如何将PFX格式证书转换为CRT和KEY文件,以及如何将CER证书文件转换为CRT格式。这些转换过程涉及使用OpenSSL工具进行编码和解码操作。 3. **SSL/TLS协议信息泄露漏洞**:文章提到了CVE-2016-2183漏洞,该漏洞影响SSL/TLS协议的某些密码套件,可能导致信息泄露。为了提高安全性,文章建议更新SSL/TLS配置,禁用不安全的密码套件。 4. **Nginx配置更新**:文章提供了更新Nginx配置以利用最新安全补丁的方法。具体内容包括更新ssl_ciphers配置、配置server块以使用新的证书和私钥文件,以及修改location块以应用安全策略。 综上所述,本文全面介绍了SSL/TLS证书文件格式及其转换方法,并提供了更新Nginx配置以防范特定安全漏洞的指导。

正文

一、域名更换证书

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;

 

 

与Nginx SSL证书更新及密码套件更新相似的内容:

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

一、域名更换证书 ssl证书一般包括证书文件crt、cer、pem、pfx和私钥文件key。 CER、CRT、PEM 和 PFX 是不同的证书文件格式,它们之间存在一些区别: CER (DER 编码) CER 文件是使用 DER 编码的证书文件格式。 CER 文件通常包含单个 X.509 证书。 C

NGINX配置SSL支持

前言 在文章-腾讯云申请免费SSL证书中, 我们已经申请好了SSL证书. 那么现在, 我们就要配置全站SSL了! :muscle::muscle::muscle: 这次的工作主要是NGINX的配置, 同时会有一些我的博客本身的配置. 博客本身配置更改包括: (这篇文章就先不细说了) 网页内链接全部从

自用小技巧

实时查看日志tail -f cdx-api-1.0.log 随机查询三条数据ORDER BY rand() LIMIT 3 查询创建字段时间大于30分钟的数据TIMESTAMPDIFF( MINUTE, create_time, NOW( ) ) > 30 nginx配置ssl证书http://t.

httpsok-v1.11.0支持CDN证书自动部署

httpsok-v1.11.0支持CDN证书自动部署 介绍 httpsok 是一个便捷的 HTTPS 证书自动续签工具,专为 Nginx 、OpenResty 服务器设计。已服务众多中小企业,稳定、安全、可靠。 一行命令,一分钟轻松搞定SSL证书自动续期 v1.11.0 版本新特性 ✅修复某些情

[转帖]Nginx-https证书认证详解

https://developer.aliyun.com/article/885650?spm=a2c6h.24874632.expert-profile.306.7c46cfe9h5DxWK 简介: Nginx-https 1.https基本概述 1.1.SSL主要功能 安全套接层 认证用户和服务

Linux下Nginx安装证书

Linux下Nginx安装证书 1.服务器自带nginx修改配置 1.查看Nginx进程: ps -aux | grep nginx 2.修改对应config文件 vim /www/server/nginx/conf/nginx.conf 修改内容: server { #SSL 默认访问端口号为 4

[转帖]如何在 NGINX 中安全地分发 SSL 私钥

https://my.oschina.net/u/5246775/blog/7812621 原文作者:Owen Garrett of F5 原文链接:如何在 NGINX 中安全地分发 SSL 私钥 转载来源:NGINX 官方网站 NGINX 唯一中文官方社区 ,尽在 nginx.org.cn 本文介

raksmart服务器部署SSL报错:ERR_CERT_COMMON_NAME_INVALID

背景:raksmart服务器 下篇 部署项目 SSL报错:ERR_CERT_COMMON_NAME_INVALID 安装certbot sudo apt update sudo apt install certbot 安装python3-certbot-nginx插件 sudo apt instal

HTTPS下tomcat与nginx的前端性能比较

HTTPS下tomcat与nginx的前端性能比较 摘要 之前比较http的web服务器的性能. 发现nginx 比 tomcat 要好 50% 然后想到, https的情况下不知道两者有什么区别 所以准备再尝试一下. 换用https进行检查. Springboot的设置 server: ssl:

HTTPS基础原理和配置-3

书接上文:HTTPS 基础原理和配置 - 2,接下来介绍: 配置 NGINX 后端 HTTPS 检查配置 配置 HSTS OCSP Stapling 重要部分来了。如何使用这些选项并配置NGINX? 一、NGINX 的 HTTPS 配置 这里有一些基本的原语(或叫做指令),你可以使用:ssl_cer