利用 ACME 实现SSL证书自动化配置更新

最近收到腾讯云的通知SSL证书要到期了,本想直接申请的发现现在申请的免费SSL证书有效期只有90天了,顺便了解了一下原因是包括Google在内的国际顶级科技公司一直都有在推进免费证书90天有效期的建议,免费证书加密等级低,难以应对今天日益复杂的网络环境,90天一更新有助于及时发现可能存在的安全漏洞,从而降低风险。 这本意是好的但是苦了我们这些的IT 人了,不过好在有自动化的SSL证书更新神器acme,可以一键申请SSL证书,到期也会自动更新,省去了很多麻烦。


安装acme

首先下载安装 acme,后面的 email修改为自己的用于收取SSL证书相关的消息,acme 默认会安装在~/.acme.sh/目录下。

bash 复制代码
curl https://get.acme.sh | sh -s email=mymail@mail.com

修改SSL证书服务商

默认SSL 证书服务商为 ZeroSSL,申请过程比较容易出错建议修改为letsencrypt,

bash 复制代码
acme.sh --set-default-ca --server letsencrypt

证书申请

证书申请过程需要一个域名验证操作,acme 支持两种验证方式:http 验证和 dns 验证,这里我们采用 dns 验证方式,dns 验证可以手动添加CNAME记录也可以通过 dns 厂商提供的 api 进行添加,后者更方便一下,提供 dns 服务的厂商也很多这里以 dnspod 为例进行说明。

申请DNSAPI

登录 DNSPod通过 API 密钥创建 DNSPod Token,密钥创建后要保存好后续无法查询。

配置DNSAPI

将上一步申请的DNSPod Token的 ID 和 Token导入到环境变量中

BASH 复制代码
export DP_Id="511111"
export DP_Key="2d111111111"

执行申请操作

使用issue命令申请证书, 参数-d 用户指定要申请证书的域名,*.domain.cn是泛域名,domain.cn是根域名,test.domain.cn是单域名,此处需要注意要确定前面指定的SSL证书服务商是否支持申请泛域名,如果不支持就需要多次重复此步操作申请多个 SSL 证书,letsencrypt支持申请泛域名证书;参数 dns 用于指定 dns 服务厂商,执行器需要需要确保上一步的环境变量已经正确导入,可以检查~/.acme.sh/目录下的account.conf文件内容进行确认;命令执行后会通过dnsapi 自动添加CNAME记录并进行验证,验证通过后会在~/.acme.sh/domain.cn 目录生成申请好的证书。

申请过程请关注输出信息,存在异常时可以通过添加--debug参数输出更多信息以便排查。

bash 复制代码
acme.sh --issue -d domain.cn -d *.domain.cn --dns dns_dp

证书安装

证书申请成功还需要安装到对应的位置,需要使用--install-cert命令,这里以 nginx 为例进行说明,-d 参数指定域名,需要和安装的证书文件一一对应,--key-file指定证书私钥的安装位置,--fullchain-file指定证书文件的安装位置,--reloadcmd指定证书文件安装完成应用的重启命令,执行成功会提示 success,可以通过访问自己的域名进行验证,同时命令为添加一条自动化任务"/root/.acme.sh"/acme.sh --cron --home "/root/.acme.sh" > /dev/null用于定时自动更新 SSL 证书,可以通过crontab -l命令查看。

bash 复制代码
acme.sh --install-cert -d domain.cn \
	--key-file       /usr/local/nginx/conf/cert/domain.cn.key  \
	--fullchain-file /usr/local/nginx/conf/cert/domain.cn.cer \
	--reloadcmd     "/usr/local/nginx/sbin/nginx -s reload"

相关网址

acme 使用说明
dnsapi 使用说明

相关推荐
天还是那么蓝65 小时前
Fiddler配合wireshark解密ssl
fiddler·wireshark·ssl
一勺菠萝丶7 小时前
手动更换SSL证书教程及注意事项
网络·网络协议·ssl
racent锐成信息18 小时前
如何在Chrome、Edge、360、Firefox等浏览器查看网站SSL证书信息?
网络协议·https·ssl
神技圈子1 天前
【linux】推荐个自研的工具:一键式自动生成并更新ssl证书
网络·网络协议·ssl
sj11637394031 天前
ES(Elasticsearch)SSL集群部署
大数据·elasticsearch·ssl
我命由我123455 天前
SSL 协议(HTTPS 协议的关键)
网络·经验分享·笔记·学习·https·ssl·学习方法
物有本木5 天前
httpsok-v1.17.0-SSL通配符证书自动续签
网络·网络协议·ssl
F_D_Z5 天前
【解决办法】git clone报错unable to access ‘xxx‘: SSL certificate problem:
网络·git·网络协议·ssl
F_D_Z6 天前
SSL VPN | Easyconnect下载&安装&使用 (详尽)
网络·网络协议·ssl·vpn·easyconnect