Certd官网:https://certd.docmirror.cn
在现代网站服务中,HTTPS 已成为保障通信安全的基础组件;为了简化证书申请与更新流程,Certd 提供了自动化的证书管理能力,并支持多家主流证书颁发机构;
本文将详细介绍如何通过 Docker 快速部署 Certd,实现 HTTPS 证书的自动申请与更新;
安装并启动服务
1 | # 创建用来存放Certd相关的 |
我自己的docker-compose.yaml文件如下:
1 | version: '3.3' # 兼容旧版docker-compose |
访问 Certd 面板
部署完成后,可通过以下地址访问 Certd:
1 | 默认账号密码: |
首次登录后请务必修改管理员密码;
配置自动签发证书
Certd 支持多种 DNS API 接入方式(阿里云、腾讯云、Cloudflare等),根据你的域名服务商选择配置方法;详细配置方式可以参考官方文档的 DNS API 配置指南;本文以不需要 API 的 CNAME 方式、腾讯云与CloudFlare三个例子进行说明。
在管理页面中点击左边的证书自动化流水线->创建证书流水线,其中域名你自己填写你的域名,同时支持通配符,比如你的域名是abc.abc,那么可以填写abc.abc与*.abc.abc,这样申请得到的证书可以匹配到你的主域名与所有的二级子域名,比较方便(但不代表安全,如果你有额外精力的话,还是推荐你不同的域名单独申请证书)。
设置通知邮件,如果没有配置邮箱的话,需要先去配置一下,在管理页面中点击左边的设置->通知设置->添加,其中通知类型选择电子邮件,收件人邮箱填写自己的邮箱,如果没有配置邮件服务器则需要点击页面中的“配置邮件服务器”进行配置,具体配置方法可以看官方文档。
域名验证方式,这一部分请看下面CNAME方式、腾讯云以及Cloudflare。
CNAME方式
- CNAME是最简单的方式,我们在
域名验证方式中选择CNAME代理验证,在其下方的域名验证配置中,会出现对应的信息,我们需要关注的是主机记录与请设置CNAME记录对应的内容,我们将其复制下来,一会要用。 - 进入你的域名管理页面,创建新解析,类型选择CNAME,名称填写
主机记录对应的内容,目标或者值填写请设置CNAME记录对应的内容,然后创建即可。 - 等待几分钟让DNS解析生效,然后回到certd的这个页面,点击右边的
点击验证按钮,验证通过之后即可进行下一步操作.
腾讯云
- 腾讯云与Cloudflare使用的都是DNS直接验证方式,所以我们需要更改
域名验证方式为DNS直接验证,DNS解析服务商选择腾讯云,然后点击DNS授权解析。 - 然后我们添加授权,名称你自己取,其中
secretId和secretKey需要去腾讯云的密钥管理创建,我们新建密钥即可,但要注意secretKey只会出现一次,我们要把他保存下来填写到certd对应的地方。授权添加完成之后我们可以点击测试,如果返回正常的结果,那么就是创建成功了,我们点击确定保存即可。
Cloudflare
- 前面的操作和腾讯云一致,只是我们把服务商改为Cloudflare即可。
- 接下来进行令牌获取,访问用户API令牌页面,点击创建令牌->创建自定义令牌。
- 权限部分点击添加更多,我们一共需要两个权限,第一个选择
区域-区域-编辑,第二个是区域-DNS-编辑。 - 区域资源可以默认,也可以自定义,比如改为
包括-特定区域-你的单个域名。
- 权限部分点击添加更多,我们一共需要两个权限,第一个选择
- 然后我们一直下一步,直到创建好令牌即可,在下面的页面中,复制我们的令牌信息,填写到certd对应的位置中,测试并保存后,在授权中选择我们新建的授权即可。

- 证书颁发机构,现在国内的很多服务器,在经历了一些原因之后,都开始封禁非大陆的连接了,所以如果你的服务器在国内,我推荐使用litessl,反过来,则选择默认的Let’s Encrypt即可。因为Let’s Encrypt不需要授权,所以接下来主要说一下litessl。
- 进入FreeSSL官网,根据引导注册一个账号
- 进入ACME账号管理页面,点击新增EAB,然后取个名字,保存好这个信息,也是只显示一次的
- 然后在certd的EAB授权页面新增一个授权即可,内容填写上面步骤保存的信息
然后我们点击确定即可创建好对应的证书流水线,我们点击手动触发即可进行证书的申请,如果失败了,可以点击证书申请任务,能看到日志,交给AI判断就好,按一般的经验来说,失败个两三次,然后就成功了。
申请好证书,我们可以给caddy或者Nginx使用,在流水线证书详情中点击编辑,在证书申请阶段后面添加任务->添加步骤->搜索ssh,可以选择部署证书到SSH主机,证书格式一般选择pem/crt即可,主机登录配置,就是那几样,地址端口用户名密码或者密钥,在此不过多赘述,值得说明的是
后置命令,我们可以执行比如systemctl restart caddy这样的命令,重启需要证书才能运行的服务,这样在自动化流程中,就不需要我们去操心了。