欢迎来到 岁月小筑

使用Python脚本更换腾讯云CDN证书为Let's Encrypt证书

前言

本文转自:通过python脚本实现自动更新腾讯云CDN数字证书功能

这个脚本找到有两个星期了,但是因为期末很忙,所以都没用过。

今天想用自己的网盘的时候才发现证书过期了,准备更换的时候,才想起这个脚本,顺便水一篇文章分享给大家

使用前准备

1.在腾讯云CDN后台创建相关域名

(略)不会创建还用这个脚本干嘛啊(逃

2.获取腾讯云SecretId和SecretKey

使用Python脚本更换腾讯云CDN证书

3.安装Python3以及相关依赖

Centos系统:

#安装Python3(此脚本不会覆盖Python2,与python2共存)
wget -qO- dl.few.gs/scripts/python3.sh | bash
#安装依赖
pip3 install cryptography qcloudapi-sdk-python

Windows、Debian、Ubuntu及其他系统:

#安装Python3
自行想办法()
#安装依赖(使用python3的pip)
pip install cryptography qcloudapi-sdk-python

4.下载证书更新主脚本和配置范例文件

wget https://gitlab.ngx.hk/cloud_tencent/CDN/raw/master/qcloud_cdn_cert_update/main.py
wget https://gitlab.ngx.hk/cloud_tencent/CDN/raw/master/qcloud_cdn_cert_update/config.template.json

5.修改配置范例文件

5.1 修改脚本main.py

# 配置文件目录
# 默认为脚本当前所在目录下的config.json
config_file_path = sys.path[0] + '/config.json'

# 临时文件目录
# 同上
tmp_file_path = sys.path[0] + '/temp.log'

# 证书文件目录
# 默认为脚本当前所在目录下的cert目录
cert_file_folder = sys.path[0] + '/cert/'

主要修改的是第三个,证书文件目录。具体如何修改,在5.4中举例说明

5.2 修改配置范例文件名

mv config.template.json config.json

5.3 修改配置

  • https_type:https种类,值为2表示上传自有证书,并协议跟随回源(不用改)
  • https_force_switch:https强制跳转,值0表示无强制跳转,值1表示强制跳转至http,值2表示强制跳转至https(服务器上配置了强制跳转的,这里请填0)
  • http2:http2是否开启,填”on”以加快网页二次加载速度
  • secret_id:上面得到的
  • secret_key:上面得到的
  • cert_filename:证书文件名
  • key_filename:证书密钥文件名
  • validity:证书最小有效期(填0稳妥)

5.4 举个栗子

下面,我们来举个栗子:

此次使用的证书是由acme.sh生成并负责自动更新的,要更换证书的域名为example.com

一般情况下,acme.sh生成证书文件命名为fullchain.crt,证书的密钥文件命名为example.com.key,这两个文件存放在/root/.acme.sh/example.com/目录下

修改main.py中的证书文件目录为:

/root/.acme.sh/

修改config.json配置文件为:

{
  "example.com": {
    "https_type": 2,
    "https_force_switch": 0,
    "http2": "on",
    "secret_id": "xxx",
    "secret_key": "xxx",
    "cert_filename": "example.com/fullchain.crt",
    "key_filename": "example.com/example.com.key",
    "validity": "0"
  }
}

也就是说,实际脚本读取的证书文件名是由main.py中的证书文件目录与config.json中的xxxx_filename两项拼接而成的

如无意外,修改好以后就可以直接运行脚本替换腾讯云CDN证书了

python3 main.py

最后

本文开始写于12月29日,写作完成于1月5日,咕咕咕,咕咕咕。(成功把一篇文章咕了一年

点赞

发表评论

电子邮件地址不会被公开。