为 AWS 中国的 Cloudfront 自动申请和更新 SSL 证书
先说明一下背景:
1、AWS 中国已经是基本没人管的状态了,Cloudfront 不支持使用 ACM 签发的 SSL 证书,只能用老旧的 IAM 方式上传。
2、国内的几家云厂商的 CDN(阿里云、腾讯云、华为云、火山云),网络情况都不太好,下载速度都被限制在了 20M。特别是因为网间结算甚至跨省结算,导致在运营商层面就限速了。
3、Azure 中国是彻底死了,还以为基于世纪互联,CDN 上还能好一些。结果他们已经停止注册,网页里面各种404。用之前的账号登录上去,发现所有订阅都被删除了。
4、国内下载唯一不限速,能跑到 50M+的,只有 AWS 中国的 Cloudfront 了。
所以,以上几点,注定我要回到 AWS 的怀抱了。
然后,因为众所周知的原因,现在 SSL 证书被苹果搞死了,签发的时间越来越短,3 个月一续签。AWS ACM 虽然支持自动续签,但因为 AWS China Cloudfront 不支持使用 ACM 签发的证书,那么,只能用 API 接口手动撸了。
代码放在了 GitHub,可以直接拿来用
GitHub - naizhao/Renew-Cloudfront-China-Certificate: Automatic renew AWS China Cloudfront SSL certificate from Let’s Encrypt
Automatic renew AWS China Cloudfront SSL certificate from Let's Encrypt - GitHub - naizhao/Renew-Cloudfront-China-Certificate: Automatic renew AWS China Cloudfront SSL certificate from Let'…
可以做成 crontab,每 2 个月自动续期,这样就不会过期了(代码中的--force
要去掉注释)
1、创建一个 bash
#!/bin/bash
export DP_Id="123123"
export DP_Key="123123"
export AWS_ACCESS_KEY_ID="123123"
export AWS_SECRET_ACCESS_KEY="123123"
/usr/bin/python3 /path/to/renew_cloudfront_cert_china.py --domain '*.yourdomain.com' --cloudfront-id 123123 --acme-sh-path /home/user/.acme.sh/acme.sh --acme-home /home/user/.acme.sh
2、添加 crontab
# 1、3、5、7、9、11月,每月1日凌晨0:15分执行
15 0 1 1,3,5,7,9,11 * /home/servbay/renew_certificate >> /var/log/cert_renewal.log 2>&1
脚本会自动申请新的 SSL 证书,然后清理掉 Cloudfront 的旧证书。