acme生成腾讯云域名泛域名ssl证书

realhuhu 528 0

原理

某些网站可以提供三个月的通配符SSL证书,没有申请次数限制
acme可以你的通过DNS服务商,定期自动用你的域名向这些网站申请通配符ssl证书,从而实现永久通配符ssl证书的效果

安装acme

curl https://get.acme.sh | sh

会安装到家目录的/.acme.sh文件夹下,进入这个目录,里面有可执行文件acme.sh

生成SSL证书

要实现acme定期申请证书,首先要授权它操作你的域名,需要将DNS服务商的API密钥提供给它
以腾讯云为例,腾讯云的DNS服务商是DNSPOD CN,前往控制台创建密钥
注意是DNSPod Token,不是腾讯云API密钥
默认是没有密钥的,创建一个密钥即可

acme生成腾讯云域名泛域名ssl证书

然后输入

export DP_Id="密钥的ID"
export DP_Key="密钥的Token"

此时acme就用了你域名的权限,可以申请SSL证书了
假如你的域名是baidu.com

./acme.sh --issue --dns dns_dp -d baidu.com -d *.baidu.com

第一个baidu.com是固定的,表示主域名,第二个*.baidu.com表示你申请的证书适用于所有baidu.com的泛域名
--dns是指定DNS服务商,dns_dp对应DNSPOD CN,他会读取你之前设置的DP_Id和DP_Key。如果申请成功,你的DP_Id和DP_Key会被保存,下次不需要再输入

导出证书

申请以后的证书位于.acme.sh文件夹里,但不要直接使用,需要导出
以nginx为例

./acme.sh --installcert -d baidu.com \
          --keypath /etc/nginx/ssl/example.com.key \
          --fullchainpath /etc/nginx/ssl/example.com.cer
          --reloadcmd "nginx -s reload"

-d baidu.com表示导出申请的baidu.com的证书
--keypath和--fullchainpath表示导出.key文件和.cer到那
--reloadcmd表示重启nginx的指令,如果你是docker那就差不多是docker restart nginx

这样当证书需要更新时,acme会自动更新.key和.cer,然后重启nginx,再也不需要你操心证书了

通过crontab -l可以看到acme每三个月自动更新一次证书

自动更新acme

可以看出来acme类似爬虫,爬取提供泛域名证书的网站,因此最好开启acme的自动更新防止接口变化
./acme.sh --upgrade --auto-upgrade

其它DNS服务商

acme可以使用多家DNS服务商,具体见/.acme.sh/dns_api
例如你域名的DNS服务商是cloudflare,那么就去看dns_cf.sh,里面说你应该提供CF_Key、CF_Email、CF_Token、CF_Account_ID、CF_Zone_ID

acme生成腾讯云域名泛域名ssl证书

使用export设置好这些值后就可以指定用dns_cf申请证书

./acme.sh --issue --dns dns_cf -d baidu.com -d *.baidu.com

发表评论 取消回复
表情 图片 链接 代码

分享