背景
由于域名的SSL证书到期时间都不是在一起,所以造成续签混乱,很烦!
前置
安装阿里云CLI工具
/bin/bash -c "$(curl -fsSL https://aliyuncli.alicdn.com/install.sh)"
创建RAM 访问控制
代码
此处参考:使用阿里云CLI在1panel申请证书后自动上传阿里云DCDN
upload-aliyun-cdn-ssl.sh
#!/bin/bash
# 检查参数数量
if [ "$#" -lt 3 ]; then
echo "用法: $0 <AccessKey Id> <AccessKey Secret> <域名> [证书目录路径]"
echo "示例: $0 AKID123456 SECRET789 example.com /path/to/certs"
echo "注:如果不指定证书目录,默认使用当前目录"
exit 1
fi
ACCESS_KEY_ID=$1
ACCESS_KEY_SECRET=$2
DOMAIN_NAME=$3
CERT_DIR=${4:-$(pwd)}
# 检查证书文件是否存在
if [ ! -f "$CERT_DIR/fullchain.pem" ] || [ ! -f "$CERT_DIR/privkey.pem" ]; then
echo "错误:在 $CERT_DIR 目录下找不到 fullchain.pem 或 privkey.pem"
exit 1
fi
# 配置阿里云CLI
aliyun configure set \
--access-key-id "$ACCESS_KEY_ID" \
--access-key-secret "$ACCESS_KEY_SECRET" \
--region cn-nanjing-a \
--profile AkProfile \
--mode AK
# 上传SSL证书到CDN
aliyun dcdn SetDcdnDomainSSLCertificate \
--region cn-hangzhou \
--DomainName "$DOMAIN_NAME" \
--CertType upload \
--SSLProtocol on \
--SSLPub "$(cat "$CERT_DIR/fullchain.pem")" \
--SSLPri "$(cat "$CERT_DIR/privkey.pem")" \
--endpoint dcdn.aliyuncs.com
echo "SSL证书上传完成"
使用
需要将upload-aliyun-cdn-ssl.sh与证书、密钥放在同一目录
如图:
进阶
如果觉得重复创建脚本麻烦,可以将脚本移动到系统 PATH 目录中,可以在任何位置使用。
sudo mv upload-aliyun-cdn-ssl.sh /usr/local/bin/upload-aliyun-cdn-ssl
sudo chmod +x /usr/local/bin/upload-aliyun-cdn-ssl
使用示例
与上面的使用一样,指定了证书与密钥目录则不推送到本地目录,反之则推送。
upload-aliyun-cdn-ssl AKID123456 SECRET789 example.com
# or
upload-aliyun-cdn-ssl AKID123456 SECRET789 example.com /path/to/certs