近期各大云平台将免费SSL证书的有效期从1年缩短到90天,证书续期从1年一次变成了一年4次,非常繁琐。虽然我们的业务服务器上已经使用了.acme.sh实现证书自动续期,但由于网站使用了CDN,依然需要人工在阿里云CDN上进行证书配置。
最近看到acme.sh的Github仓库上有贡献者提了阿里云CDN的Deploy Hook PR,于是开始着手给业务部署CDN证书自动续期的功能。
操作步骤
- 由于该 PR 尚未合并到主分支,因此需要手动获取该 ali_cdn.sh 文件,上传到服务器
~/.acme.sh/deploy
目录下。
- 在阿里云侧创建一个RAM用户和自定义权限,该用户最低需要有
cdn:SetCdnDomainSSLCertificate
权限以完成证书部署。
{
"Version": "1",
"Statement": [
{
"Effect": "Allow",
"Action": "cdn:SetCdnDomainSSLCertificate",
"Resource": "acs:cdn:*:<accountId>:domain/<domain>"
}
]
}
- 记录下创建的RAM用户的
Access Key
和Access Secret
,配置到acme.sh的Ali_Key
和Ali_Secret
。
export Ali_Key="foo"
export Ali_Secret="bar"
- 按照acme.sh文档首先完成证书签发,当证书签发完成后,可以使用以下命令部署。
acme.sh --deploy -d example.com --deploy-hook ali_cdn
- 如果证书为泛域名证书(例如*.example.com)或者需要部署到多个CDN域名,还需要在deploy前首先指定部署的域名,多个域名以空格分隔:
export DEPLOY_ALI_CDN_DOMAIN="s1.example.com s2.example.com"
- 出现以下提示,则部署完成,可以到CDN控制台中验证。另外,每一次Deploy都会在“数字证书管理服务”的“SSL证书管理”中新增一个证书,需要手动删除。
Domain example.com certificate has been deployed successfully
Success
发表回复