
使用 AllinSSL 实现 SSL 自动续期与部署
使用 AllinSSL 实现 SSL 自动续期与部署
1、什么是 SSL 证书
我相信你既然已经看到这里了,应该对它不陌生。其实我们平时所说的 SSL 证书,更准确地讲应该叫 TLS 证书。它由受信任的证书颁发机构(CA)签发,主要有两个作用:一是证明当前访问的确实是目标网站,二是对浏览器与服务器之间传输的数据进行加密。浏览器地址栏里的小锁,以及网址前面的 https://,背后都离不开它。
SSL 证书并不是申请一次就能永久使用。证书到期后,所谓「续期」实际上也不是在旧证书上延长时间,而是重新完成域名验证、签发一张新证书,再将新证书替换到服务器、CDN、负载均衡等实际提供 HTTPS 服务的位置。最后还要重新加载相关服务,整个过程才算结束。
以前公有 SSL 证书最长可以用几年,后来逐步缩短到 398 天。而这个周期还在继续减小:根据 CA/Browser Forum 已通过的 SC-081v3 提案,公有 TLS 证书的最长有效期已从 2026 年开始分阶段缩短,并将在 2029 年 3 月降至 47 天。
47 天并不意味着每隔 47 天登录控制台点一下「续期」就行。证书通常还要提前一段时间更换,留给人工处理的窗口会更短。如果手上只有一个网站,偶尔操作一次可能不算麻烦;但当证书分散在多台服务器、多个域名和不同云平台时,这简直就是运维的噩梦,因此证书自动化逐渐变成了一项刚需的运维能力。
2、常见 SSL 自动续期方案
SSL 证书自动续期并不是什么新需求,市面上已经有不少成熟方案。它们没有绝对的好坏,主要区别在于适用的基础设施和自动化范围。
| 方案 | 适合场景 | 优点 | 弊端 |
|---|---|---|---|
Certbot / acme.sh | 单台服务器、少量域名 | 成熟轻量 | 跨服务器部署通常需要脚本 |
Caddy / Traefik | 统一反向代理 | HTTPS 几乎无感 | 主要管理代理内的服务 |
1Panel / 宝塔 | 面板托管的网站 | 操作方便 | 容易受限于单一面板 |
cert-manager | Kubernetes | 云原生、声明式 | 不适合普通服务器 |
如果只有一台服务器和少量域名,Certbot 或 acme.sh 通常已经够用;网站统一由 Caddy、Traefik 接入时,直接使用反向代理自带的 ACME 能力会更简单;Kubernetes 环境则更适合 cert-manager。问题在于,实际上很多环境并没有这么统一:网站可能部署在多台服务器上,前面还有 CDN,部分服务又托管在对象存储或云厂商平台中。
这时,「证书申请成功」只完成了一半。如何把新证书准确地分发到每一个使用位置、重新加载服务,并在失败时及时通知,才是更容易出问题的部分。传统工具当然也能配合 Shell、定时任务和云平台 API 完成这些工作,只是当目标越来越多以后,脚本的维护成本也会跟着上来。
3、什么是 AllinSSL
AllinSSL 是一款开源免费的 SSL 证书全生命周期管理工具,把证书申请、续期、部署、监控和通知集中到一个 Web 管理平台中。它底层仍然使用 ACME 等成熟机制完成证书签发,重点解决的是申请之后如何管理和部署的问题。截至本文发布时,该项目在 GitHub 上已经获得了 3.5k Star。
AllinSSL 的核心是可视化工作流。可以把一次完整的证书更新过程编排成下面这样:
定时检查 → 申请或续签证书 → 部署到目标服务 → 发送执行通知工作流不仅能顺序执行,还能根据成功或失败走不同分支,也可以将同一张证书并行部署到多个位置。相比给每台机器分别配置定时任务,这种方式更容易看清一张证书从哪里来、部署到了哪里,以及某次执行究竟卡在哪一步。
根据 AllinSSL 官方介绍,它目前支持对接多种 CA、DNS 服务商和云平台,证书可以部署到本地或远程服务器、宝塔、1Panel、CDN、WAF 等目标。对多域名、多服务器或跨云环境来说,它的优势主要体现在以下几点:
- 集中管理:在一个页面查看证书的域名、到期时间和当前状态,不用登录多个平台逐个检查。
- 自动验证:通过
DNS服务商API完成DNS-01验证,适合普通域名和通配符证书。 - 自动部署:证书签发后继续部署到服务器或云服务,而不是停留在「已经申请成功」。
- 灵活编排:通过条件和并行分支,将一张证书分发到多个部署目标。
- 监控通知:检查线上证书状态,并在工作流成功、失败或证书即将到期时发送通知。
简单来说,Certbot、acme.sh 更像是好用的证书客户端,而 AllinSSL 更像是给证书自动化加了一层集中管理和部署编排。如果只有一个简单站点,使用它可能有些重;如果证书散落在服务器、CDN 和多个云平台中,它带来的便利就比较明显了。

