acme-companion 签发的证书文件在宿主机上,就在你挂载的 ./nginx-proxy/certs/ 目录下。
./nginx-proxy/certs/
├── np.wxy.vip/
│ ├── fullchain.pem ← 完整证书链
│ ├── privkey.pem ← 私钥
│ └── ...所以只需要一个简单的脚本,把 acme-companion 已经签好的证书推送到阿里云 CDN 就行:
✅ 方案:共享证书
Step 1:装 aliyun CLI
curl -O https://aliyuncli.alicdn.com/aliyun-cli-linux-latest-amd64.tgz
tar xzf aliyun-cli-linux-latest-amd64.tgz
sudo mv aliyun /usr/local/bin/
aliyun configure
# 输入新 AccessKeyStep 2:写部署脚本
#!/bin/bash
# /root/deploy-cdn-cert.sh
CERT_DIR="/你的路径/nginx-proxy/certs/np.wxy.vip"
if [[ ! -f "$CERT_DIR/fullchain.pem" || ! -f "$CERT_DIR/privkey.pem" ]]; then
echo "证书文件不存在:$CERT_DIR"
exit 1
fi
echo "部署 np.wxy.vip 证书到阿里云 CDN ..."
aliyun cdn SetCdnDomainSSLCertificate \
--DomainName np.wxy.vip \
--SSLProtocol on \
--CertType upload \
--SSLPub "$(cat "$CERT_DIR/fullchain.pem")" \
--SSLPri "$(cat "$CERT_DIR/privkey.pem")" \
--CertName "acme-companion-$(date +%Y%m%d)"
echo "✅ 完成"Step 3:加 cron,acme-companion 每次续签后让它跑一下
acme-companion 续签证书后会触发 reload,你可以用一个简单粗暴的方式——每天凌晨跑一次:
crontab -e
# 加一行
0 4 * * * /root/deploy-cdn-cert.sh >> /var/log/cdn-cert-deploy.log 2>&1==========================================================
#!/bin/bash
# /root/deploy-cdn-cert.sh
echo "============================================"
echo "部署时间:$(date '+%Y-%m-%d %H:%M:%S')"
echo "部署 np.wxy.vip 证书到阿里云 CDN ..."
echo "============================================"
aliyun cdn SetCdnDomainSSLCertificate \
--DomainName np.wxy.vip \
--SSLProtocol on \
--CertType upload \
--SSLPub "$(cat /data/nginx-proxy/certs/np.wxy.vip/fullchain.pem)" \
--SSLPri "$(cat /data/nginx-proxy/certs/np.wxy.vip/key.pem)" \
--CertName "acme-np-$(date +%Y%m%d)"
echo "============================================"
echo "部署时间:$(date '+%Y-%m-%d %H:%M:%S')"
echo "部署 *.shetuan.cc 证书到阿里云 CDN ..."
echo "============================================"
aliyun cdn SetCdnDomainSSLCertificate \
--DomainName ".shetuan.cc" \
--SSLProtocol on \
--CertType upload \
--SSLPub "$(cat /data/nginx-proxy/certs/wildcard_shetuan.cc/fullchain.pem)" \
--SSLPri "$(cat /data/nginx-proxy/certs/wildcard_shetuan.cc/key.pem)" \
--CertName "acme-wildcard-$(date +%Y%m%d)"
echo "✅ 全部完成"把这段保存到服务器 /root/deploy-cdn-cert.sh,然后:
chmod +x /root/deploy-cdn-cert.sh
# 先手动跑一次试试
/root/deploy-cdn-cert.sh
# 没问题就加 cron
crontab -e
0 4 * * * /root/deploy-cdn-cert.sh >> /var/log/cdn-cert-deploy.log 2>&1