1Panel 证书自动续期后,推送至阿里云 CDN,实现无感知替换

Updated on with 340 views

之前有介绍过 1Panel 面板管理服务器。其中,有介绍到 1Panel 面板进行 SSL 证书自动续期的操作,非常的方便。但很多时候我们的证书并不是直接配置在源站,而是配置在 CDN 上,例如阿里云的 DCDN,百度云 CDN 等。

常规的操作是,1Panel 面板的 SSL 证书自动续期后,将证书的公钥和私钥手动拷贝到 CDN 管理平台上,进行替换。虽然操作起来也的比较快的,但我还是想通过现有的工具完成自动化运维。

下载阿里云 CLI

这里要提到阿里云官方的一个命令行工具 CLI,它能够调用阿里云的 OpenAPI,实现访问阿里云官方服务的目的。

在 Linux 服务器上下载阿里云 CLI,并解压放置在 /usr/local/bin 目录。如果使用了我前文介绍的阿里云镜像安装 1Panel 的话,其自带了这个 CLI 命令。

可以使用 aliyun 这个命令来测试命令是否存在。

配置阿里云 CLI

阿里云 CLI 需要提供阿里云的 Access Key Id 和 Access Secret,使用 aliyun configure --profile default 进行配置,其中还需要提供服务器所在的区域 ID,例如 cn-hangzhou

配置完成后使用 aliyun cdn DescribeDomainCertificateInfo --region cn-hangzhou --DomainName 'xxx.example.com' 命令来测试是否配置成功,命令需要替换为自己服务器所在的区域和阿里云的域名。

1Panel 证书设置

在 1Panel 面板的证书导航下,勾选 推送证书到本地目录申请证书后执行脚本 并选择一个创建好的空目录,例如 /root/certs

image.png

接着,需要在上述目录里编写一个自动推送证书的脚本 upload-cdn-ssl.sh,脚本的内容如下,其中可以设置多个域名(如果证书是通配符证书的话)。

#!/bin/bash

# 读取 fullchain.pem 文件内容
SSLPub=$(cat fullchain.pem)

# 读取 privkey.pem 文件内容
SSLPri=$(cat privkey.pem)

# 使用读取到的内容执行 aliyun 命令
aliyun cdn SetCdnDomainSSLCertificate --region cn-hangzhou --DomainName 'xxx1.example.com' --SSLProtocol on --CertType upload --SSLPub="$SSLPub" --SSLPri="$SSLPri"

aliyun cdn SetCdnDomainSSLCertificate --region cn-hangzhou --DomainName 'xxx2.example.com' --SSLProtocol on --CertType upload --SSLPub="$SSLPub" --SSLPri="$SSLPri"

所有的配置完成后,可以点击证书的申请,实际测试一下,这样等自动续期时就完成了无感知替换。

注意事项

如果一个源站下挂了多个网站,并都使用了阿里云 CDN,此时需要在回源项中配置 SNI,可以是自己源站的域名。


标题:1Panel 证书自动续期后,推送至阿里云 CDN,实现无感知替换
作者:Jeffrey

Responses
取消