Thanks to visit codestin.com
Credit goes to GitHub.com

Skip to content

Automatically push the new certificates to Aliyun CDN

License

Notifications You must be signed in to change notification settings

0xJacky/cdn_cert

Repository files navigation

CDN Cert

自动将 Let's encrypt,或其他网站证书推送到阿里云 CDN

v2.1 更新日志

更新于 2021 年 8 月 28 日

  1. 修复 Python3.9 下邮件发送问题
  2. 新增自定义证书路径配置,从上个版本更新的用户请在 cert.db 中, 为 domain 表添加 cert_path(VARCHAR(255),is_nullable:YES)private_key_path(VARCHAR(255),is_nullable:YES)
  3. 使用 configparse 管理配置文件,更新时请将 config-template.ini 复制一份改名为 config.ini 并重新配置
  4. 可修改域名证书配置和用户信息
  5. 支持 Docker 部署
  6. Docker 容器自动配置定时任务,每天 01:00 执行更新,日志自动记录在 cdncert.log

v2 更新日志

更新于 2019 年 7 月 8 日

  1. 支持多 RAM 账号。

    即当您有多个网站存在于同一个服务器上,且多个网站部署CDN时使用的不是同一阿里云账号时, CDN Cert 可以向多个阿里云账号推送续签后的证书。

  2. 完全迁移至 Python 3.7

工作原理

定期[1]对比“证书+私钥”的组合 MD5,与上一次推送成功时的摘要进行比对。

如有差异则将新证书推送到 CDN

使用 SQLite3 做为数据库,并支持阿里云邮件推送服务,如有更新可以将推送结果发送到您的邮箱。

Docker 部署

  1. 准备

    git clone https://github.com/0xJacky/cdn_cert.git
    
  2. 配置将 config-template.ini 复制一份并命名为 config.ini

  3. 运行 Docker

    docker run -dit -v ${配置和数据库文件目录}:/app/data \
                    -v ${证书文件夹的绝对路径}:/cert \
                    --name=cdn_cert -e "TZ=Asia/Shanghai" \
                    uozi/cdn_cert /bin/bash
    
  4. 修改配置后使用 docker restart cdn_cert 重启容器。

  5. 进入容器配置域名及用户信息

    docker exec -it <image_id> /bin/bash
    
  6. 注意映射目录后进入 docker 内配置自定义证书的路径,此路径是容器内的绝对路径。

手动配置环境

  1. 准备
    git clone https://github.com/0xJacky/cdn_cert.git
    pip3 install -r requirements.txt
    
  2. config-template.ini 复制一份并命名为 config.ini

config.ini 配置说明

配置项 默认值 说明
database.Path cert.db 指定数据库存储的地址,相对路径
letencrypt.Path /cert Let's encrypt 证书目录,使用 Docker 模式时将证书文件夹的绝对路径映射到 /cert 即可,可以不修改此项
letencrypt.ServerCertificateName fullchain.cer 如果您使用的是 Let's encrypt 官方的 certbot 则无需修改此项
letencrypt.PrivateKeyName {{ domain_name }}.key PrivkeyName 提供变量 {{ domain_name }}
例如,使用 acme.sh 管理证书的用户,生成的私钥名称与域名相同,则应该设置为 PrivkeyName = {{ domain_name }}.key
mail.Host smtpdm.aliyun.com 邮件反馈设置 - 阿里云邮件推送服务
mail.Port 465 发信端口,除 80 端口外默认使用 SSL
mail.UserName - 发件人地址,通过控制台创建的发件人地址
mail.PassWord - 发件人密码,通过控制台创建的发件人密码
mail.From - 发件人昵称
mail.To - 收件人地址,支持多个收件人,最多30个,以 , 分割

使用方法

  1. 用法 -h/ --help

    usage: cdncert.py [-h] [-f] [-o ONLY] [-a {domain,user}] [-e {domain,user}] [-d {domain,user}] [-ls {domains,users}] [-v]
    
    CDN Cert - Automatically push the new certificates to CDN
    
    optional arguments:
     -h, --help            show this help message and exit
     -f, --force           force update
     -o ONLY, --only ONLY  update only, use it after -f/--force
     -a {domain,user}, --add {domain,user}
                           add [domain/user] to database
     -e {domain,user}, --edit {domain,user}
                           edit [domain/user] in database
     -d {domain,user}, --delete {domain,user}
                           delete [domain/user] from database
     -ls {domains,users}, --list {domains,users}
                           print all [domains/users] from database
     -v, --verbosity       increase output verbosity
    
    
  2. 添加用户信息 -a user

    image

    image

  3. 添加域名信息 -a domain

    image

  4. 编辑用户 -e user

  5. 编辑域名 -e domain

  6. 删除用户 -d user

    image

    image

  7. 删除域名 -d domain

    image

  8. 列出所有域名/用户 -ls users/domains

    image

    image

  9. 开发模式 -v

  10. 强制更新 -f

  11. 仅更新单个域名 -f -o {doamain}

  12. 推送成功的邮件模板

    image

  13. 定时配置(Docker 无需配置)

crontab -e
# 每天 3:30 执行
30 3 * * * python3 /path/to/cdncert.py

LICENSE 版权声明

Copyright © 2017 - 2024 0xJacky

The program is distributed under the terms of the GNU Affero General Public License.

This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details.

You should have received a copy of the GNU Affero General Public License along with this program. If not, see http://www.gnu.org/licenses/.

About

Automatically push the new certificates to Aliyun CDN

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Contributors 2

  •  
  •