博客图片域名(cnd.typecodes.com
)的SSL证书是通过Let's Encrypt申请的,因为证书有效期为3个月,所以需要用脚本定时去重新申请。
重新申请证书主要步骤为:
1、源主机上创建crontab定时任务;
2、先把图片域名DNS解析到源主机上,重新申请Let's Encrypt证书;
3、把申请到的SSL证书上传到七牛云的证书管理平台并启用;
4、把图片域名DNS重新解析到七牛云上;
5、最后重启源主机的Nginx服务。
在上篇文章中使用Python脚本来切换DNS的解析,也就是实现了上面的2、4步骤;这篇文章主要是用Python脚本来上传SSL证书到七牛云上,也就是实现上面的步骤3。
1 七牛云存储相关
和前文中操作阿里云DNS的Python脚本一样,我们也需要在七牛创建一个API相关的AccessKey和SecretKey
。
七牛云开放的API接口对应的SDK库已经在GitHub了,对应python版本的地址是: https://github.com/qiniu/python-sdk/releases。
2 要实现的功能
要实现的功能也就是上面说的步骤3:上传SSL证书到七牛云存储并启用。
所有已上传的自定义SSL证书都会在七牛云存储SSL证书服务上展示出来,如下图所示:
3 实现程序
根据七牛云存储的SDK python版本的说明,用下面这个Python脚本实现上面的需求。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44 | #!/usr/bin/python
# -*- coding: UTF-8 -*-
# FileName: qiniu_letssl.py
# (c) 2019.6.23 vfhky https://typecodes.com/python/qiniuletssl1.html
# https://github.com/vfhky/shell-tools/blob/master/filehandle/qiniu_letssl.py
# 脚本功能:上传从Let's Encrypt申请的 cdn.typecodes.com 的SSL证书到七牛云存储并启用。
# 使用方法: python qiniu_letssl.py
#
# 必须安装的核心包: pip install qiniu
import qiniu
from qiniu import DomainManager
import os
import time
# 七牛云API相关的AccessKey和SecretKey.
# access_key = os.getenv('ACCESS_KEY', '')
access_key = "ac_key"
secret_key = "se_key"
# 操作的域名
domain_name = "cdn.typecodes.com"
auth = qiniu.Auth(access_key=access_key, secret_key=secret_key)
domain_manager = DomainManager(auth)
# Let's Encrypt申请的证书公钥和私钥文件所在的目录.
privatekey = "/etc/letsencrypt/live/{}/privkey.pem".format(domain_name)
ca = "/etc/letsencrypt/live/{}/fullchain.pem".format(domain_name)
with open(privatekey, 'r') as f:
privatekey_str = f.read()
with open(ca, 'r') as f:
ca_str = f.read()
ret, info = domain_manager.create_sslcert("{}/{}".format(domain_name, time.strftime("%Y%m%d_%M%S", time.localtime())),
domain_name, privatekey_str, ca_str)
print(ret['certID'])
if domain_name.startswith("*"):
domain_name = domain_name[1:]
ret, info = domain_manager.put_httpsconf(domain_name, ret['certID'], False)
print(info)
|
4 执行效果
执行python qiniu_letssl.py
就会把Let's Encrypt申请的SSL证书公私钥文件上传到七牛云存储。从下面的效果可以看出目前博客用的证书文件命令就是cdn.typecodes.com/20190530_2840
。
5 脚本管理
目前已经把这个脚本放在Github了,地址是https://github.com/vfhky/shell-tools,以后脚本的更新或者更多好用的脚本也都会加入到这个工程中。
Comments »