4、使用 AllinSSL 实现证书自动续期与部署
接下来我将以「实现自动续期并部署到腾讯云 COS 服务」为例,跑一次完整的实践(在此之前我已有自动部署到七牛云 CDN 的配置)。大家实际操作时,可以根据自己的 DNS 服务商和部署目标替换相应的配置。
4.1、安装 AllinSSL
因为它是一个独立的平台,因此首先要找一台祖传稳定的服务器进行安装。安装过程对各位大牛来说简直轻而易举,并且官方文档中写得很全面,支持脚本、Docker、1Panel、宝塔等多种方式,选一种你喜欢的就好。本文不再赘述,文章最后会附上官方文档链接。
这里我直接在宝塔面板的 Docker 应用商店中进行安装:


4.2、配置 API 授权
这一步需要配置好 DNS 和 COS 两个 API 授权。通俗点讲,就是告诉 AllinSSL 使用哪个 API 验证待签发证书的域名,以及使用哪个 API 部署更新证书,为后续的工作流做准备。
我们先到腾讯云平台(访问管理 → 用户列表 → 新建用户)上创建好一个授权用户:

提示:权限分配应遵循最小权限原则。为了快速配置,可以使用腾讯云预设的
QcloudDNSPodFullAccess和QcloudCOSFullAccess策略;生产环境建议分别创建自定义策略或拆分账号,只开放实际需要的域名解析和对象存储权限。
接着到 AllinSSL 平台(授权 API 管理 → 添加授权 API)中配置授权:

配置完成后可以点击后面的测试按钮测试连通性。
4.3、配置自动化部署工作流
进入「自动化部署」并添加工作流,这里选择快速部署模板:



提示:工作流后续的通知可以自行配置。这里为了快速演示暂不设置通知;如果不需要通知,记得删除通知节点,否则工作流无法保存。
保存工作流之后,所有配置就完成了,可以手动点击测试按钮检查执行结果。当然,这里只演示了一部分功能,更多流程可以自行发挥。是不是瞬间豁然开朗,SSL 证书自动化竟然如此简单?妈妈再也不用担心我手动更换了。
5、最佳实践建议参考
DNS和云平台凭证依然要遵循最小权限原则。- 尽量不要将
AllinSSL管理端直接暴露到公网。 - 定期备份
AllinSSL数据目录、配置和证书文件。 - 最好同时配置成功通知与失败告警,避免自动化静默失败。
- 监控用户实际访问到的证书是否有异常。
6、最后
如果你:
- 希望使用可视化界面;
- 需要把一张证书部署到多个目标;
- 不想自己维护
Shell脚本; - 需要执行记录和失败通知;
- 基础设施包含服务器、面板或云服务。
那么 AllinSSL 就非常适合你;但如果你只有一台服务器、一个域名,acme.sh 可能更简单。

