申请域名SSL证书并自动推送至阿里云 CDN

        

        近期国外SSL证书厂商调整了免费证书的续签规则,一年期的证书全部取消,现在只能申请90天有效期的免费证书。普通web站点可以通过宝塔面板或部署acme.sh等证书自动管理工具来实现自动化申请和部署,但是阿里云之类的CDN服务就只能通过手动或OpenAPI接口来实现证书更新。如果管理的SSL证书比较多,一是容易遗漏,另外纯靠手动更新,这个工作量就很可怕了。

找了一圈资料,这篇文章比较有参考价值:    这篇文章比较有参考价值:申请通配符域名证书并自动推送至阿里云 CDN功能和特性 能够申请域名通配符证书 每两个月自动 renew 证书 自动将证书推送到阿里云 CDN 准备 Linux 服务器(参考系统:Ubuntu 20.04) 在阿里云托管的域名icon-default.png?t=N7T8https://www.wqy.ac.cn/p/2311-acme-aliyuncdn/

        但是其中 UpdateSSLCert.sh 脚本跑不通(证书申请成功之后无法推送至CDN,提示UploadUserCertificate方法没有权限), 不知是不是阿里云又调整了规则。   

        仔细查看了下阿里云的OpenAPI文档,发现CDN证书更新只需要调用SetCdnDomainSSLCertificate 这个接口方法就可以,参考上述文章的脚本,直接使用阿里云CLI命令行工具做了下简化:

服务器先按照官方说明安装CLI命令行工具,安装指南_阿里云CLI(CLI)-阿里云帮助中心

#!/usr/bin/env bash

# 使用的 OpenAPI
# CAS: https://help.aliyun.com/document_detail/126507.html
# CDN:https://help.aliyun.com/document_detail/106661.html

# 可配合 acme.sh 使用的 renewHook 脚本:自动将新证书上传至阿里云并更新对应 CDN 域名,然后删除对应域名的旧证书。
# 每次 API 执行都会检测是否失败,如果失败,会中断脚本执行并返回自定义错误代码。

# RIBO: 修改为自己的 AccessKey
AliAccessKeyId="<AliAccessKeyId>"
AliAccessKeySecret="<AliAccessKeySecret>"

# shellcheck source=AliyunOpenApiSDK.sh
# RIBO: 这里需要修改 aliyun-openapi-bash-sdk 的路径
#source /root/aliyun-openapi-bash-sdk/AliyunOpenApiSDK.sh

# acme.sh 执行 renewHook 时导出的环境变量列表
ACME_ENV_LIST=(
    "CERT_KEY_PATH"
    "CERT_FULLCHAIN_PATH"
    "Le_Domain"
)
# 检查环境变量是否存在
for value in "${ACME_ENV_LIST[@]}" ; do
   [[ -v "$value" ]] || exit 1
done
unset value
# 获取证书自定义函数
get_cert() {
    # 使用 sed 删除掉证书文件的空行
    sed -e "/^$/d" "$CERT_FULLCHAIN_PATH"
}
# 获取密钥自定义函数
get_key() {
    cat "$CERT_KEY_PATH"
}

# shellcheck disable=SC2154
DOMAIN=$Le_Domain
# 证书名称 (替换域名的 . 为 _,以符合阿里云证书名称规范)
CERT_NAME="${DOMAIN//./_}-$(date +%s)"
# 需要更新证书的 CDN 域名列表
# RIBO: 修改这里的 CDN 域名列表
DOMAIN_LIST=(
    "example.com"
    "www.example.com"
)

# 设置 CDN 域名列表使用新的证书
for _domain in "${DOMAIN_LIST[@]}"; do
    aliyun cdn SetCdnDomainSSLCertificate --DomainName "$_domain" --SSLPub="$(get_cert)" --SSLPri="$(get_key)"  --CertType upload --SSLProtocol on || exit 103
done
unset _domain

RAM 用户授权也只需两项

  • AliyunDNSFullAccess 管理云解析(DNS)的权限
  • AliyunCDNFullAccess 管理CDN的权限

实测跑通,目前发现的唯一问题就是随着时间推移,证书管理服务里的列表估计会越来越大,需要定期手动清理掉过期的证书。

  • 8
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
阿里云CDN加速配置教程如下: 1. 在阿里云控制台中,选择CDN,进入CDN控制台。 2. 在控制台中,选择域名管理,然后点击【添加域名】按钮。 3. 在添加域名页面,输入您的主域名,并选择合适的业务类型,例如站点加速、点播、直播等。 4. 点击【下一步】,进入加速区域设置页面。***根据您的实际情况,选择源站类型,可以是IP地址、阿里云OSS、阿里云视频点播等。 6. 配置好源站后,点击【下一步】,进入CNAME配置页面。在此页面,您会得到一个加速后的CNAME域名,将您的主域名作CNAME指向该域名。 7. 完成CNAME配置后,点击【下一步】,进入HTTPS配置页面。您可以选择是否开启HTTPS加速,并配置相应的证书。 8. 完成HTTPS配置后,点击【下一步】,进入流量分配页面。根据您的需求,设置合适的流量分配。 9. 点击【下一步】,进入确认订单页面。确认您的配置信息,并点击【确认】,提交订单。 10. 完成订单提交后,CDN加速配置就完成了。您可以在域名管理页面查看到您的加速域名信息。 通过以上步骤,您就可以成功配置阿里云CDN加速。CDN加速可以将您的源站内容分发至最接近用户的节点,提高用户访问的响应速度和成功率。同时,CDN节点也可以缓存访问量较大的网页内容和对象,以提高网站访问的速度和质量。<span class="em">1</span><span class="em">2</span><span class="em">3</span><span class="em">4</span>

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值