自从2023年开始,免费的SSL证书有效期逐渐都变成了三个月时长,从那之后,换证书就变成了一件麻烦事,经常会因为忘记而导致站点无法访问,于是市面上涌现出了一大批的自动化工具,比如ACME.shCertbot等工具,但是或多或少配置起来都比较麻烦,有较高的门槛。

2024年8月21日,Certimate工具秉持着可视化申请并部署证书的原则,创建了仓库,经过了一千多次的提交,目前v0.3已经较为成熟,虽然稍微有些小问题,但是不影响其功能性的强大。这篇文章就给大家介绍一下,如何去使用Certimate工具自动化申请并部署证书到指定平台上。

简介

申请并部署证书的过程虽然不复杂,但是对于很多服务的站长来说,一个个部署的话还是很麻烦的,Certimate可以通过不同平台提供的API,自动化检测域名到期时间,并自动申请部署,解放了双手,同时不会出现由于忘记续期导致的网站无法访问问题。

内存占用

由于Certimatego语言开发,内存占用极少,正常情况下仅会占用20MB左右的内存,几乎所有服务器均能无压力的运行这个服务,而同样功能的Certd项目,可能是因为定位不同,添加了多用户等其他功能,导致内存占用远超Certimate项目,正常情况下会占用150MB左右的内存,所以如果是个人使用,我个人更加建议使用Certimate

支持平台

Certimate 项目支持部署的平台/服务列表如下(Markdown 格式):

类别平台 / 服务
本地部署本地部署
SSH 部署SSH 部署
WebhookWebhook
KubernetesSecret
阿里云对象存储 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
AWSCloudFront
CacheFlyCacheFly
CdnflyCdnfly
EdgioApplications
Gcore内容分发网络 CDN
宝塔面板网站、面板
雷池雷池

可见支持的平台较为丰富,感谢社区与作者贡献,对比而言,同类型产品 Certd 的宝塔部署需购买专业版才可使用 。

证书种类

Certimate 支持三种证书,分别是 Let's EncryptZeroSSLGoogle Trust Services,三者在国内直连、安卓兼容性、签发机构等方面存在差异 ,具体对比如下:

对比项Let’s EncryptZeroSSLGoogle Trust Services
国内直连可直连,但部分地区偶尔不稳定国内直连稳定需要国外环境
安卓兼容性部分旧版安卓系统不支持 DST Root CA X3正常正常
签发机构ISRG (Internet Security Research Group)Sectigo 提供支持Google Trust Services
根证书ISRG Root X1 (兼容性受限于 DST Root CA X3)Sectigo RSA / ECCGlobalSign Root CA
证书有效期90 天90 天90 天
自动续签需 ACME 客户端(如 certbot)支持 ACME,官方提供 API支持 ACME,Google Cloud 生态内无缝集成
适用场景个人网站、博客、小型项目国内企业、个人站点、API 服务海外服务器、大型企业、Google 生态
推荐用户国内用户次选国内用户首选海外服务器首选
优点免费,开源社区支持广泛兼容性更好,国内直连稳定Google 官方,信誉度高,全球兼容性最佳
缺点安卓旧版本兼容性问题需国外服务器,国内网络环境难以获取

可根据自身需求,如国内使用选 ZeroSSl ,有国外环境选 GoogleLet's Encrypt 也可放心用 。

通知方式

如果证书到期了,但是你的工作流没有正常执行,Certimate还会通过各种方式向你提醒,支持的通知渠道如下:1000027193.jpg

教程

下面我们就开始讲解如何使用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 KIDEAB HMAC Key,这里我们先通过一下地址进行注册并登录到控制面板,当然如果有账户直接登录即可,登录成功后,点击进入ZeroSSL开发者地址并在下面的EAB Credentials for ACME Clients点击Generate按钮,一切正常的话,就可以看到两个值了,我们填入Certimate并保存即可。
censored_image.png
3.Google SSL虽然也需要填写EAB,但是由于国内无法正常访问,所以这里我不讲解具体怎么生成,如果有需要,大家可以看以下文章:https://blog.zhheo.com/p/a4759pr7.html

添加并选择了证书颁发机构,就可以开始部署了,点击左侧菜单的工作流,新建工作流,并选择标准模板,进入后可以看到一套标准的流程。
1000027195.jpg
只需要按照要求一步步配置即可,在开始中可以设置是定时任务还是手动执行,申请部分需要选择DNS服务商才可以正确申请,邮箱填写注册ZeroSSL的账户邮箱即可。

部署配置

这里我简单介绍一下我所用的部署配置,我需要的部署配置列表如下:
宝塔面板
多吉云

宝塔面板

在设置中,添加API接口,设置好域名白名单,也就是certimate所部署服务器的公网IP,通过API达到更新证书的目的,这里我推荐将宝塔面板使用Nginx的反向代理代理到一个域名中,并绑定SSL,防止因为宝塔自身SSL安全机制导致无法正确请求接口,注意反向代理的源地址协议,可能是HTTPS,自行尝试即可。
1000027197.jpg

获取到了API地址,在Certimate左侧授权管理中,添加宝塔面板,地址推荐反代后的https地址,然后在对应的工作流中,添加宝塔面板,网站类型按照情况选择,这里我选择PHP,并填入网站名称,通常就是你的网站域名,可以在网站页面查看。
1000027199.jpg

多吉云

多吉云并没有什么难点,只需要在用户中心,密钥管理中,获取AccessKey和SecretKey,然后一个个网站依次更新即可,注意,一个部署工作仅能部署一个网站,所以可以创建多个工作来实现所有的部署。

总结

随着SSL证书有效期的缩短,站长们面临着频繁更新证书的挑战。Certimate的出现,为此提供了有效的解决方案。作为一款开源的SSL证书管理工具,Certimate能够自动申请、部署和续期证书,简化了证书管理流程,确保网站的持续安全。其私有部署的特性,保障了数据的安全性和隐私性。同时其低占用率,使其几乎没有运维难度,门槛也大幅降低。

通过使用Certimate,站长们可以将更多精力投入到网站运营和内容优化上,而无需担心证书管理的繁琐事务。这使得网站维护更加高效,安全性得到了保障,同时,站长也有了更多的时间创作更加优质的文章。