网站 HTTPS 免费证书怎么申请和自动续期:Certbot、acme.sh 与云厂商免费证书(2026)
摘要:2026 年 3 月 15 日起公开 TLS 证书最长有效期降到 200 天,之后还会降到 100 天、47 天;Let's Encrypt 也已停止到期提醒邮件,并计划把证书从 90 天缩短到 45 天。免费证书怎么选、Certbot 和 acme.sh 怎么装、续期怎么检查,本文一次讲清。
给网站上 HTTPS,现在基本不用花钱:Let's Encrypt 这类免费证书浏览器都信任,阿里云、腾讯云也有免费证书。真正容易出问题的不是“申请”,而是“续期”——证书过期那天,访客会看到整页的安全警告。如果你是按轻量应用服务器搭建 WordPress一步步建的站,开 HTTPS 那一步用的就是本文讲的方法。
先看 2026 年的变化:证书越来越短,必须自动化
- 行业规则:CA/浏览器论坛(CA/Browser Forum)的 SC-081 决议规定,2026 年 3 月 15 日起签发的公开 TLS 证书最长有效期 200 天,2027 年 3 月 15 日起 100 天,2029 年 3 月 15 日起 47 天。
- Let's Encrypt 的时间表(2025 年 12 月公告):现在默认 90 天;2026 年 5 月 13 日起可选的 tlsserver 配置改发 45 天证书;2027 年 2 月 10 日起默认配置改为 64 天;2028 年 2 月 16 日起默认 45 天。
- 到期提醒邮件没有了:Let's Encrypt 的到期提醒邮件服务已于 2025 年 6 月 4 日停止。以前靠邮件提醒手动续期的,现在不会再收到任何通知。
Let's Encrypt 在公告里说得很直白:不建议手动续期;如果续期客户端不支持 ARI(续期信息接口),至少要按证书有效期的三分之二左右自动续期,写死“每 60 天续一次”以后就不够了。
免费证书有哪几种
| 来源 | 有效期 | 数量 | 续期方式 | 适合 |
|---|---|---|---|---|
| Let's Encrypt(通过 Certbot、acme.sh 等) | 90 天(将逐步缩短) | 同一注册域名每 7 天最多 50 张 | ACME 客户端自动续期 | 自己有服务器的站点 |
| 阿里云个人测试证书(免费版) | 90 天 | 每个实名账号每自然年 20 张 | 不支持续费,到期重新申请并替换 | 官方定位为开发和测试环境 |
| 腾讯云免费证书 | 90 天 | 每个账号最多 50 张 | 到期前重新申请 | 前期测试、单域名 |
| Cloudflare 边缘证书 | 由 Cloudflare 自动管理 | — | 自动 | 已接入 Cloudflare 代理的站点 |
几点说明:
- 阿里云、腾讯云的免费证书都只支持单个域名,不支持通配符和 IP;腾讯云免费证书品牌为 TrustAsia。按现在 90 天的有效期,一年要手动换四次左右,更适合测试或临时用。
- 正式站点更推荐 ACME 自动续期。阿里云和腾讯云控制台也有付费的证书托管,可以替你自动续。
- 站点接了 Cloudflare 的话,访客看到的是 Cloudflare 的边缘证书,源站证书怎么配,参见 Cloudflare 免费 CDN 与 SSL 接入教程里的“加密模式”一节。
方法一:Certbot(Nginx 一条命令搞定)
Let's Encrypt 官方入门指南推荐大多数用户用 Certbot。它的前提条件写得很清楚:会用命令行;网站已经能通过 HTTP 访问、80 端口开放;能 SSH 登录服务器并用 sudo。

在 Certbot 官网选择你的 Web 服务器和系统,会给出对应命令。以 Nginx + Linux(snap 安装)为例:
sudo snap install --classic certbot
sudo ln -s /snap/bin/certbot /usr/local/bin/certbot
sudo certbot --nginx
最后一条会申请证书,并自动修改 Nginx 配置开启 HTTPS。想自己改配置,就用 sudo certbot certonly --nginx 只拿证书。

