CertD
CertD 是一个免费全自动申请和部署SSL证书的工具。
后缀D取自linux守护进程的命名风格,意为证书守护进程。
一、特性
本项目不仅支持证书申请过程自动化,还可以自动化部署证书,让你的证书永不过期。
全自动申请证书(支持阿里云、腾讯云、华为云注册的域名) 全自动部署证书(目前支持服务器上传部署、部署到阿里云、腾讯云等) 支持通配符域名 支持多个域名打到一个证书上 邮件通知 证书自动更新 免费、免费、免费(阿里云单个通配符域名证书最便宜也要1800/年)
二、在线体验
官方Demo地址,自助注册后体验
https://certd.handsfree.work/
注意数据将不定期清理,生产使用请自行部署
包含敏感信息,务必自己本地部署进行生产使
三、本地docker部署
1. 安装docker、docker-compose
1.1 安装docker
https://docs.docker.com/engine/install/
1.2 安装docker-compose
https://docs.docker.com/compose/install/linux/
2. 下载docker-compose.yaml文件
mkdir certd
cd certd
wget https://raw.githubusercontent.com/certd/certd/v2/docker/run/docker-compose.yaml
# 或者使用gitee地址
wget https://gitee.com/certd/certd/raw/v2/docker/run/docker-compose.yaml
# 根据需要修改里面的配置
# 1.修改镜像版本号
# 2.配置数据保存路径
# 3.配置certd_auth_jwt_secret
vi docker-compose.yaml
镜像版本号与release版本号同步:
https://github.com/certd/certd/releases
3. 运行
# 如果docker compose是插件化安装
export CERTD_VERSION=1.20.9
docker compose up -d
#如果docker compose是独立安装
export CERTD_VERSION=1.20.9
docker-compose up -d
4. 访问
http://your_server_ip:7001
默认账号密码:admin/123456 记得修改密码
5. 升级
修改版本号,重新运行 docker compose up -d 即可
数据存在/data/certd目录下,不用担心数据丢失
四、使用教程
本案例演示,如何配置自动申请证书,并部署到阿里云CDN,然后快要到期前自动更新证书并重新部署。
准备工作
已部署CertD服务(可官方Demo自助注册体验 https://certd.handsfree.work/ )
注册一个域名(支持阿里云万网、腾讯云DnsPod、华为云)
准备好以上DNS解析服务商的AccessKey 和 AccessSecret
证书要部署的目标(可选,单纯当成证书申请工具用也不错)
自动化流水线创建
1. 创建证书申请部署流水线
需要添加域名的DNS解析服务商的授权
填写accessKey和accessSecret
流水线创建成功
2. 任务详情界面
到这一步申请证书就已经配置完成了。点击手动触发,就可以申请证书了。
接下来演示如何添加部署任务
3. 添加部署到阿里云CDN任务
点击添加任务
选择任务类型
填写任务参数
点击确定,部署到CDN任务配置成功
4. 添加部署到服务器主机任务
点击新任务,弹出添加任务界面
先选择上传到主机任务
填写任务参数,比如证书保存路径
需要添加主机ip、用户名、密码,只需添加一次,后续其他任务可以复用
然后添加第二个任务,执行主机命令,部署证书
选择执行脚本命令任务
编写脚本,选择之前添加的主机
点击确定,部署到主机任务配置成功
5. 手动触发执行任务,测试一下
点击任务可以查看状态和日志
这里执行失败,可以查看错误日志
修改正确后,重新执行
可以看到前面执行过的就会跳过,不会重复执行
6. 查看证书部署效果
可以看到证书已经部署到CDN成功
也可以手动下载证书
7. 定时触发
配置定时触发,以后每天定时执行
cron格式,例如: 0 0 3 * * * 表示每天凌晨3点执行
到期前20天会自动申请新证书并部署,没到期前不会重复申请
8. 邮件通知
可以接收邮件通知(支持时机:开始、成功、失败、失败转成功)
需要配置邮件服务器
五、一些说明
本项目ssl证书提供商为letencrypt
申请过程遵循acme协议
需要验证域名所有权,一般有两种方式(目前本项目仅支持dns-01)
http-01:在网站根目录下放置一份txt文件
dns-01:需要给域名添加txt解析记录,通配符域名只能用这种方式
证书续期:
实际上acme并没有续期概念。
我们所说的续期,其实就是按照全套流程重新申请一份新证书。
免费证书过期时间90天,以后可能还会缩短,所以自动化部署必不可少
设置每天自动运行,当证书过期前20天,会自动重新申请证书并部署