news 2026/7/11 6:18:39

Nginx 1.24 配置 HTTPS 实战:3 种 SSL 证书申请与自动化续期方案

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Nginx 1.24 配置 HTTPS 实战:3 种 SSL 证书申请与自动化续期方案

Nginx 1.24 配置 HTTPS 实战:3 种 SSL 证书申请与自动化续期方案

在当今互联网环境中,HTTPS 已成为网站安全的基础配置。作为运维工程师或全栈开发者,掌握 SSL/TLS 证书的申请、配置和管理技能至关重要。本文将深入探讨三种主流 SSL 证书方案(Let's Encrypt 免费证书、商业 CA 证书和自签名证书)的适用场景与配置细节,并提供可直接复用的 Nginx 配置模板和自动化续期方案。

1. HTTPS 基础与证书类型选择

HTTPS 通过 SSL/TLS 协议为 HTTP 通信提供加密和身份验证,其核心组件是数字证书。在选择证书方案前,我们需要了解三种主要证书类型的特点:

证书类型验证级别有效期浏览器信任适用场景典型成本
自签名证书自定义需手动信任内部测试、开发环境免费
Let's Encrypt域名验证90天全信任个人博客、小型网站免费
商业 CA 证书组织验证1-2年全信任企业官网、电商平台$50-$1000+/年

自签名证书适合内部开发和测试环境,但需要手动导入根证书到客户端信任库。其生成命令如下:

# 生成 RSA 私钥 openssl genrsa -out self-signed.key 2048 # 创建 CSR (证书签名请求) openssl req -new -key self-signed.key -out self-signed.csr # 生成自签名证书 openssl x509 -req -days 365 -in self-signed.csr -signkey self-signed.key -out self-signed.crt

Let's Encrypt是目前最流行的免费证书方案,通过 ACME 协议自动化签发流程。其优势在于:

  • 被所有主流浏览器信任
  • 支持通配符证书(需 DNS 验证)
  • 自动化签发和续期

商业 CA 证书(如 DigiCert、GeoTrust)提供更长的有效期和保险保障,适合对 SLA 要求高的商业场景。

2. Nginx 1.24 基础 HTTPS 配置

无论使用哪种证书,Nginx 的基础 HTTPS 配置结构相似。以下是通用配置模板:

server { listen 443 ssl http2; server_name example.com; # 证书路径配置 ssl_certificate /path/to/certificate.crt; ssl_certificate_key /path/to/private.key; # SSL 协议配置 ssl_protocols TLSv1.2 TLSv1.3; ssl_prefer_server_ciphers on; # 加密套件配置 (TLS 1.2) ssl_ciphers 'ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256...'; # 会话缓存优化 ssl_session_cache shared:SSL:10m; ssl_session_timeout 1d; # OCSP 装订提升性能 ssl_stapling on; ssl_stapling_verify on; # HSTS 增强安全 add_header Strict-Transport-Security "max-age=63072000; includeSubDomains; preload"; # 其他站点配置... location / { root /var/www/html; index index.html; } }

关键配置说明:

  • ssl_protocols应禁用不安全的 TLS 1.0/1.1
  • ssl_ciphers需精心配置以平衡安全与兼容性
  • OCSP 装订可减少客户端验证延迟
  • HSTS 头强制浏览器使用 HTTPS 连接

3. Let's Encrypt 证书自动化方案

Let's Encrypt 证书的有效期仅 90 天,必须建立自动化续期流程。官方推荐的 certbot 工具可简化这一过程。

3.1 证书申请与安装

# 安装 certbot sudo apt install certbot python3-certbot-nginx # 获取证书 (Nginx 插件模式) sudo certbot --nginx -d example.com -d www.example.com # 仅获取证书 (手动配置模式) sudo certbot certonly --webroot -w /var/www/html -d example.com

certbot 会自动修改 Nginx 配置加载新证书。手动模式获取证书后,需在 Nginx 中配置证书路径:

ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;

3.2 自动化续期配置

创建续期脚本/etc/letsencrypt/renewal-hooks/post/nginx-reload.sh

#!/bin/bash nginx -t && systemctl reload nginx

然后设置 cron 任务自动续期:

# 每天检查续期 (证书到期前30天内才会实际续期) 0 0 * * * /usr/bin/certbot renew --quiet --post-hook "/bin/bash /etc/letsencrypt/renewal-hooks/post/nginx-reload.sh"

3.3 通配符证书配置

通配符证书需使用 DNS 验证方式:

sudo certbot certonly \ --manual \ --preferred-challenges=dns \ -d *.example.com \ --server https://acme-v02.api.letsencrypt.org/directory

执行命令后,certbot 会提示添加 DNS TXT 记录验证域名所有权。

4. 商业证书高级配置

商业证书通常提供更长的有效期和额外的验证功能。以 DigiCert 为例,配置时需注意:

  1. 证书链完整性:商业 CA 通常需要中间证书
ssl_certificate /path/to/your_domain.crt; ssl_certificate_key /path/to/your_private.key; ssl_trusted_certificate /path/to/digicert_ca.crt;
  1. OCSP 验证优化
ssl_stapling on; ssl_stapling_verify on; resolver 8.8.8.8 1.1.1.1 valid=300s; resolver_timeout 5s;
  1. 多域名 SAN 证书:商业证书常支持多个 Subject Alternative Names
ssl_certificate /path/to/multi_domain.crt; ssl_certificate_key /path/to/multi_domain.key;

5. 混合方案与性能优化

在实际生产环境中,可以组合使用不同证书方案:

  • 边缘节点使用商业证书
  • 内部服务间通信使用 Let's Encrypt 证书
  • 开发环境使用自签名证书

性能优化建议

  1. 会话恢复:减少 TLS 握手开销
ssl_session_cache shared:SSL:50m; ssl_session_timeout 1d; ssl_session_tickets on;
  1. TLS 1.3 优先:提供更好的性能和安全性
ssl_protocols TLSv1.3 TLSv1.2; ssl_ciphers 'TLS13+AESGCM+AES128:TLS13+AESGCM+AES256...';
  1. 证书热更新:避免服务中断
# 在证书续期后发送 USR1 信号给 Nginx kill -USR1 $(cat /var/run/nginx.pid)

6. 常见问题排查

当 HTTPS 配置出现问题时,可通过以下方法诊断:

  1. 证书链验证
openssl verify -CAfile /path/to/ca_bundle.crt your_domain.crt
  1. 连接测试
openssl s_client -connect example.com:443 -servername example.com -showcerts
  1. 协议支持检查
nmap --script ssl-enum-ciphers -p 443 example.com
  1. Nginx 配置测试
nginx -t

对于混合内容警告,确保所有资源都通过 HTTPS 加载:

# 强制重定向 HTTP 到 HTTPS server { listen 80; server_name example.com; return 301 https://$host$request_uri; }

7. 安全加固与最佳实践

为确保 HTTPS 配置的安全性,建议实施以下措施:

  1. 禁用弱加密算法
ssl_ciphers 'ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384...'; ssl_ecdh_curve secp384r1;
  1. 启用证书透明度
add_header Expect-CT 'enforce, max-age=86400';
  1. 内容安全策略
add_header Content-Security-Policy "default-src 'self'; script-src 'self' 'unsafe-inline'...";
  1. 定期轮换密钥:即使证书未到期,也应每年更新私钥
# 生成新私钥 openssl ecparam -genkey -name secp384r1 -out new.key # 使用新密钥重新申请证书 certbot certonly --cert-name example.com --key-path /path/to/new.key
  1. 监控证书过期:设置监控检查证书有效期
echo | openssl s_client -connect example.com:443 2>/dev/null | \ openssl x509 -noout -dates
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/11 6:18:37

语义鸿沟是AI落地深层瓶颈 本体语义破局

很多企业在完成大模型接入、搭建完传统RAG知识库、甚至上线了几个基础智能体之后,很快就会遇到一个几乎无法靠常规技术手段突破的深层瓶颈:大模型的通用能力很强,能流畅回答各类常识问题,但一接入企业内部的ERP、MES、WMS等核心业…

作者头像 李华
网站建设 2026/7/11 6:14:05

mysql创建索引实操

MySQL 创建索引完整实操 这份笔记主要整理 MySQL 里最常用的 4 类索引:普通索引、唯一索引、主键索引、联合索引。 每种索引都分成两种写法: 建表时直接创建索引表已经存在,后面再新增索引说明:下面 SQL 默认使用 MySQL 8.x&#…

作者头像 李华
网站建设 2026/7/11 6:13:29

拆解大模型推理底层双阶段,Prefill与Decode如何决定服务速度与成本

开篇:你滑动聊天框时,GPU正在并行与串行间反复拉扯 打开任意一款AI对话工具发送提问,输入一段上千字的文档让模型总结,你会明显感知到两种截然不同的等待节奏。提交长文本后会有一段空白等待,随后文字像打字机一样逐字…

作者头像 李华
网站建设 2026/7/11 6:12:08

C++函数封装实战:信息学奥赛1399题3种解法对比,效率提升15%

C函数封装实战:信息学奥赛1399题3种解法对比与15%效率提升秘籍在信息学竞赛的备战过程中,算法效率与代码质量往往决定着选手的成败。本文将以《信息学奥赛一本通》1399题"甲流病人初筛"为例,深入剖析三种不同实现方案的优劣&#x…

作者头像 李华
网站建设 2026/7/11 6:11:05

DFA最小化与正规式描述:Hopcroft算法解析与1个习题案例

DFA最小化与正规式描述:Hopcroft算法解析与实战案例在编译原理的学习过程中,有限状态自动机(Finite Automaton)是一个核心概念。其中,确定有限状态自动机(DFA)因其确定性而备受关注。本文将深入…

作者头像 李华
网站建设 2026/7/11 6:10:49

UML 用例图实战:知乎问答系统 4 大核心场景与 12 个关键用例解析

UML用例图实战:知乎问答系统核心场景与关键用例深度解析1. 从业务需求到UML用例图的转化方法论在构建知乎类问答系统的UML用例图时,我们需要遵循"业务场景→用户行为→系统功能→用例抽象"的四层转化逻辑。以"提问"场景为例&#xf…

作者头像 李华