refactor: doc
148
README.md
|
@ -1,17 +1,44 @@
|
||||||
# CertD
|
# CertD
|
||||||
|
|
||||||
CertD 是一个帮助你全自动申请和部署SSL证书的工具。
|
CertD 是一个免费全自动申请和部署SSL证书的工具。
|
||||||
后缀D取自linux守护进程的命名风格,意为证书守护进程。
|
后缀D取自linux守护进程的命名风格,意为证书守护进程。
|
||||||
|
|
||||||
## 特性
|
## 特性
|
||||||
本项目不仅支持证书申请过程自动化,还可以自动化部署证书,让你的证书永不过期。
|
本项目不仅支持证书申请过程自动化,还可以自动化部署证书,让你的证书永不过期。
|
||||||
|
|
||||||
* 全自动申请证书(支持阿里云、腾讯云、华为云注册的域名)
|
* 全自动申请证书(支持阿里云、腾讯云、华为云注册的域名)
|
||||||
* 全自动部署证书(目前支持服务器上传部署、阿里云、腾讯云等)
|
* 全自动部署证书(目前支持服务器上传部署、部署到阿里云、腾讯云等)
|
||||||
* 支持通配符域名
|
* 支持通配符域名
|
||||||
* 支持多个域名打到一个证书上
|
* 支持多个域名打到一个证书上
|
||||||
|
* 邮件通知
|
||||||
|
* 证书自动更新
|
||||||
|
|
||||||
## 免费证书申请说明
|
|
||||||
|
|
||||||
|
## 快速开始
|
||||||
|
|
||||||
|
官方Demo地址,自助注册后体验
|
||||||
|
|
||||||
|
https://certd.handsfree.work/
|
||||||
|
|
||||||
|
> 注意数据将不定期清理,生产使用请自行部署
|
||||||
|
> 包含敏感信息,务必自行部署进行生产使用
|
||||||
|
|
||||||
|
## 快速开始
|
||||||
|
本案例演示,如何配置每天自动申请证书,并部署到阿里云CDN,然后快要到期前自动更新证书并重新部署
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
[点我查看详细使用步骤演示](./step.md)
|
||||||
|
|
||||||
|
|
||||||
|
## 本地docker部署
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
## 一些说明
|
||||||
|
### 1. 免费证书申请
|
||||||
* 本项目ssl证书提供商为letencrypt
|
* 本项目ssl证书提供商为letencrypt
|
||||||
* 申请过程遵循acme协议
|
* 申请过程遵循acme协议
|
||||||
* 需要验证域名所有权,一般有两种方式(目前本项目仅支持dns-01)
|
* 需要验证域名所有权,一般有两种方式(目前本项目仅支持dns-01)
|
||||||
|
@ -22,119 +49,8 @@ CertD 是一个帮助你全自动申请和部署SSL证书的工具。
|
||||||
* 我们所说的续期,其实就是按照全套流程重新申请一份新证书。
|
* 我们所说的续期,其实就是按照全套流程重新申请一份新证书。
|
||||||
* 免费证书过期时间90天,以后可能还会缩短,所以自动化部署必不可少
|
* 免费证书过期时间90天,以后可能还会缩短,所以自动化部署必不可少
|
||||||
|
|
||||||
|
### 2. 证书续期
|
||||||
|
|
||||||
## 快速开始
|
|
||||||
本案例演示,如何配置自动申请证书,并部署到阿里云CDN,然后快要到期前自动更新证书并重新部署
|
|
||||||
|
|
||||||
|
|
||||||
1. 环境准备
|
|
||||||
安装[nodejs](https://nodejs.org/zh-cn/)
|
|
||||||
|
|
||||||
|
|
||||||
2. 生成node项目
|
|
||||||
|
|
||||||
通过ui生成: https://certd.docmirror.cn/
|
|
||||||
|
|
||||||
开始生成证书,先填写域名,支持将多个域名打到一个证书上
|
|
||||||

|
|
||||||
|
|
||||||
配置证书详细信息
|
|
||||||

|
|
||||||
|
|
||||||
配置证书部署流程
|
|
||||||

|
|
||||||
|
|
||||||
配置好之后,点击导出按钮,导出一个node项目包
|
|
||||||
|
|
||||||
4. 运行
|
|
||||||
将导出的压缩包解压,然后执行如下命令,即可开始申请证书并部署
|
|
||||||
```
|
|
||||||
npm install
|
|
||||||
npm run certd
|
|
||||||
```
|
|
||||||
5. 执行效果
|
|
||||||
生成的证书默认会存储在 `${home}/.certd/${email}/certs/${domain}/current`目录下
|
|
||||||
```
|
|
||||||
[2021-01-08T16:15:04.681] [INFO] certd - 任务完成
|
|
||||||
[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] 执行成功
|
|
||||||
```
|
|
||||||
6. 证书续期
|
|
||||||
实际上没有证书续期的概念,只有重新生成一份新的证书,然后重新部署证书
|
实际上没有证书续期的概念,只有重新生成一份新的证书,然后重新部署证书
|
||||||
所以每天定时运行即可,当证书过期日前20天时,会重新申请新的证书,然后执行部署任务。
|
所以每天定时运行即可,当证书过期日前20天时,会重新申请新的证书,然后自动执行部署任务。
|
||||||
|
|
||||||
7. 其他说明
|
|
||||||
证书的部署任务执行后会记录执行结果,已经成功过的不会重复执行
|
|
||||||
所以当你临时需要将证书部署到其他地方时,直接追加部署任务,然后再次运行即可
|
|
||||||
|
|
||||||
## CI/DI集成与自动续期重新部署
|
|
||||||
集成前,将以上导出的node项目提交到内网git仓库,或者私有git仓库(由于包含敏感信息,不要提交到公开git仓库)
|
|
||||||
|
|
||||||
### jenkins任务
|
|
||||||
1. 创建任务
|
|
||||||
选择构建自由风格的任务
|
|
||||||
|
|
||||||
2. 配置git
|
|
||||||
配置cert-run的git地址
|
|
||||||
|
|
||||||
3. 构建触发器
|
|
||||||
配置 `H 3 * * *` ,每天凌晨3点-4点执行一次
|
|
||||||
|
|
||||||
4. 构建环境
|
|
||||||
勾选 `Provide Node & npm bin/ folder to PATH`,提供nodejs运行环境
|
|
||||||
如果没有此选项,需要jenkins安装`nodejs`插件
|
|
||||||
|
|
||||||
5. 构建
|
|
||||||
执行shell
|
|
||||||
```
|
|
||||||
npm install --production #执行过一次之后,就可以注释掉,加快执行速度
|
|
||||||
npm run post
|
|
||||||
```
|
|
||||||
6. 构建后操作
|
|
||||||
邮件通知
|
|
||||||
配置你的邮箱地址,可以在执行失败时收到邮件通知。
|
|
||||||
|
|
||||||
|
|
||||||
## API
|
|
||||||
先列个提纲,待完善
|
|
||||||
|
|
||||||
参数示例参考:https://gitee.com/certd/certd/blob/master/test/options.js
|
|
||||||
|
|
||||||
### 授权提供者
|
|
||||||
用于dns验证接口调用
|
|
||||||
#### aliyun
|
|
||||||
|
|
||||||
#### dnspod
|
|
||||||
|
|
||||||
### deploy插件
|
|
||||||
部署任务插件
|
|
||||||
#### 阿里云
|
|
||||||
##### 上传到阿里云
|
|
||||||
type = uploadCertToAliyun
|
|
||||||
##### 部署到阿里云DNS
|
|
||||||
type = deployCertToAliyunCDN
|
|
||||||
|
|
||||||
##### 部署到阿里云CLB
|
|
||||||
type = deployCertToAliyunCLB
|
|
||||||
|
|
||||||
#### 腾讯云
|
|
||||||
##### 上传到腾讯云
|
|
||||||
type = uploadCertToTencent
|
|
||||||
|
|
||||||
##### 部署到腾讯云DNS
|
|
||||||
type = deployCertToTencentDNS
|
|
||||||
|
|
||||||
##### 部署到腾讯云CLB
|
|
||||||
type = deployCertToTencentCLB
|
|
||||||
|
|
||||||
##### 部署到腾讯云TKE-ingress
|
|
||||||
type = deployCertToTencentTKEIngress
|
|
||||||
|
|
||||||
|
|
||||||
### 更多部署插件
|
|
||||||
等你来提需求
|
|
||||||
|
|
After Width: | Height: | Size: 68 KiB |
After Width: | Height: | Size: 124 KiB |
After Width: | Height: | Size: 33 KiB |
After Width: | Height: | Size: 67 KiB |
After Width: | Height: | Size: 34 KiB |
After Width: | Height: | Size: 47 KiB |
After Width: | Height: | Size: 82 KiB |
After Width: | Height: | Size: 46 KiB |
After Width: | Height: | Size: 43 KiB |
After Width: | Height: | Size: 50 KiB |
After Width: | Height: | Size: 44 KiB |
After Width: | Height: | Size: 35 KiB |
After Width: | Height: | Size: 38 KiB |
After Width: | Height: | Size: 29 KiB |
After Width: | Height: | Size: 50 KiB |
After Width: | Height: | Size: 72 KiB |
After Width: | Height: | Size: 30 KiB |
After Width: | Height: | Size: 61 KiB |
After Width: | Height: | Size: 66 KiB |
After Width: | Height: | Size: 76 KiB |
After Width: | Height: | Size: 55 KiB |
After Width: | Height: | Size: 28 KiB |
After Width: | Height: | Size: 32 KiB |
After Width: | Height: | Size: 56 KiB |
After Width: | Height: | Size: 48 KiB |
After Width: | Height: | Size: 38 KiB |
After Width: | Height: | Size: 39 KiB |
BIN
doc/step1.png
Before Width: | Height: | Size: 12 KiB |
BIN
doc/step2.png
Before Width: | Height: | Size: 44 KiB |
BIN
doc/step3.png
Before Width: | Height: | Size: 92 KiB |
BIN
doc/tasks.png
Before Width: | Height: | Size: 18 KiB |
|
@ -0,0 +1,97 @@
|
||||||
|
# Certd演示示例
|
||||||
|
|
||||||
|
本示例演示从创建证书申请任务到自动部署证书全流程
|
||||||
|
|
||||||
|
## 准备工作
|
||||||
|
1. 已部署CertD服务(可官方Demo自助注册体验 https://certd.handsfree.work/ )
|
||||||
|
2. 注册一个域名(支持阿里云万网、腾讯云DnsPod、华为云)
|
||||||
|
3. 准备好以上DNS解析服务商的AccessKey 和 AccessSecret
|
||||||
|
4. 证书要部署的目标(可选,单纯当成证书申请工具用也不错)
|
||||||
|
|
||||||
|
## 自动化流水线创建
|
||||||
|
|
||||||
|
### 1. 创建证书申请部署流水线
|
||||||
|

|
||||||
|
|
||||||
|
需要添加域名的DNS解析服务商的授权
|
||||||
|

|
||||||
|
|
||||||
|
填写accessKey和accessSecret
|
||||||
|

|
||||||
|
流水线创建成功
|
||||||
|

|
||||||
|
|
||||||
|
|
||||||
|
### 2. 任务详情界面
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
### 3. 添加部署到阿里云CDN任务
|
||||||
|
添加任务步骤
|
||||||
|

|
||||||
|
|
||||||
|
选择任务类型
|
||||||
|

|
||||||
|
|
||||||
|
填写任务参数
|
||||||
|

|
||||||
|
|
||||||
|
点击确定,部署到CDN任务配置成功
|
||||||
|
|
||||||
|
### 4. 添加部署到服务器主机任务
|
||||||
|
点击新任务,弹出添加任务界面
|
||||||
|

|
||||||
|
先选择上传到主机任务
|
||||||
|
|
||||||
|
填写任务参数,比如证书保存路径
|
||||||
|

|
||||||
|
|
||||||
|
需要添加主机ip、用户名、密码,只需添加一次,后续其他任务可以复用
|
||||||
|

|
||||||
|
|
||||||
|
然后添加第二个任务,执行主机命令,部署证书
|
||||||
|

|
||||||
|
|
||||||
|
选择执行脚本命令任务
|
||||||
|

|
||||||
|
|
||||||
|
编写脚本,选择之前添加的主机
|
||||||
|

|
||||||
|
|
||||||
|
点击确定,部署到主机任务配置成功
|
||||||
|

|
||||||
|
|
||||||
|
### 5. 手动触发执行任务,测试一下
|
||||||
|

|
||||||
|
|
||||||
|
点击任务可以查看状态和日志
|
||||||
|

|
||||||
|
|
||||||
|
这里执行失败,可以查看错误日志
|
||||||
|

|
||||||
|

|
||||||
|
|
||||||
|
修改正确后,重新执行
|
||||||
|

|
||||||
|
可以看到前面执行过的就会跳过,不会重复执行
|
||||||
|

|
||||||
|
|
||||||
|
### 6. 查看证书部署效果
|
||||||
|
可以看到证书已经部署到CDN成功
|
||||||
|

|
||||||
|

|
||||||
|
也可以手动下载证书
|
||||||
|

|
||||||
|
|
||||||
|
### 7. 定时触发
|
||||||
|
配置定时触发,以后每天定时执行
|
||||||
|
到期前20天会自动申请新证书并部署,没到期前不会重复申请
|
||||||
|

|
||||||
|
|
||||||
|
### 8. 邮件通知
|
||||||
|
可以接收邮件通知(支持时机:开始、成功、失败、失败转成功)
|
||||||
|

|
||||||
|
需要配置邮件服务器
|
||||||
|

|
||||||
|
|
||||||
|
|