尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
HTTPS证书快过期别等用户打不开:Nginx + Certbot 自动续期排查实战
网站 HTTPS 证书过期是非常典型的“小问题拖成生产事故”。证书一过期用户浏览器会出现安全警告API 调用可能失败小程序、App、支付回调、Webhook 都可能受影响。更麻烦的是很多证书其实已经续期成功但 Nginx、负载均衡或 CDN 仍在使用旧证书最终表现还是“用户打不开”。本文按生产排查顺序写先确认当前线上证书到期时间再检查 Certbot 自动续期接着验证 Nginx 配置和 reload最后排查 CDN、负载均衡、多台服务器和权限问题。适用于腾讯云、阿里云、AWS、Azure、Oracle Cloud、普通 VPS 上的 Nginx HTTPS 站点。参考来源Certbot 官方 User Guidehttps://eff-certbot.readthedocs.io/en/stable/using.htmlNginx 官方 HTTPS 配置文档https://nginx.org/en/docs/http/configuring_https_servers.html腾讯云 Nginx 服务器 SSL 证书安装部署https://cloud.tencent.com/document/product/400/35244Let’s Encrypt FAQhttps://letsencrypt.org/docs/faq/1. 先看线上证书而不是只看服务器文件第一步从外部检查域名当前返回的证书DOMAINexample.comecho|openssl s_client-connect${DOMAIN}:443-servername${DOMAIN}2/dev/null|openssl x509-noout-subject-issuer-dates重点看notBefore... notAfter... subject... issuer...如果notAfter已经很近说明线上证书确实快到期。注意这里查的是用户真实访问到的证书比你在服务器目录里看到的文件更可靠。2. 查 Certbot 管理了哪些证书如果使用 Certbotsudocertbot certificates你会看到证书名称、域名列表、到期时间、证书路径和私钥路径。典型输出包括Certificate Name: example.com Domains: example.com www.example.com Expiry Date: 2026-09-10 Certificate Path: /etc/letsencrypt/live/example.com/fullchain.pem Private Key Path: /etc/letsencrypt/live/example.com/privkey.pemCertbot 官方文档说明certbot reconfigure可用于更改证书续期选项并通过测试续期验证新选项成功后应用到后续续期。生产环境不要随便改 renewal 配置先做 dry-run。3. 先 dry-run不要直接正式续期sudocertbot renew --dry-run如果成功说明 ACME 验证链路基本可用。如果失败常见原因包括80端口没有开放。DNS解析到错误机器。Nginx 没有把/.well-known/acme-challenge/放行。Webroot 路径错误。Cloudflare/CDN/WAF 拦截了验证请求。机器时间不准。续期配置里的域名已经不用或解析已变化。4. 正式续期后必须确认 Nginx 加载新证书正式续期sudocertbot renew然后检查 Nginxsudonginx-tsudosystemctl reload nginxNginx 官方 HTTPS 配置文档说明HTTPS server 需要在 server block 中启用ssl监听并指定ssl_certificate和ssl_certificate_key。也就是说Nginx 实际加载哪个证书取决于配置文件里写的路径。示例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; location / { proxy_pass http://127.0.0.1:3000; } }如果 Nginx 配置指向的是旧目录比如/usr/local/nginx/conf/cert/example.crt而 Certbot 更新的是/etc/letsencrypt/live/example.com/fullchain.pem续期成功也不会生效。5. 自动续期要看 systemd timer 或 cron很多 Linux 发行版通过 systemd timer 管理 Certbot 自动续期systemctl list-timers|grepcertbot systemctl status certbot.timer journalctl-ucertbot.timer-n50--no-pager journalctl-ucertbot.service-n100--no-pager也有机器用 cronsudocrontab-lls-lah/etc/cron.d/grep-Rcertbot/etc/cron*2/dev/null如果没有自动续期任务就要补上。Certbot 安装方式不同系统默认行为可能不同不要假设“装了就会自动续”。6. 续期后自动 reload Nginx推荐使用 deploy hook只在证书实际更新后执行 reloadsudocertbot renew --deploy-hooksystemctl reload nginx如果写入配置可创建sudomkdir-p/etc/letsencrypt/renewal-hooks/deploysudotee/etc/letsencrypt/renewal-hooks/deploy/reload-nginx.sh/dev/nullEOF #!/bin/sh nginx -t systemctl reload nginx EOFsudochmodx /etc/letsencrypt/renewal-hooks/deploy/reload-nginx.sh然后再跑sudocertbot renew --dry-run7. 腾讯云/手动证书场景如果证书来自腾讯云 SSL 证书控制台部署到 Nginx 时通常需要下载 Nginx 证书包将证书文件和私钥上传到服务器并在 Nginx 配置中指定路径。腾讯云文档也提醒安装证书前需要开启 HTTPS 默认端口 443。手动证书的常见问题证书文件和私钥不匹配。证书链不完整。443端口未开放。配置后没有nginx -t。修改配置后没有 reload。多台服务器只更新了一台。CDN或负载均衡还在用旧证书。私钥文件权限建议严格限制sudochownroot:root /path/to/private.keysudochmod600/path/to/private.key8. CDN、负载均衡和多台服务器要单独排查如果网站前面有 CDN、WAF、负载均衡用户看到的证书不一定来自源站 Nginx。排查顺序查浏览器看到的证书颁发者和到期时间。绕过 CDN 查源站证书。查负载均衡 HTTPS 监听证书。查每台后端服务器 Nginx 证书。确认证书更新后是否同步到所有入口。绕过 CDN 可以临时指定 Hostcurl-vk--resolveexample.com:443:1.2.3.4 https://example.com/这里的1.2.3.4替换成源站 IP。9. 最终验证外部验证DOMAINexample.comecho|openssl s_client-connect${DOMAIN}:443-servername${DOMAIN}2/dev/null|openssl x509-noout-issuer-subject-datescurl-Ihttps://${DOMAIN}Nginx验证sudonginx-tsudosystemctl status nginx --no-pagersudotail-n50/var/log/nginx/error.log业务验证首页能打开。登录接口正常。API 回调正常。小程序/App 无证书错误。CDN缓存刷新后仍正常。监控没有 5xx 异常。10. 预防清单建议至少做这些证书到期前30天告警。每周自动检查一次线上证书notAfter。Certbot dry-run 纳入巡检。deploy hook 中执行nginx -t reload。CDN/负载均衡证书到期也纳入监控。证书路径、域名、续期方式写入运维文档。多台服务器统一证书分发或统一在入口层终止 TLS。HTTPS 证书续期不是一次性配置而是长期运维流程。真正可靠的做法是把“证书到期时间、自动续期、Nginx reload、CDN/负载均衡同步、外部验证”连成闭环。这样即使证书30天后才到期也能提前发现问题而不是等用户截图告诉你网站打不开。
RELATED

