SSL 证书链顺序:原理、问题与正确配置

深入解析 SSL 证书链的正确顺序,常见错误原因,以及使用 OpenSSL 和 Nginx 正确配置证书链的实战指南。

June 28, 2026 · 4 min · 黑豆子

Nginx TLS 1.3 最佳配置实践

TLS 1.3 是目前最安全的传输层协议版本,相比 TLS 1.2 有显著的性能和安全优势。本文介绍如何在 Nginx 中正确配置 TLS 1.3,并提供经过验证的配置示例。 TLS 1.3 的核心优势 TLS 1.3 相比 TLS 1.2 有以下关键改进: 握手简化:从 2-RTT 降至 1-RTT(0-RTT 可选),连接建立更快 移除不安全算法:仅保留 AEAD 加密套件,禁用 CBC 模式和 RC4 前向安全性:强制使用 ECDHE 密钥交换,始终支持 PFS 抗重放攻击:0-RTT 模式有重放保护机制 基础配置 以下是 Nginx TLS 1.3 的基础配置: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 server { listen 443 ssl http2; server_name example....

June 25, 2026 · 2 min · 黑豆子

Nginx TLS 证书热更新与无损 reload 配置

在生产环境中,更新 TLS 证书是一个常见但敏感的操作。如果直接重启 Nginx 服务,会导致连接中断,影响用户体验。本文介绍如何在 Nginx 中实现 TLS 证书的热更新,在不中断服务的情况下完成证书更新。 什么是证书热更新? 证书热更新(Hot Reload)是指在不停止服务的情况下,重新加载新的证书文件。Nginx 支持通过发送 reload 信号来实现配置和证书的平滑重新加载。 与完全重启(nginx -s stop 然后 nginx)相比,reload 的优势在于: 不会中断正在处理的请求 平滑过渡,新连接使用新证书,旧连接继续使用旧证书 服务可用性不受影响 Nginx reload 机制 Nginx 支持以下几种信号: nginx -s reload - 平滑重新加载配置 kill -HUP <master_pid> - 发送 HUP 信号,作用与 reload 相同 kill -USR1 <master_pid> - 重新打开日志文件 kill -USR2 <master_pid> - 优雅升级(用于升级 Nginx 二进制文件) 当 Nginx 收到 reload 信号时: 主进程(Master Process)解析新的配置文件 如果配置合法,主进程启动新的工作进程(Worker Process) 旧的工作进程优雅退出(处理完现有连接后关闭) 新的工作进程使用新的证书 证书热更新操作步骤 1. 准备新的证书文件 首先,将新的证书和私钥文件复制到指定目录:...

June 10, 2026 · 4 min · 黑豆子

Nginx SSL 配置常见错误与排查

在生产环境中配置 HTTPS 时,经常会遇到各种问题。本文总结 Nginx SSL 配置中的常见错误及其排查方法,帮助你快速定位和解决问题。 1. 证书链顺序错误 常见症状 浏览器显示证书链不完整或提示「此证书链不受信任」: 1 2 # 使用 openssl s_client 查看证书链 echo | openssl s_client -connect example.com:443 -showcerts 2>/dev/null | grep -E "subject=|issuer=" 问题原因 Nginx 配置的证书文件只包含服务器证书,没有包含中间证书(Intermediate Certificate)。 解决方法 将证书链按正确顺序拼接:服务器证书 → 中间证书 → 根证书(可选)。 1 2 3 4 # 正确的证书链顺序 cat server.crt > nginx-ssl.crt cat intermediate.crt >> nginx-ssl.crt # 根证书通常不需要添加 Nginx 配置: 1 2 3 4 5 6 7 8 9 server { listen 443 ssl; server_name example....

June 8, 2026 · 4 min · 黑豆子

Nginx 中椭圆曲线配置实战指南

在配置 HTTPS 时,ECDHE(椭圆曲线 Diffie-Hellman 密钥交换)是实现完全前向保密(PFS)的核心机制。但很多人忽视了曲线选择的重要性——不同的椭圆曲线在安全级别和性能上差异显著。本文详细介绍 Nginx 中如何选择和配置椭圆曲线。 椭圆曲线基础 椭圆曲线密码学(ECC)相比传统 RSA 具有更短的密钥和更高的安全性。以常见的曲线为例: 曲线 密钥长度 安全级别 适用场景 prime256v1 (secp256r1) 256 位 约 128 位 通用场景,推荐 X25519 256 位 约 128 位 现代推荐,更快 secp384r1 384 位 约 192 位 高安全需求 secp521r1 521 位 约 256 位 最高安全级别 注意:X25519 是蒙哥马利曲线,只用于密钥交换;secp256r1 是魏尔斯特拉斯曲线,可同时用于密钥交换和数字签名。 查看 Nginx 支持的曲线 首先确认 Nginx 编译时支持的椭圆曲线列表: 1 2 3 4 5 # 查看 Nginx 支持的曲线 nginx -V 2>&1 | grep -o "X25519\|secp256r1\|secp384r1" # 运行时查看 OpenSSL 支持的曲线 openssl ecparam -list_curves | grep -E "prime256v1|secp384r1|X25519" 输出示例:...

May 12, 2026 · 3 min · 黑豆子

Nginx HTTPS 重定向最佳实践

将 HTTP 流量重定向到 HTTPS 是网站安全的基本要求。本文聚焦 Nginx 中的最佳实践配置。 标准配置(推荐) 使用两个 server 块分离 HTTP 和 HTTPS 流量: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 # HTTP server - 重定向到 HTTPS server { listen 80; server_name example.com www.example.com; return 301 https://$host$request_uri; } # HTTPS server server { listen 443 ssl http2; server_name example.com www.example.com; ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem; # HSTS - 告诉浏览器始终使用 HTTPS add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" always; root /var/www/html; index index....

March 26, 2026 · 2 min · 黑豆子