自从2023年开始,免费的SSL证书有效期逐渐都变成了三个月时长,从那之后,换证书就变成了一件麻烦事,经常会因为忘记而导致站点无法访问,于是市面上涌现出了一大批的自动化工具,比如ACME.sh
、Certbot
等工具,但是或多或少配置起来都比较麻烦,有较高的门槛。
2024年8月21日,Certimate工具秉持着可视化申请并部署证书的原则,创建了仓库,经过了一千多次的提交,目前v0.3已经较为成熟,虽然稍微有些小问题,但是不影响其功能性的强大。这篇文章就给大家介绍一下,如何去使用Certimate
工具自动化申请并部署证书到指定平台上。
简介
申请并部署证书的过程虽然不复杂,但是对于很多服务的站长来说,一个个部署的话还是很麻烦的,Certimate
可以通过不同平台提供的API,自动化检测域名到期时间,并自动申请部署,解放了双手,同时不会出现由于忘记续期导致的网站无法访问问题。
内存占用
由于Certimate
由go
语言开发,内存占用极少,正常情况下仅会占用20MB左右的内存,几乎所有服务器均能无压力的运行这个服务,而同样功能的Certd
项目,可能是因为定位不同,添加了多用户等其他功能,导致内存占用远超Certimate
项目,正常情况下会占用150MB
左右的内存,所以如果是个人使用,我个人更加建议使用Certimate
。
支持平台
Certimate
项目支持部署的平台/服务列表如下(Markdown 格式):
类别 | 平台 / 服务 |
---|---|
本地部署 | 本地部署 |
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 Trust Services
,三者在国内直连、安卓兼容性、签发机构等方面存在差异 ,具体对比如下:
对比项 | 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
,Let's Encrypt
也可放心用 。
通知方式
如果证书到期了,但是你的工作流没有正常执行,Certimate
还会通过各种方式向你提醒,支持的通知渠道如下:
教程
下面我们就开始讲解如何使用Certimate
啦!这部分我将分成两部分,一部分为部署和简单使用教程,另一部分为自动部署配置教程,下面我们先开始部署和简单使用教程。
部署
这里我选择最简单的docker-compose
方式进行部署,在服务器的任意目录创建docker-compose.yaml
文件,写入以下内容:
version: "3.0"
services:
certimate:
image: usual2970/certimate:latest # usual2970/certimate:v0.3.0-alpha.10
container_name: certimate_server
ports:
- 7003:8090
volumes:
- ./data:/app/pb_data
restart: unless-stopped
在当前目录下执行以下命令:
docker-compose pull # 强制拉取最新镜像
docker-compose up -d # 根据配置创建容器
后续有新版本后也是在同样位置执行以上两个命令即可,然后配置反代,将本地的127.0.0.1:7003
端口映射到域名上,即可正常打开域名访问了。
使用
初始的管理员账号及密码分别为:
账号:admin@certimate.fun
密码:1234567890
登录进去后,可以在右上角设置中修改登录账号和登录密码,这里不再细讲。
证书颁发机构:
1.Let's Engrypt:不需要填写任何信息即可直接保存,点击保存即为使用该证书。
2.ZeroSSL:需要申请EAB KID
和EAB HMAC Key
,这里我们先通过一下地址进行注册并登录到控制面板,当然如果有账户直接登录即可,登录成功后,点击进入ZeroSSL开发者地址并在下面的EAB Credentials for ACME Clients
点击Generate
按钮,一切正常的话,就可以看到两个值了,我们填入Certimate并保存即可。
3.Google SSL虽然也需要填写EAB,但是由于国内无法正常访问,所以这里我不讲解具体怎么生成,如果有需要,大家可以看以下文章:https://blog.zhheo.com/p/a4759pr7.html
添加并选择了证书颁发机构,就可以开始部署了,点击左侧菜单的工作流,新建工作流,并选择标准模板,进入后可以看到一套标准的流程。
只需要按照要求一步步配置即可,在开始中可以设置是定时任务还是手动执行,申请部分需要选择DNS服务商才可以正确申请,邮箱填写注册ZeroSSL
的账户邮箱即可。
部署配置
这里我简单介绍一下我所用的部署配置,我需要的部署配置列表如下:宝塔面板
多吉云
宝塔面板
在设置中,添加API接口,设置好域名白名单,也就是certimate
所部署服务器的公网IP,通过API达到更新证书的目的,这里我推荐将宝塔面板使用Nginx
的反向代理代理到一个域名中,并绑定SSL,防止因为宝塔自身SSL
安全机制导致无法正确请求接口,注意反向代理的源地址协议,可能是HTTPS
,自行尝试即可。
获取到了API地址,在Certimate
左侧授权管理中,添加宝塔面板,地址推荐反代后的https
地址,然后在对应的工作流中,添加宝塔面板,网站类型按照情况选择,这里我选择PHP,并填入网站名称,通常就是你的网站域名,可以在网站页面查看。
多吉云
多吉云并没有什么难点,只需要在用户中心,密钥管理中,获取AccessKey和SecretKey,然后一个个网站依次更新即可,注意,一个部署工作仅能部署一个网站,所以可以创建多个工作来实现所有的部署。
总结
随着SSL证书有效期的缩短,站长们面临着频繁更新证书的挑战。Certimate
的出现,为此提供了有效的解决方案。作为一款开源的SSL证书管理工具,Certimate
能够自动申请、部署和续期证书,简化了证书管理流程,确保网站的持续安全。其私有部署的特性,保障了数据的安全性和隐私性。同时其低占用率,使其几乎没有运维难度,门槛也大幅降低。
通过使用Certimate
,站长们可以将更多精力投入到网站运营和内容优化上,而无需担心证书管理的繁琐事务。这使得网站维护更加高效,安全性得到了保障,同时,站长也有了更多的时间创作更加优质的文章。