Loading...

文章背景图

certd:全自动 SSL 证书申请与多平台部署守护进程部署指南

2026-10-22
0
- 字
- 分钟

CertD 是一个帮助你全自动申请和部署 SSL 证书的工具,后缀 D 取自 Linux 守护进程的命名风格,意为"证书守护进程"。它不仅能自动化证书申请,还能把申请好的证书自动部署到服务器、阿里云、腾讯云等平台,让你的证书永不过期。

一、项目官方信息

项目 信息
GitHub 仓库 https://github.com/certd/certd
在线配置界面 https://certd.docmirror.cn/
开源协议 AGPL-3.0
主要语言 TypeScript / JavaScript(约 66.9%)
Star 数 约 5.1k
证书提供商 Let's Encrypt

CertD 的核心能力包括:全自动申请证书、全自动部署证书(支持服务器上传部署、阿里云、腾讯云等)、可与 CI/CD 工具结合使用。申请过程遵循 ACME 协议,目前域名验证仅支持 dns-01 方式(通过给域名添加 TXT 解析记录验证所有权,泛域名证书只能用这种方式)。免费证书有效期 90 天,到期前 20 天会自动重新申请并重新部署。

二、官方图片

第一步:填写域名(支持把多个域名打到同一张证书上)

填写域名

第二步:配置证书详细信息

配置证书信息

第三步:配置证书部署流程

配置部署流程

三、环境要求

  • 操作系统:任意可运行 Node.js 的系统(Linux / macOS / Windows)。
  • 运行环境:Node.js(从 https://nodejs.org/zh-cn/ 安装)。
  • 权限:能通过 DNS 服务商 API 添加 TXT 记录(阿里云、腾讯云 DNSPod 等)。
  • 部署目标:阿里云 CDN/CLB、腾讯云 DNS/CLB/TKE-ingress,或自有服务器 SSH 上传权限。
  • 不需要开放 80/443 端口(dns-01 验证不依赖网站)。

四、完整部署步骤

1. 环境准备:安装 Node.js

从官网 https://nodejs.org/zh-cn/ 安装 LTS 版本,安装后确认:

node -v
npm -v

2. 通过在线 UI 生成 Node 项目

打开在线配置界面:https://certd.docmirror.cn/

第一步:填写域名。 先填域名,支持把多个域名打到一张证书上(如 example.com 和 www.example.com)。

第二步:配置证书详细信息。 填写邮箱、证书有效期、密钥类型等信息。

第三步:配置证书部署流程。 选择部署目标,例如"部署到阿里云 CDN",并填入对应的云账号 API 密钥。

配置完成后,点击"导出"按钮,导出一个 Node 项目压缩包。

3. 安装依赖并运行

解压导出的压缩包,在项目目录执行:

npm install
npm run certd

程序会自动通过 DNS 验证域名所有权、向 Let's Encrypt 申请证书,然后执行你配置好的部署流程(如上传到阿里云、部署到 CDN)。

4. 查看执行效果

生成的证书默认存放在:

~/.certd/${email}/certs/${domain}/current

运行日志示例:

[2021-01-08T16:15:04.681] [INFO] certd - 任务完成
[2021-01-08T16:15:04.682] [INFO] certd - 【更新证书】--------------------------------------- [success]
  证书申请成功
[2021-01-08T16:15:04.682] [INFO] certd - 【流程1-部署到阿里云CDN】---------------------------- [success] 执行成功
[2021-01-08T16:15:04.682] [INFO] certd -    └【上传到阿里云】-------------------------------- [success] 执行成功
[2021-01-08T16:15:04.682] [INFO] certd -    └【部署证书到CDN】------------------------------- [success] 执行成功

5. 自动续期

ACME 本身没有"续期"概念,所谓续期就是按全套流程重新申请一张新证书再重新部署。每天定时运行即可:当距离证书过期日还有 20 天时,程序会自动重新申请证书并执行部署任务。

证书的部署任务执行后会记录结果,已经成功过的不会重复执行。如果临时需要把证书部署到其他地方,直接追加部署任务后再次运行即可。

五、使用方法

与 Jenkins(CI/CD)集成

把导出的 Node 项目提交到内网或私有 Git 仓库(由于包含敏感信息,不要提交到公开仓库),然后新建 Jenkins 任务:

  1. 选择构建"自由风格"任务;
  2. 配置 cert-run 项目的 Git 地址;
  3. 构建触发器配置为 H 3 * * *,每天凌晨 3 点到 4 点之间执行一次;
  4. 构建环境勾选"Provide Node & npm bin/ folder to PATH",提供 Node.js 运行环境(没有该选项需安装 Node.js 插件);
  5. 构建执行 shell:
npm install --production   # 执行过一次之后可注释掉,加快执行速度
npm run post
  1. 构建后操作配置邮件通知,执行失败时收到邮件。

支持的部署插件类型

云平台 插件 type 用途
阿里云 uploadCertToAliyun 上传证书到阿里云证书服务
阿里云 deployCertToAliyunCDN 部署到阿里云 CDN
阿里云 deployCertToAliyunCLB 部署到阿里云 CLB 负载均衡
腾讯云 uploadCertToTencent 上传证书到腾讯云
腾讯云 deployCertToTencentDNS 部署到腾讯云 DNSPod
腾讯云 deployCertToTencentCLB 部署到腾讯云 CLB
腾讯云 deployCertToTencentTKEIngress 部署到腾讯云 TKE Ingress

DNS 验证接口目前支持阿里云、腾讯云 DNSPod 等授权提供者。

六、常见问题 FAQ

1. 为什么泛域名证书申请不了? CertD 目前域名验证仅支持 dns-01 方式,泛域名(如 *.example.com)只能通过 dns-01 验证。按 UI 里的提示配置 DNS 服务商的 API 密钥即可。

2. 证书到期了会自动续吗? 会。每天定时运行程序,当距离过期日还有 20 天时,会自动重新申请证书并重新执行部署流程。建议配合 cron 或 Jenkins 每日任务运行。

3. 可以把项目上传到 GitHub 公开仓库吗? 不可以。导出的 Node 项目里包含云账号 API 密钥等敏感信息,只能提交到内网或私有 Git 仓库。

4. 证书文件保存在哪里? 默认在 ~/.certd/${email}/certs/${domain}/current 目录下,其中 ${email} 是你配置的 ACME 账户邮箱,${domain} 是证书域名。

5. 临时想把证书部署到新平台怎么办? 直接在 UI 导出时追加一个部署任务(或在项目配置里追加 deploy 插件),再次运行即可。已成功过的部署任务不会重复执行,不会影响已有平台。

6. 部署到 CDN 后多久生效? 证书上传到云平台证书服务后,部署插件会调用对应云产品 API 把证书绑定到 CDN/CLB 实例上,通常几分钟内生效,具体以云厂商缓存刷新时间为准。

七、跳转链接

评论交流

文章目录