Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/0xjacky/cdn_cert
Automatically push the new certificates to Aliyun CDN
https://github.com/0xjacky/cdn_cert
aliyun cdn letsencrypt letsencrypt-utils
Last synced: 7 days ago
JSON representation
Automatically push the new certificates to Aliyun CDN
- Host: GitHub
- URL: https://github.com/0xjacky/cdn_cert
- Owner: 0xJacky
- License: agpl-3.0
- Created: 2017-11-19T06:21:49.000Z (almost 7 years ago)
- Default Branch: master
- Last Pushed: 2024-09-11T10:55:10.000Z (2 months ago)
- Last Synced: 2024-09-11T16:04:59.282Z (2 months ago)
- Topics: aliyun, cdn, letsencrypt, letsencrypt-utils
- Language: Python
- Homepage:
- Size: 169 KB
- Stars: 34
- Watchers: 3
- Forks: 4
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE.md
Awesome Lists containing this project
README
# 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 /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-1]
![image][image-2]
3. 添加域名信息 `-a domain`
![image][image-3]
4. 编辑用户 `-e user`
5. 编辑域名 `-e domain`
6. 删除用户 `-d user`
![image][image-4]
![image][image-5]
7. 删除域名 `-d domain`
![image][image-6]
8. 列出所有域名/用户 `-ls users/domains`
![image][image-7]
![image][image-8]
9. 开发模式 `-v`
10. 强制更新 `-f`
11. 仅更新单个域名 `-f -o {doamain}`
12. 推送成功的邮件模板
![image][image-9]
13. 定时配置(Docker 无需配置)
```
crontab -e
# 每天 3:30 执行
30 3 * * * python3 /path/to/cdncert.py
```### LICENSE 版权声明
Copyright © 2017 - 2024 0xJackyThe 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/.
[image-1]: screenshots/1.png
[image-2]: screenshots/2.png
[image-3]: screenshots/3.png
[image-4]: screenshots/4.png
[image-5]: screenshots/5.png
[image-6]: screenshots/6.png
[image-7]: screenshots/7.png
[image-8]: screenshots/8.png
[image-9]: screenshots/9.png