解决cdn加速域名证书过期提前自动报警和更新,基于云厂商提供的相关接口和lego(Let's Encrypt客户端)使用python实现,目前支持cdn厂商有阿里云、腾讯云、华为云,支持面板查看和操作。
1. 功能
- 支持加速域名证书定时检测、证书申请和上传
- 支持UI查看域名证书状态,手动更新状态和证书
- 支持匹配多级域名、全域名
- 支持指定证书申请机构
- 支持证书过期邮件通知
- 支持命令行、Docker运行
2. 配置
- 公共配置文件:./configs/config.py
- CDN-DNS配置文件:./configs/providers.yml
- 供应商秘钥文件:./configs/secret.py
# cdnProvider(CDN提供商)支持: aliyun (阿里云)、tencent (腾讯云)、huawei(华为云)
# dnsProvider(DNS供应商)支持: 名称参考 https://go-acme.github.io/lego/dns/
# caProvider(CA供应商)支持: letsencrypt(Let's Encrypt)、buypass(Buypass)、zerossl(ZeroSSL)
spec:
- cdnProvider: aliyun
description: "CDN提供商是阿里云,使用的加速域名提供商是阿里云、腾讯云"
dns:
- provider: alidns
caProvider: '' # 默认值为'letsencrypt',也可以不写该字段
domains:
- test1.cn # 匹配二级域名的加速域名
- www.test2.com # 匹配全域名的加速域名
- provider: tencentcloud
domains:
- "test1.net"
- cdnProvider: tencent
description: "CDN提供商是腾讯云,使用的加速域名提供商是cloudFlare、route53"
dns:
- provider: cloudflare
caProvider: "zerossl"
domains:
- test1.xyz
- provider: route53
domains:
- test1.io
- cdnProvider: huawei
description: "CDN提供商是华为云,使用的加速域名提供商是阿里云、Google Cloud"
dns:
- provider: gcloud
caProvider: "zerossl"
domains:
- test1.org
提示:添加新的CDN加速域名首次需手动开启https并手动上传证书
3. 运行
1. 手动
pip3 install -r requirements.txt -i https://pypi.doubanio.com/simple
python3 auto_cert.py
2. 定时
pip3 install -r requirements.txt -i https://pypi.doubanio.com/simple
python3 auto_cert_scheduler.py
支持面板,默认账号密码:admin/admin
pip3 install -r requirements_ui.txt -i https://pypi.doubanio.com/simple
python3 app.py
3. docker
docker build -t cdn-auto-cert:latest -f Dockerfiles/basic/Dockerfile .
docker run --name cdn-auto-cert -it \
-v $PWD/configs/config.py:/home/configs/config.py \
-v $PWD/configs/providers.yml:/home/configs/providers.yml \
-v $PWD/configs/secret.py:/home/configs/secret.py \
-d cdn-auto-cert:latest
支持面板,默认账号密码:admin/admin
docker build -t cdn-auto-cert-ui:latest -f Dockerfiles/ui/Dockerfile .
docker run --name cdn-auto-cert -it \
-p 8080:8080 \
-v $PWD/configs/config.py:/home/configs/config.py \
-v $PWD/configs/providers.yml:/home/configs/providers.yml \
-v $PWD/configs/secret.py:/home/configs/secret.py \
-d cdn-auto-cert-ui:latest