相关推荐

VMware虚拟机跨主机迁移完整指南:从文件复制到故障排查

VMware虚拟机跨主机迁移完整指南:从文件复制到故障排查

1. 项目概述:虚拟机迁移的刚需与挑战作为一名常年和虚拟机打交道的运维和开发,我太清楚把一台精心配置好的VMware虚拟机从旧电脑搬到新电脑上,这事儿有多高频、多刚需了。你可能刚换了台性能更强的工作站,或者需要把开发环境从办公…

📅 2026/9/27 4:52:00
为什么ChatGPT查文献总被编造DOI误导?聊聊MedPeer依托真实数据解决AI幻觉的方案

为什么ChatGPT查文献总被编造DOI误导?聊聊MedPeer依托真实数据解决AI幻觉的方案

一、AI“编造DOI”已成医学科研显性风险不少医学生、临床医生、药企研发人员都有同款困扰:用ChatGPT辅助写综述、梳理课题参考文献时,AI会批量输出格式规整、看起来专业的文献条目,包含完整DOI、作者、期刊卷期,逐一检索却发现通篇…

📅 2026/9/8 2:31:31
正余弦优化算法(SCA)原理详解与Python实现:从数学到工程优化

正余弦优化算法(SCA)原理详解与Python实现:从数学到工程优化

1. 项目概述:从“正弦波”到“寻优器”的奇妙旅程最近在优化一个工程参数时,我又一次用上了正余弦优化算法。这算法名字听起来挺“数学”的,但它的核心思想其实特别直观,就像让一群探险家(搜索代理)在复杂的…

📅 2026/9/1 4:35:49
MORE NEWS

更多资讯

📰

Codex 计划模式提示词模板

使用前提:已经开启 /plan 计划模式模板 1|通用标准模板(最常用)【任务需求】 在这里写业务需求【约束要求】 1. 先输出完整执行方案,包含:目标、步骤清单、涉及文件列表、风险点、回滚方案; 2. …

📰

适合女生考的证书有哪些?2026年避坑指南

很多女生在后台问我:想利用业余时间考个证,提升一下自己,但又怕踩坑、怕考出来没用。说实话,考证这件事,选对了是“锦上添花”,选错了就是“花钱买心安”。作为过来人,我整理了这份2026年适合女…

📰

HTML——语义化与使用场景(二)

语义化与使用场景3、那些你不了解却有用的内联元素3.1、超过一半的<span>元素可以换成<data>元素3.2、上标<sup>元素和下标<sub>元素与公式排版3.3、<dfn>元素和<abbr>元素的使用场景3.3.1、title属性的使用规则3.3.2、<abbr>元素的…

📰

2026最新青岛网站策划指南:解决改需求慢痛点

2026最新青岛网站策划指南:解决改需求慢痛点 在青岛做网站,最让人抓狂的不是服务器崩溃,而是改个需求建站公司拖一周。很多老板以为这是技术难,其实是流程烂。2026年最新的青岛网站策划逻辑,核心在于把“模糊需求”变成“可执行代码”。如果你还…

📰

拒绝混乱排版,这份网址导航模板保姆级建站教程让你3天上线

拒绝混乱排版,这份网址导航模板保姆级建站教程让你3天上线 备案流程一头雾水?别慌。很多创业者卡在“怎么把一堆链接理清楚”和“怎么让页面看起来不廉价”这两点上。其实,搭建一个专业的 网址导航模板…

📰

YOLOv5车牌检测数据集:工业级标注规范与训练接入指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