Certimate--自动化申请并部署证书到所有平台
碎碎念
自从2023年开始,免费的SSL证书有效期逐渐都变成了三个月时长,从那之后,换证书就变成了一件麻烦事,经常会因为忘记而导致站点无法访问,于是市面上涌现出了一大批的自动化工具,比如ACME.sh、Certbot等工具,但是或多或少配置起来都比较麻烦,有较高的门槛。
2024年8月21日,Certimate工具秉持着可视化申请并部署证书的原则,创建了仓库,经过了一千多次的提交,目前v0.3已经较为成熟,虽然稍微有些小问题,但是不影响其功能性的强大。这篇文章就给大家介绍一下,如何去使用Certimate工具自动化申请并部署证书到指定平台上。
简介
申请并部署证书的过程虽然不复杂,但是对于很多服务的站长来说,一个个部署的话还是很麻烦的,Certimate可以通过不同平台提供的API,自动化检测域名到期时间,并自动申请部署,解放了双手,同时不会出现由于忘记续期导致的网站无法访问问题。
内存占用
由于Certimate由go语言开发,内存占用极少,正常情况下仅会占用20MB左右的内存,几乎所有服务器均能无压力的运行这个服务,而同样功能的Certd项目,可能是因为定位不同,添加了多用户等其他功能,导致内存占用远超Certimate项目,正常情况下会占用150MB左右的内存,所以如果是个人使用,我个人更加建议使用Certimate。
支持平台
Certimate项目支持部署到很多平台,大概列表如下:
| 类别 | 平台 / 服务 |
|---|---|
| 本地部署 | 本地部署 |
| SSH 部署 | SSH 部署 |
| Webhook | Webhook |
| Kubernetes | Secret |
| 阿里云 | 对象存储 OSS, 内容分发网络 CDN, 全站加速 DCDN, 边缘安全加速 ESA, 传统型负载均衡 CLB, 应用型负载均衡 ALB, 网络型负载均衡 NLB, Web 应用防火墙 WAF, 视频直播 Live, 视频点播 VOD, 证书管理 CAS |
| 腾讯云 | 对象存储 COS, 内容分发网络 CDN, 全站加速网络 ECDN, 边缘安全加速 EdgeOne, 负载均衡 CLB, Web 应用防火墙 WAF, 云直播 CSS, 云点播 VOD, SSL 证书服务 |
| 华为云 | 内容分发网络 CDN, 弹性负载均衡 ELB, Web 应用防火墙 WAF |
| 百度智能云 | 内容分发网络 CDN |
| 火山引擎 | 对象存储 TOS, 内容分发网络 CDN, 全站加速 DCDN, 负载均衡 CLB, 图片服务 ImageX, 视频直播 Live |
| 京东云 | 应用负载均衡 ALB, 内容分发网络 CDN, 视频直播, 视频点播 |
| 七牛云 | 内容分发网络 CDN, 视频直播 Pili |
| 白山云 | 内容分发网络 CDN |
| 多吉云 | 内容分发网络 CDN |
| BytePlus | 内容分发网络 CDN |
| 优刻得 | 对象存储 US3, 内容分发 UCDN |
| AWS | CloudFront |
| CacheFly | CacheFly |
| Cdnfly | Cdnfly |
| Edgio | Applications |
| Gcore | 内容分发网络 CDN |
| 宝塔面板 | 网站, 面板 |
| 雷池 | 雷池 |
可见支持的平台还是很多,感谢社区和作者的贡献,相比之下,同类型产品Certd的宝塔部署是需要收费购买专业版才可以使用的。
证书种类
Certimate支持三种证书,Let's encrypt、ZeroSSL、Google,以下是三种证书的差别:
| 对比项 | Let’s Encrypt | ZeroSSL | Google Trust Services |
|---|---|---|---|
| 国内直连 | ✅(可直连,但部分地区偶尔不稳定) | ✅(国内直连稳定) | ❌(需要国外环境) |
| 安卓兼容性 | ⚠️(部分旧版安卓系统不支持 DST Root CA X3) | ✅(正常) | ✅(正常) |
| 签发机构 | ISRG (Internet Security Research Group) | Sectigo 提供支持 | Google Trust Services |
| 根证书 | ISRG Root X1 (兼容性受限于 DST Root CA X3) | Sectigo RSA / ECC | GlobalSign Root CA |
| 证书有效期 | 90 天 | 90 天 | 90 天 |
| 自动续签 | ✅(需 ACME 客户端,如 certbot) | ✅(支持 ACME,官方提供 API) | ✅(支持 ACME,Google Cloud 生态内无缝集成) |
| 适用场景 | 个人网站、博客、小型项目 | 国内企业、个人站点、API 服务 | 海外服务器、大型企业、Google 生态 |
| 推荐用户 | ✅ 国内用户次选 | ✅ 国内用户首选 | ✅ 海外服务器首选 |
| 优点 | 免费,开源社区支持广泛 | 兼容性更好,国内直连稳定 | Google 官方,信誉度高,全球兼容性最佳 |
| 缺点 | 安卓旧版本兼容性问题 | 无 | 需国外服务器,国内网络环境难以获取 |
基于以上的对比,我推荐国内用户选择ZeroSSL,如果有国外环境,选择Google,当然Lets encrypt的兼容性问题在网站上丝毫不会展现出来,完全不会有任何区别,也可以放心使用。
通知方式
如果证书到期了,但是你的工作流没有正常执行,Certimate还会通过各种方式向你提醒,支持的通知渠道如下:
这里因为我只用了一个邮箱,所以不再详细讲解。
教程
下面我们就开始讲解如何使用Certimate啦!这部分我将分成两部分,一部分为部署和简单使用教程,另一部分为自动部署配置教程,下面我们先开始部署和简单使用教程。
部署和使用
部署
这里我选择最简单的docker-compose方式进行部署,在服务器的任意目录创建docker-compose.yaml文件,写入以下内容:
1 | version: "3.0" |
在当前目录下执行以下命令:
1 | docker-compose pull # 强制拉取最新镜像 |
后续有新版本后也是在同样位置执行以上两个命令即可,然后配置反代,将本地的127.0.0.1:7003端口映射到域名上,即可正常打开域名访问了。
使用
初始的管理员账号及密码分别为:
- 账号:
admin@certimate.fun - 密码:
1234567890
登录进去后,可以在右上角设置中修改登录账号和登录密码,这里不再细讲。
可以看到以上图片中,除了账号和登录密码,还有一个是证书颁发机构。
Let's Engrypt不需要填写任何信息即可直接保存,点击保存即为使用该证书。ZeroSSL需要申请EAB KID和EAB HMAC Key,这里我们先通过一下地址进行注册并登录到控制面板,当然如果有账户直接登录即可:登录成功后,点击进入ZeroSSL开发者地址并在下面的
EAB Credentials for ACME Clients点击Generate按钮,一切正常的话,就可以看到两个值了,我们填入Certimate并保存即可。Google SSL虽然也需要填写EAB,但是由于国内无法正常访问,所以这里我不讲解具体怎么生成,如果有需要,大家可以看以下文章:
添加并选择了证书颁发机构,就可以开始部署了,点击左侧菜单的工作流,新建工作流,并选择标准模板,进入后可以看到一套标准的流程。
只需要按照要求一步步配置即可,在开始中可以设置是定时任务还是手动执行,申请部分需要选择DNS服务商才可以正确申请,邮箱填写注册ZeroSSL的账户邮箱即可。
v0.3.0中,不要创建并行分支,可以串行执行所有任务,可以创建结果分支,作者已经知晓该bug,在后面的版本将会解决,目前基本不影响使用。
部署配置
这里我简单介绍一下我所用的部署配置,我需要的部署配置列表如下:
- 宝塔面板
- 兰亭雷池
- 多吉云CDN
ADGuard Home加密证书
大家可以按照需求自行跳转查看。
宝塔面板
在设置中,添加API接口,设置好域名白名单,也就是certimate所部署服务器的公网IP,通过API达到更新证书的目的,这里我推荐将宝塔面板使用Nginx的反向代理代理到一个域名中,并绑定SSL,防止因为宝塔自身SSL安全机制导致无法正确请求接口,注意反向代理的源地址协议,可能是HTTPS,自行尝试即可。
获取到了API地址,在Certimate左侧授权管理中,添加宝塔面板,地址推荐反代后的https地址,然后在对应的工作流中,添加宝塔面板,网站类型按照情况选择,这里我选择PHP,并填入网站名称,通常就是你的网站域名,可以在网站页面查看。
如果一切顺利的话,宝塔面板就可以正常部署了。
兰亭雷池
雷池同以上宝塔面板,建议使用自带的反向代理将雷池控制面板映射到公网域名上,既加固了安全性,又更加方便访问,同时可以通过雷池自带的防御给雷池页面添加人机验证。
然后在系统设置中即可看到API Token:
获取到之后,填写到Certimate的授权管理中,然后返回到工作流,添加雷池部署,可以看到,还需要一个证书ID的选项,我们返回到雷池面板,点击证书管理,此时点击F12记录网络请求,点击一个证书的编辑页面,随意修改证书和私钥,一定不要是正确的,胡写即可,然后点击提交,如下图所示:
在控制台->网络中可以找到一个报错的,点击载荷,即可看到该证书的ID,如法炮制,即可获得所有证书的ID,然后在工作流中,我们选择替换指定证书方式,即可完成雷池的自动部署。
多吉云
多吉云并没有什么难点,只需要在用户中心,密钥管理中,获取AccessKey和SecretKey,然后一个个网站依次更新即可,注意,一个部署工作仅能部署一个网站,所以可以创建多个工作来实现所有的部署。
ADGuard Home
ADGuard Home是自建免广告DNS的工具,由于我需要在安卓手机上替换私人DNS,所以只能使用ZeroSSL的证书才能使安卓信任,在ADGuard Home的加密设置中,我们可以看到,证书可以通过本地文件进行部署,所以我们想更新证书时,只需要通过替换文件,即可达到证书的更新。
修改docker-compose.yaml文件,添加挂载路径:
1 | networks: |
然后在当前目录下创建./data/cert,将证书放到以下目录下,重新构建docker,然后进入加密设置中,用文件地址来设置证书。
然后在certimate中,使用SSH部署的方式,即可替换对应文件到指定目录下,实现证书的更新。
至此,本站所有服务均接入Certimate证书更新
总结
随着SSL证书有效期的缩短,站长们面临着频繁更新证书的挑战。Certimate的出现,为此提供了有效的解决方案。作为一款开源的SSL证书管理工具,Certimate能够自动申请、部署和续期证书,简化了证书管理流程,确保网站的持续安全。其私有部署的特性,保障了数据的安全性和隐私性。同时其低占用率,使其几乎没有运维难度,门槛也大幅降低。
通过使用Certimate,站长们可以将更多精力投入到网站运营和内容优化上,而无需担心证书管理的繁琐事务。这使得网站维护更加高效,安全性得到了保障,同时,站长也有了更多的时间创作更加优质的文章。
每日一图
图片来自哲风壁纸
























