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
# 输入新 AccessKey

Step 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

发表评论