File size: 1,248 Bytes
a757bd3 | 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 | #!/usr/bin/python
# coding: utf-8
# -----------------------------
# 自动续签Let's Encrypt证书
# -----------------------------
import os,sys, time, re
os.chdir('/www/server/panel')
sys.path.insert(0,'./')
sys.path.insert(1,'class/')
import public
from mailModel import mainModel
from acme_v2 import acme_v2
acme = acme_v2()
domain_data = mainModel.main().get_domains(public.to_dict_obj({"p": 1, "limit": 99999999}))["msg"]
for domain in domain_data["data"]:
print("正在续签:{}".format(domain['domain']))
if domain['ssl_info'].get("issuer_O", '') != "Let's Encrypt" or not domain['ssl_status']:
print("证书不符合续签条件,跳过")
continue
if domain['ssl_info']["endtime"] >= 30:
print("证书到期时间大于30天,跳过")
continue
cert = acme.apply_cert(domain['ssl_info']['dns'], "dns", str(domain['ssl_info']['dns']))
if cert.get("cert") and cert.get("private_key") and cert.get("root"):
mainModel.main().set_mail_certificate_multiple(public.to_dict_obj({"domain": domain["domain"], "key": cert.get("private_key"), "csr": cert.get("cert") + cert.get("root"), "act": "add"}))
print("证书续签成功")
else:
print("证书续签失败")
|