Nginx 配置 HTTPS:Certbot 证书申请与自动续期检查

Nginx 网站能通过 HTTP 打开后,下一步是配置 HTTPS。证书申请成功只完成了一部分工作:还要核对访问域名、证书链、网页资源和自动续期。本文以 Ubuntu 24.04、已运行的 Nginx 网站和 Certbot 为例,适用于你有权管理的域名。

以下 example.comwww.example.com 均需替换。只申请你已配置并计划使用的名称;如果 www 尚未解析,就不要先把它加入申请命令。

申请前把四项条件检查完

首先,域名 A 记录应指向正确入口;存在 AAAA 记录时,IPv6 访问也必须正确。其次,Nginx 的 server_name 应包含申请名称。第三,本示例使用 HTTP-01 验证,需要公网 TCP 80 可达,并让验证路径到达正确网站。第四,正式 HTTPS 服务需要 TCP 443 放行。

这些要求同时涉及云安全组、主机防火墙和反向代理。如果域名经过 CDN,需确认验证请求实际会到达哪一层,不能默认会回到当前服务器。已有另一套证书工具或面板管理时,优先沿用其续期机制,避免多个工具争抢配置。

HTTP-01 不能申请通配符证书。需要 *.example.com 时,应采用 DNS-01 等适用方式,并配置可自动化的 DNS 验证;单纯手工添加一次 TXT,不等于今后的续期已自动完成。Let's Encrypt 验证类型文档解释了各方式的边界。

安装前先备份并确认工具来源

在服务器创建配置备份,检查 Nginx 现状:

# Ubuntu 服务器
sudo tar -czf "/root/nginx-before-https-$(date +%Y%m%d-%H%M%S).tar.gz" -C /etc nginx
sudo nginx -t
command -v certbot
snap version

备份放在管理员目录,不要放入网站可下载目录。若存在 Certbot,先确认它来自系统软件包、Snap 还是面板。不要直接卸载一个正在为其他网站续期的工具。

截至 2026 年 9 月 4 日,Certbot 官方 Nginx/Snap 指引仍提供 Snap 安装方式。下面适用于尚未安装 Certbot、已具备可用 snapd 的服务器;没有 snapd 时先按该官方指引完成环境准备。已有安装需要迁移时,应先记录证书、续期任务和插件,再安排变更。

# Ubuntu 服务器:仅适用于已核对的全新 Certbot 安装
sudo snap install --classic certbot
sudo /snap/bin/certbot --version

这里使用完整路径,避免命令意外调用另一套安装。不要从不明网站复制一键证书脚本,也不要把 DNS API 密钥或证书私钥写入公开文档。

申请证书并检查修改结果

确认网站配置检测通过后,在服务器执行:

sudo /snap/bin/certbot --nginx -d example.com -d www.example.com

按提示提供可接收维护通知的邮箱,阅读服务条款。Nginx 插件会尝试配置 HTTPS;完成后检查它修改了哪些站点文件,再执行 sudo nginx -t。如果你不希望工具自动修改站点,可改用 certonly --nginx 申请,但随后需要自行完成证书路径、HTTPS 监听和重新加载安排。

不要在申请失败时不断重跑生产申请。先读错误信息,确认失败的是 DNS、连接还是域名授权。调试流程可使用测试环境,测试证书不受普通浏览器信任,不能把它当正式站点证书使用。

不是看到页面就算验收完成

在个人电脑执行;Windows PowerShell 将 curl 改成 curl.exe

curl -I https://example.com/
curl -I https://www.example.com/
curl -I http://example.com/

不要加跳过证书校验的选项来证明 HTTPS 正常。检查证书名称和有效期,确认 www 与根域名按预期工作,HTTP 到 HTTPS 的跳转没有循环。遇到证书链问题时,可对照Nginx HTTPS 配置说明检查完整链的使用方式。

继续在浏览器测试首页、图片、样式、登录和表单。出现混合内容时,查找模板或数据库中仍写死的 HTTP 资源。已有正式站点也要核对规范地址及跳转,避免只修首页而遗漏文章页。未确认全部子域名的 HTTPS 能力前,不要仓促开启覆盖所有子域名的严格传输策略。

自动续期必须实际演练

在服务器执行:

sudo /snap/bin/certbot certificates
sudo /snap/bin/certbot renew --dry-run
systemctl list-timers --all

核对演练成功,并在任务列表中确认实际使用的续期任务;不同安装方式的任务名称可能不同。正常续期所依赖的 DNS、端口、插件权限都要长期保留。如果之后修改域名、代理或防火墙,应重新运行演练。

另外设置独立的证书到期监控。监控要从真实访问入口检查,因为 CDN 边缘证书与源站证书可能分别续期。不能只检查服务器上的文件,就认定外部用户拿到了新证书。

失败后如何恢复

如果 HTTPS 修改影响已有站点,先保留错误日志,按备份逐个恢复本次修改的站点配置,校验后重新加载。不要删除整个证书目录,它可能被其他站点使用。涉及登录或个人信息的功能,应在 HTTPS 修复前暂停对外使用,而不是长期退回明文连接。

最后记录证书包含的名称、配置位置、续期方式和监控接收人。将这些信息与网站交接文档放在一起,后续换人维护时才不会等到证书过期才发现续期入口。

参考资料

继续阅读

返回天理云文章中心

分享到:
上一篇
域名怎么解析到服务器?A、AAAA、CNAME 与 TTL 配置指南
下一篇
Docker Compose 部署入门:端口、持久化与升级回退怎么做
服务中心
企微客服
企微客服
给您高效服务
评价
您对当前页面的整体感受是否满意?
😞
非常不满意
😕
不满意
😐
一般
🙂
满意
😊
非常满意