Go to file
2023-07-05 17:36:29 +08:00
.github/workflows feat: 给update.sh里的 dns 配上环境变量 2023-02-03 20:41:28 +08:00
.idea feat: 给update.sh里的 dns 配上环境变量 2023-02-03 20:41:28 +08:00
api feat: 给update.sh里的 dns 配上环境变量 2023-02-03 20:41:28 +08:00
docker 更新 'docker/update.sh' 2023-07-05 17:36:29 +08:00
.gitignore feat: 给update.sh里的 dns 配上环境变量 2023-02-03 20:41:28 +08:00
config.example.py feat: 给update.sh里的 dns 配上环境变量 2023-02-03 20:41:28 +08:00
Dockerfile feat: 给update.sh里的 dns 配上环境变量 2023-02-03 20:41:28 +08:00
LICENSE feat: 给update.sh里的 dns 配上环境变量 2023-02-03 20:41:28 +08:00
main.py feat: test1111 2023-02-05 18:59:18 +08:00
README.md feat: 给update.sh里的 dns 配上环境变量 2023-02-03 20:41:28 +08:00
requirements.txt feat: 给update.sh里的 dns 配上环境变量 2023-02-03 20:41:28 +08:00
urls.txt feat: 给update.sh里的 dns 配上环境变量 2023-02-03 20:41:28 +08:00

腾讯云自动SSL证书上传及替换

功能:

  • 把本地的SSL证书上传到腾讯云SSL证书并记录id
  • 为CDN服务更换指定id的SSL证书
  • 根据网址批量预热URL

目的:

  • 把利用acme.sh申请的Let's Encrypt证书上传到腾讯云
  • 由于多次申请TrustAsia的一年期免费单域名证书失败,所以准备使用Let's Encrypt证书
  • 该程序已将每一个步骤都实现自动上传SSL并替换CDN的证书
  • 为了使网站访问更快每天预热URL可以单独抽出该函数运行在腾讯云函数

部署方式

使用 Docker 快速部署

每月 1 号凌晨 2 点定时执行证书更新

  • ACME_DNS_TYPE: Acme 的 dns 类型,你可以选择你的 dns 类型并配置环境变量密钥
  • ACME_DOMAIN: 你的顶级域名例如monlor.com自动申请证书 monlor.com/*.monlor.com
  • SECRETID: 腾讯云 Secret Id
  • SECRETKEY: 腾讯云 Secret Key
  • CDN_DOMAIN: CDN 域名,多个域名用逗号分隔
  • RUN_NOW: 是否在 Docker 启动时执行程序
docker run -d \
  --name qcloud-ssl-cdn \
  --restart=unless-stopped \ 
  -e DP_Id=xxx \
  -e DP_Key=xxx \ 
  -e ACME_DNS_TYPE=dns_dp \ 
  -e ACME_DOMAIN=monlor.com \
  -e SECRETID=xxx \
  -e SECRETKEY=xxx \
  -e CDN_DOMAIN=www.monlor.com \
  -e RUN_NOW=true \
  ghcr.io/monlor/qcloud-ssl-cdn:main

其他变量

  • ACME_ENABLED: 是否启用 acme不启用将证书映射到容器/data/certs目录
  • PUSH_URLS: CDN 刷新/预热地址,逗号分隔
  • PUSH_URLS_PATH: CDN 刷新/预热地址文件路径,文件映射到 Docker 容器,路径不能是/data/urls.txt

使用 GitHub Action 部署

Fork 此项目,配置以下 Github Action Secrets

  • ACME_DNS_TYPE: Acme 的 dns 类型,你可以选择你的 dns 类型并配置环境变量密钥
  • ACME_DOMAIN: 你的顶级域名例如monlor.com自动申请证书 monlor.com/*.monlor.com
  • SECRETID: 腾讯云 Secret Id
  • SECRETKEY: 腾讯云 Secret Key
  • CDN_DOMAIN: CDN 域名,多个域名用逗号分隔
  • BARK_HOST: Bark 消息通知 Host
  • BARK_KEY: Bark 消息通知 Key

手动部署

使用acme.sh申请证书

安装及简单使用
对于本程序

# 腾讯云支持使用单域名和泛域名的证书,例如申请泛域名
acme.sh --issue  -d "whuzfb.cn" -d "*.whuzfb.cn" --dns dns_dp
# 申请单域名
# acme.sh --issue  -d "blog.whuzfb.cn" --dns dns_dp

修改config.example.py参数

根据注释修改每一项内容
然后重命名为config.py

主要函数

ssl.get_cert_list(client)获取所有的SSL证书列表
ssl.get_cert_info(client, cert_id)根据id获取SSL证书的信息
ssl.get_cert_detail(client, cert_id)根据id获取SSL证书的详情
ssl.delete_cert(client, cert_id)删除指定id的SSL证书
ssl.upload_cert(client, local_cert_info)把本地的SSL证书上传到腾讯云返回新证书的id

cdn.get_cdn_detail_info(client)获取所有CDN的详细信息返回列表
cdn.get_cdn_url_push_info(client)查询CDN预热配额和每日可用量
cdn.update_cdn_url_push(client, urls):指定 URL 资源列表加载至 CDN 节点,支持指定加速区域预热;默认情况下境内、境外每日预热 URL 限额为各 1000 条,每次最多可提交 20 条
cdn.get_cdn_purge_url_info(client)查询CDN刷新配额和每日可用量
cdn.update_cdn_purge_url(client, urls):指定 URL 资源的刷新,支持指定加速区域刷新;默认情况下境内、境外每日刷新 URL 限额为各 10000 条,每次最多可提交 1000 条
cdn.update_cdn_ssl(client, domain, cert_id)为指定域名的CDN更换SSL证书

ecdn.get_ecdn_basic_info(client)获取所有ECDN全球加速服务的基本信息返回列表
ecdn.get_ecdn_detail_info(client)获取所有ECDN的详细信息返回列表
ecdn.update_ecdn_ssl(client, domain, cert_id)为指定域名的CDN的更换SSL证书