利用 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 使用说明

相关推荐
普普通通的南瓜12 小时前
金融交易防护:国密 SSL 证书在网银与移动支付中的核心作用
网络·网络协议·安全·arcgis·gitlab·ssl·源代码管理
运维行者_2 天前
运维实战:SSL 证书故障避坑指南(精简版)
运维·网络协议·ssl
TG:@yunlaoda360 云老大3 天前
腾讯云国际站SSL:腾讯云SSL证书的SSL握手过程,如何实现高效的身份验证?
云计算·腾讯云·ssl
普普通通的南瓜3 天前
政务领域应用:国密 SSL 证书如何守护 “一网通办” 的数据安全?
https·ssl·政务
子燕若水7 天前
TLS/SSL加密通信过程全解
网络·网络协议·ssl
细节控菜鸡7 天前
【2025最新】APP开启了SSL无法被抓包,如何进行调试
网络·网络协议·ssl
Linux运维技术栈7 天前
Ubuntu Certbot版本查询失败?Snap安装后报错终极修复指南(通用版)
ubuntu·ssl
BUTCHER59 天前
【原理扫描】SSL/TLS 服务器瞬时 Difie-Hellman 公共密钥过弱
java·服务器·网络·ssl
小吴-斌10 天前
本地请求接口报SSL错误解决办法(Could not verify * SSL certificate)
网络·网络协议·ssl
站长朋友11 天前
【邀请函】锐成信息 × Sectigo | CLM - SSL 证书自动化运维解决方案发布会
运维·自动化·ssl·clm·sectigo·47天ssl证书