certd 使用操作指南 - SSL 证书自动管理
certd 使用操作指南 - SSL 证书自动管理
Lannister什么是 certd?
certd 是一款开源、免费、全自动的 SSL 证书管理工具。它能做到:
- 自动申请证书(支持 Let’s Encrypt / Google / ZeroSSL)
- 自动续期(证书 90 天有效期,certd 自动提前续)
- 自动部署(支持 nginx、云厂商、腾讯云、宝塔、群晖等 100+ 部署目标)
- 支持通配符证书(一个证书管多个子域名)
- 支持多数据库(SQLite / MySQL / PostgreSQL)
- 私有化部署,数据加密存储
核心价值:装上 certd 之后,你再也不会收到”证书过期”的告警邮件。
我的部署实例
我把 certd 部署在云厂商 ECS(your.server.ip)上,管理着 yourdomain.com 的 4 个子域名证书。
| 项目 | 值 |
|---|---|
| 部署位置 | /usr/local/apps/certd |
| Web UI | https://certd.yourdomain.com |
| 端口 | 7001(HTTP)/ 7002(HTTPS) |
| 数据库 | SQLite |
| systemd | certd.service(开机自启) |
| 内存占用 | ~160MB |
安装步骤(从零开始)
1. 服务器准备
1 | # 安装基础工具 |
2. 克隆 certd 源码
1 | cd /usr/local/apps |
3. 修改工作区配置(只编译 server)
1 | cat > pnpm-workspace.yaml << 'EOF' |
4. 安装依赖 + 构建
1 | pnpm install --registry https://registry.npmmirror.com |
5. 下载前端 UI
1 | # 自动获取版本号 |
6. 启动(先用 nohup 测试)
1 | nohup env NODE_OPTIONS="--max-old-space-size=600" NODE_ENV=production \ |
访问 http://your_server_ip:7001,看到登录页就成功了。
7. 写 systemd unit
1 | # /etc/systemd/system/certd.service |
1 | systemctl daemon-reload |
8. 用 nginx 反向代理
1 | # /etc/nginx/conf.d/certd.conf |
首次登录配置
1. 改默认密码
- 浏览器打开
https://certd.yourdomain.com - 用默认账号登录:admin / 123456
- 立即改密码(强烈建议),长度 12+ 字符,包含大小写+数字+符号
- 启用 2FA(设置 → 两步验证):用 Authenticator 类 APP 扫码
2. 配置通知(可选但推荐)
设置 → 通知渠道 → 添加:
- 邮件:填 SMTP 服务器、发件人、收件人
- Webhook:钉钉/飞书/企微机器人 URL
- anpush:推送服务
证书即将过期、续签成功、续签失败都会通过这些渠道通知你。
创建第一条流水线(核心)
1. 添加授权(以云厂商 DNS 为例)
授权管理 → 添加授权:
- 类型:云厂商 DNS
- 名称:
cloud-dns-prod - AccessKey ID:(在云厂商控制台 RAM 访问控制创建)
- AccessKey Secret:(同上,只给 DNS 权限)
2. 创建证书流水线
流水线管理 → 新建:
- 名称:
yourdomain-certs - 域名:
yourdomain.comwww.yourdomain.comclaw.yourdomain.comcertd.yourdomain.com
- DNS 授权:选刚才的
cloud-dns-prod - 验证方式:DNS-01(推荐,能签通配符)
- 证书商:Let’s Encrypt
- 部署任务:
- 类型:主机部署
- 主机:localhost
- 路径:
/etc/nginx/certd/ - 部署后命令:
nginx -s reload
- 触发时机:
- 启用定时:✅
- Cron:
0 3 */7 * *(每 7 天凌晨 3 点跑一次)
3. 测试运行
流水线详情 → 立即运行。观察日志:
- 申请 → 验证 → 下载 → 部署 → 重启 nginx
- 5 步都成功就完事了
流水线任务类型速查
| 任务类型 | 用途 |
|---|---|
| 申请证书 | 从 Let’s Encrypt 申请 |
| DNS 验证 | DNS-01 / HTTP-01 两种 |
| 部署到主机 | 通过 SSH 推送到其他服务器 |
| 部署到云厂商 CDN | 自动同步到云厂商 CDN |
| 部署到 nginx | 写证书文件 + reload |
| 通知 | 邮件/钉钉/webhook |
常见问题
Q: certd 和 certbot 能共存吗?
A: 能。certd 默认不会碰 /etc/letsencrypt/,它写到自己的目录。两者互不干扰。
Q: 第一次跑流水线,DNS 验证要等多久?
A: DNS-01 一般 1-5 分钟,HTTP-01 一般几秒。
Q: 证书快要过期了 certd 会提醒吗?
A: 会的。如果你配了通知渠道,证书到期前 30/7/1 天会发提醒。
Q: 删了 certd,证书怎么办?
A: 不会自动失效,但 certd 不会续签,证书到期后网站会爆掉。建议删除前先在 certd 里把流水线停掉,回到 certbot 或手动续签。
Q: 一个流水线能管多个域名吗?
A: 能。添加多个域名(支持通配符),一次性申请一个多 SAN 的证书。
监控与运维
1 | # 看 certd 状态 |
我的实际流水线
最终我在 certd 里建了 2 条流水线:
yourdomain-certs:管yourdomain.com+ 3 个子域名的 4 域名证书yourdomain-wildcard:管*.yourdomain.com通配符证书(备用)
每条流水线配 cron 每 7 天跑一次,证书在到期前 30 天自动续签,我已经半年没手动碰过证书了。
总结
certd 是个人/小团队服务器装一次、忘一辈子的工具。配置 30 分钟,省下未来 N 年的证书运维时间。
如果你也用 certd,欢迎留言交流 👋
评论
匿名评论隐私政策
✅ 你无需删除空行,直接评论以获取最佳展示效果