装好后,Certbot 会自带一个定时任务(cron 或 systemd timer)自动续期。用下面的命令模拟一次续期,确认流程能跑通:
sudo certbot renew --dry-run
systemctl list-timers | grep certbot
如果之前用 apt、yum 装过旧版 Certbot,官方建议先卸载再装 snap 版,避免两个版本混用。
方法二:acme.sh(纯 Shell,不需要 root)
acme.sh 是一个纯 Shell 脚本,不依赖 Python,也不强制要求 root 权限,适合精简系统、容器,或者需要 DNS 验证、通配符证书的场景。
安装(把邮箱换成你自己的):
curl https://get.acme.sh | sh -s email=my@example.com
有一点要注意:从 v3.0(2021 年 8 月)起,acme.sh 默认的证书机构是 ZeroSSL,不是 Let's Encrypt。想用 Let's Encrypt,先执行:
acme.sh --set-default-ca --server letsencrypt
然后申请证书,并把证书安装到 Nginx 目录。--reloadcmd 一定要写,否则证书续期了,Nginx 还在用旧证书:
acme.sh --issue -d example.com -w /var/www/html
acme.sh --install-cert -d example.com \
--key-file /etc/nginx/ssl/example.com.key \
--fullchain-file /etc/nginx/ssl/example.com.pem \
--reloadcmd "service nginx force-reload"
安装脚本会自动添加一个定时任务负责续期;新版 acme.sh 还支持 ARI,会根据证书机构建议的时间窗口续期。
通配符证书:只能用 DNS 验证
*.example.com 这种通配符证书,Let's Encrypt 要求用 DNS-01 验证:客户端调用你的 DNS 服务商接口,临时添加一条 TXT 记录。
- Certbot:安装对应 DNS 服务商的插件(例如
certbot-dns-cloudflare),配置 API 凭据后申请。 - acme.sh:
acme.sh --issue -d example.com -d '*.example.com' --dns dns_cf(dns_cf是 Cloudflare,其他服务商换成对应名称)。
DNS 的 API 密钥权限很大,拿到它就能改你的解析。能限定权限就限定到单个域名,文件权限设成只有 root 可读。TXT 记录的作用,文末“相关阅读”里的域名解析入门有讲。
续期做完后,再做三项检查
- 模拟续期:Certbot 用
certbot renew --dry-run;acme.sh 可以对单个域名acme.sh --renew -d example.com --force实际续一次。注意别反复强制续,Let's Encrypt 对同一组域名每 7 天最多签 5 张证书。 - 确认 Web 服务已重载:续期成功但 Nginx 没重载,浏览器里看到的还是旧证书。
- 从外面看实际到期时间:在任意一台电脑上执行下面这条命令,读出线上证书的到期日。可以写进定时任务,剩余天数不足时发告警,也可以用第三方证书监控服务。
echo | openssl s_client -connect example.com:443 -servername example.com 2>/dev/null | openssl x509 -noout -enddate
申请失败的常见原因
- 80 端口不通:云服务器的安全组、系统防火墙都要放行 80 和 443。HTTP-01 验证失败,多半是 Let's Encrypt 的验证服务器连不上你的服务器。
- 域名没解析到这台服务器:用
ping或dig确认 A 记录;如果还有 AAAA(IPv6)记录,也要指向同一台服务器且能访问。 - 反复重试被限流:同一账号、同一域名每小时最多 5 次验证失败。排查问题时先用 Let's Encrypt 的测试环境(Certbot 加
--staging/--test-cert),通了再申请正式证书。 - 国内服务器未备案:内地服务器上的网站,完成 ICP 备案前 80/443 端口的访问可能会被拦截,验证自然也过不了。
相关阅读
- Cloudflare 免费 CDN 与 SSL 接入教程
- 轻量应用服务器搭建 WordPress
- 新服务器安全基线:SSH 密钥登录、防火墙与自动更新
- 域名解析入门:A 记录、CNAME、MX、TXT 与 TTL
资料来源(2026-09-29 查询):Let's Encrypt 入门指南、Let's Encrypt:证书有效期缩短到 45 天、Let's Encrypt:到期提醒服务已停止、Let's Encrypt 速率限制、CA/Browser Forum Ballot SC-081v3、Certbot 安装向导、acme.sh 项目、阿里云个人测试证书说明、腾讯云免费证书常见问题。
说明:本文链接均为官网普通链接,本站与上述服务暂无推广关系。命令以 Ubuntu/Debian + Nginx 为例,其他系统以各项目官方文档为准。