添加脚本 ssl_update_aliyun_cdn.sh

#!/usr/bin/env python3

import os
import sys
import subprocess
import json
import time

CRT_PATH = "./"
CERT_ID_FILE = "./cert_id.txt"

Ali_Key = "LTAI----"
Ali_Secret = "Secret"

def install_sdk():
    print("正在安装阿里云SDK...")
    subprocess.check_call([sys.executable, "-m", "pip", "install", "aliyun-python-sdk-core", "-q"])

try:
    from aliyunsdkcore.client import AcsClient
    from aliyunsdkcore.request import CommonRequest
except ImportError:
    install_sdk()
    from aliyunsdkcore.client import AcsClient
    from aliyunsdkcore.request import CommonRequest




def delete_cert(client, cert_id):
    print(f"正在删除旧证书, CertId: {cert_id}...")
    request = CommonRequest(domain='cas.aliyuncs.com', version='2020-04-07', action_name='DeleteUserCertificate')
    request.add_query_param('CertId', cert_id)
    
    response = client.do_action(request)
    response_str = response.decode('utf-8') if response else ''
    if '<RequestId>' in response_str or '"RequestId"' in response_str:
        print("旧证书删除成功")
        return True
    else:
        print(f"删除旧证书失败: {response_str}")
        return False


def update_aliyun_cdn(aliyun_cdn_domain="cdn-static.xdywlkj.com"):
    print(f"开始设置阿里云CDN SSL证书... 域名为: {aliyun_cdn_domain}")

    client = AcsClient(Ali_Key, Ali_Secret, 'cn-hangzhou')

    old_cert_id = ""
    if os.path.exists(CERT_ID_FILE):
        with open(CERT_ID_FILE, "r") as f:
            old_cert_id = f.read().strip()
        if old_cert_id:
            print(f"发现旧证书ID: {old_cert_id},将先删除旧证书")
            delete_cert(client, old_cert_id)

    with open(os.path.join(CRT_PATH, "server.crt"), "r") as f:
        SSLPubContent = f.read()
    with open(os.path.join(CRT_PATH, "server.key"), "r") as f:
        SSLPriContent = f.read()

    print("正在上传证书到CAS服务...")
    cert_name = f'cdn-cert-{int(time.time())}'

    request = CommonRequest(domain='cas.aliyuncs.com', version='2020-04-07', action_name='UploadUserCertificate')
    request.add_query_param('Name', cert_name)
    request.add_query_param('Cert', SSLPubContent)
    request.add_query_param('Key', SSLPriContent)

    response = client.do_action(request)
    if response is None:
        print("上传证书到CAS失败")
        exit(1)
    result = json.loads(response.decode('utf-8'))
    CertId = result.get('CertId', '')

    if not CertId:
        print("上传证书到CAS失败")
        exit(1)

    print(f"证书上传成功,CertId: {CertId}")

    with open(CERT_ID_FILE, "w") as f:
        f.write(str(CertId))
    print(f"证书ID已保存到: {CERT_ID_FILE}")

    print("正在配置CDN域名证书...")
    cert_request = CommonRequest(domain='cdn.aliyuncs.com', version='2018-05-10', action_name='SetCdnDomainSSLCertificate')
    cert_request.set_method('POST')
    cert_request.add_query_param('DomainName', aliyun_cdn_domain)
    cert_request.add_query_param('CertId', str(CertId))
    cert_request.add_query_param('CertType', 'cas')
    cert_request.add_query_param('SSLProtocol', 'on')

    response = client.do_action(cert_request)
    if response is None:
        print("配置CDN域名证书失败")
        exit(1)

    response_str = response.decode('utf-8')
    if '<RequestId>' in response_str:
        print("SSL证书更新完成!")
    else:
        print(f"配置CDN域名证书失败: {response_str}")
        exit(1)


if __name__ == "__main__":
    update_aliyun_cdn()

使用脚本

./ssl_update_aliyun_cdn.sh  cdn.lsmir2.com

1panel 证书脚本 更新南墙,更新阿里云 CDN

sudo mv -f fullchain.pem server.crt  #改名
sudo mv -f privkey.pem server.key    #改名

wafpath=/opt/docker/uuwaf/data       #南墙路径
sudo cp -f server.crt $wafpath
sudo cp -f server.key $wafpath

#更新证书到南墙数据库 自用程序.
$wafpath/updateWafssl "server.crt" "server.key" "root:password@127.0.0.1:3306/uuwaf"
#重启容器
docker restart 1panel-uuwaf
#更新cdn证书
./update_aliyun_cdn.sh cdn.wcwlkej.cn

oss 配置内网

aliyun configure set --region cn-heyuan-internal #内网