Gcore CDN在边缘服务器上部署的证书是单/多域名的,这对应于你在CDN部署的域名。
但是有时候,我并不想让别人知道某些域名的具体情况,这时候只能自己申请通配符证书,然后替换了。
既然如此,那么好像也没必要用自签名的证书了,在源端自动化申请部署一条龙服务。
如何更新Gcore SSL证书
先人工建立证书,记录id,假设为114514
。
获取API token,假设为123$foobar
。
获取证书,假设位置为/usr/workspace/ssl/123456.xyz.pem
,/usr/workspace/ssl/123456.xyz.key
。
cur_date=$(date +"%Y-%m-%d %H:%M")
certificate=$(awk '{printf "%s\\n", $0}' /usr/workspace/ssl/123456.xyz.pem)
private_key=$(awk '{printf "%s\\n", $0}' /usr/workspace/ssl/123456.xyz.key)
curl -H 'Authorization: APIKey 123$foobar' \
-H "Accept: application/json" -H "Content-type: application/json" -X PUT \
-d "{\"name\": \"*.123456.xyz-$cur_date\",\"sslCertificate\": \"$certificate\",\"sslPrivateKey\": \"$private_key\", \"validate_root_ca\": true}" \
https://api.gcore.com/cdn/sslData/114514
使用acme.sh
申请证书并上传到Gcore
- 安装
acme.sh
只需要安装一次。curl https://get.acme.sh | sh -s email=[email protected]
- 申请证书
只需要配置一次,默认会周期更新。
如果DNS部署在其它地方,参考dnsapi2自行修改。export GCORE_Key='123$foobar' /root/.acme.sh/acme.sh --issue --dns dns_gcore -d 123456.xyz -d *.123456.xyz # 如果出现错误,可以加参数--debug
- 将证书部署到本地的nginx并deploy到Gcore
只需要配置一次。/root/.acme.sh/acme.sh --install-cert --dns dns_gcore -d 123456.xyz -d *.123456.xyz \ --cert-file /usr/workspace/ssl/123456.xyz.only.pem \ --key-file /usr/workspace/ssl/123456.xyz.key \ --fullchain-file /usr/workspace/ssl/123456.xyz.pem \ --reloadcmd "nginx -s reload && /usr/workspace/acme/gcore.sh"
- 设置通知
参考https://github.com/acmesh-official/acme.sh/wiki/notify