news 2026/4/27 17:57:48

Let‘s Encrypt免费SSL证书自动续期完整指南:Certbot配置与Nginx安全优化

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Let‘s Encrypt免费SSL证书自动续期完整指南:Certbot配置与Nginx安全优化

【摘要】
Let's Encrypt提供免费SSL证书但有效期仅90天,自动化续期是保障HTTPS服务不中断的关键。本文基于Nginx + Ubuntu环境,详细介绍Certbot申请证书、配置自动续期定时任务、模拟测试续期、外部监控兜底及Nginx安全参数优化的完整流程。

关键词:Let's Encrypt, Certbot, SSL证书, HTTPS, 自动续期, Nginx


一、 问题背景

Let's Encrypt免费证书有效期90天,需定期续期。手动续期存在遗忘风险(如cron任务因服务器迁移丢失),导致证书过期、网站HTTPS不可用,影响用户信任与SEO。

本文提供一套经过验证的申请、续期、监控全自动化方案。


二、 申请SSL证书

环境:Ubuntu + Nginx

2.1 安装Certbot

bash

sudo apt update sudo apt install certbot python3-certbot-nginx

2.2 申请证书

bash

sudo certbot --nginx -d yourdomain.com -d www.yourdomain.com

执行后Certbot将自动:

  1. 验证域名所有权(通过HTTP-01方式)

  2. 签发证书

  3. 修改Nginx配置文件,添加SSL相关配置

  4. 重载Nginx

2.3 其他验证方式

若服务器Nginx端口不对外开放,可使用DNS验证:

bash

sudo certbot --manual --preferred-challenges dns -d yourdomain.com

此方式需在DNS控制台添加TXT记录,适合CDN/负载均衡后端场景。


三、 配置自动续期

3.1 确认systemd timer

Certbot安装时通常自动创建systemd timer:

bash

systemctl list-timers | grep certbot

存在certbot.timer即表示自动续期已启用,每天执行两次检查。

3.2 手动添加cron定时任务(备选方案)

若无systemd timer,手动添加cron:

bash

sudo crontab -e

添加以下内容:

text

0 0,12 * * * /usr/bin/certbot renew --quiet

参数说明:

  • 0,12:每天0时与12时执行

  • renew:检查所有已签发证书,到期前30天内执行续期

  • --quiet:成功时无输出,失败时输出错误信息


四、 测试续期是否正常

在上线前执行模拟续期,验证配置是否正确:

bash

sudo certbot renew --dry-run

期望输出:

text

The dry run was successful.

常见报错与排查:

报错现象原因解决方案
端口占用错误80/443端口被其他服务占用临时停用占用服务或使用DNS验证
DNS解析失败域名未正确解析至服务器IP检查DNS A记录,多域名证书需逐一确认
连接超时防火墙未开放80/443端口检查安全组/iptables规则

五、 外部监控兜底方案

自动续期依赖系统cron、服务器时间等本地环境,存在小概率失效可能。建议增加一层外部监控。

方案:
使用SSL证书监控服务(UptimeRobot等),设置证书有效期 < 30天时发送邮件/钉钉通知。

部分云厂商也提供类似功能:

  • 阿里云:SSL证书服务 → 证书监控

  • 腾讯云:SSL证书管理 → 到期提醒


六、 Nginx SSL安全配置优化

6.1 基础配置

Certbot生成的Nginx配置片段:

nginx

server { listen 443 ssl http2; server_name yourdomain.com; ssl_certificate /etc/letsencrypt/live/yourdomain.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/yourdomain.com/privkey.pem; }

6.2 安全增强配置

nginx

# 仅启用安全协议版本 ssl_protocols TLSv1.2 TLSv1.3; # 禁用弱加密套件 ssl_ciphers HIGH:!aNULL:!MD5; # 启用HSTS,强制HTTPS访问(有效期180天) add_header Strict-Transport-Security "max-age=15768000; includeSubDomains" always; # SSL会话缓存优化 ssl_session_cache shared:SSL:10m; ssl_session_timeout 1d;

HSTS说明:启用后浏览器首次访问HTTPS后将记录该策略,后续同域名请求自动升级为HTTPS,避免302跳转开销与中间人攻击风险。


七、 Let's Encrypt与云厂商免费证书对比

维度Let's Encrypt云厂商免费证书(阿里/腾讯)
有效期90天1年
续期方式全自动(Certbot)手动申请-下载-上传-部署
数量限制约20个/账号
集成便利性需服务器配置NginxCDN/负载均衡可一键关联
适用场景自建服务器使用云厂商全托管服务的场景

推荐策略:自建服务器使用Let's Encrypt + Certbot全自动方案;业务已深度集成云厂商CDN/CLB时,可选用云厂商证书简化运维。


八、 服务器环境建议

SSL证书申请与自动续期需在自有服务器上运行Certbot。若尚未购买服务器或面临实名认证、国际信用卡等注册障碍,可考虑代理渠道。Ztopcloud支持邮箱注册与微信支付宝充值,开通后可直接登录阿里云/腾讯云官方控制台操作,与官网购买体验一致。


九、 总结

HTTPS是网站安全的基础设施。本文方案可实现:

  1. 三分钟申请证书(Certbot一键完成)

  2. 全自动续期(systemd timer或cron)

  3. 续期可靠性验证(dry-run模拟测试)

  4. 多重保障(外部监控兜底 + Nginx安全加固)

完成以上配置后,SSL证书管理即可实现“零运维”。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/27 17:49:23

暗黑2存档编辑终极指南:5分钟打造你的完美角色

暗黑2存档编辑终极指南&#xff1a;5分钟打造你的完美角色 【免费下载链接】d2s-editor 项目地址: https://gitcode.com/gh_mirrors/d2/d2s-editor 还在为暗黑破坏神2的刷装备、练级过程感到疲惫吗&#xff1f;想要快速体验游戏的全部内容&#xff0c;却不想花费数百小…

作者头像 李华
网站建设 2026/4/27 17:48:58

Claude Code 完全重装与接入 DeepSeek 指南

从卸载清理到接入全新模型&#xff0c;一篇搞定 如果你在使用 Claude Code 时遇到了莫名其妙的 bug&#xff0c;或者想要尝试更强大的模型&#xff08;比如 DeepSeek&#xff09;&#xff0c;彻底重装并接入新模型是一个不错的选择。本文将带你一步步完成&#xff1a; 完全卸载…

作者头像 李华
网站建设 2026/4/27 17:48:15

代码灭绝事件:当AI吞噬测试脚本,测试工程师的生存边界与价值重塑

一场静默的“灭绝”在软件测试行业内部&#xff0c;一场远比普通技术迭代更深刻、更静默的变革正在发生。我们暂且称之为“代码灭绝事件”。这不是指编程语言或框架的消亡&#xff0c;而是指以传统手工编写、维护自动化测试脚本为核心的工作模式&#xff0c;正面临结构性瓦解的…

作者头像 李华