首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >SSL免费证书自动续期 acme.sh 告别90天烦恼

SSL免费证书自动续期 acme.sh 告别90天烦恼

作者头像
逍遥子大表哥
发布2025-07-28 20:01:25
发布2025-07-28 20:01:25
6340
举报
文章被收录于专栏:kali blogkali blog

在前面的文章中我们讲到了ssl证书自动更新。但实际效果并不是很好,这不得不拿出核武器了。一起来看看acme.sh自动更新ssl证书。

关于

ACME是由 Let’s Encrypt 推出的自动化 SSL 证书管理协议。通过 ACME 协议,网站管理员可以轻松地自动申请、更新和管理 SSL 证书,完全告别手动操作的烦恼。

部署

代码语言:javascript
复制
git clone --depth 1 https://github.com/acmesh-official/acme.sh.git
cd acme.sh
./acme.sh --install -m username@example.com

安装完成后,终端输入acme.sh -h便可以看到帮助命令。

修改CA证书类型

目前支持的CA证书分别是 Let’s EncryptBuypassZeroSSLSSL.comGoogle Public CA,默认使用 ZeroSSL,如果需要更换可以使用如下命令:

代码语言:javascript
复制
#切换 Let’s Encrypt
acme.sh --set-default-ca --server letsencrypt
#切换 Google
acme.sh --set-default-ca --server google
以此类推!

因为笔者偏爱letsencrypt 执行上方命令即可。

配置DNS API

通过服务器提供的API。让acme.sh自动创建域名验证记录以申请域名证书。本文以阿里云为例。首先登陆阿里云控制台 - 访问控制 RAM - 身份管理-用户

完成后,分别复制AccessKey IDAccessKey Secret的值。保存并做好备份!

点击下方的添加权限。搜索DNS,选择AliyunDNSFullAccess点击确定!

配置 DNS API

在隐藏目录.acme.sh中添加配置

代码语言:javascript
复制
cd 
cd .acme.sh
vim account.conf

添加配置

代码语言:javascript
复制
export Ali_Key="LTAI4Fd8J9qs4fxxxxxxxxxx"
export Ali_Secret="Xp3Z7NDOW0CJcPLKoUwqxxxxxxxxxx"

申请证书

在申请证书之前,我们首先要确定原有ssl证书的位置。一般在你的nginx配置文件中。

一键申请命令

代码语言:javascript
复制
acme.sh --issue --dns dns_ali -d *.test.com --fullchain-file /home/ecs-user/test.pem --key-file /home/ecs-user/test.key

命令说明:

  • –dns dns_ali:表示阿里云 DNS 的插件
  • -d *.test.com: 表示匹配所有 test.com 域名下的子域名
  • –fullchain-file:pem证书位置
  • –key-file:证书key位置

完成后,便会在指定的位置生成证书。

在宝塔面板中。默认的证书文件名为fullchain.pemprivkey.pem。因此我们可以按照上面文件名进行生成。或者,执行下面命令。重写nginx配置文件。

代码语言:javascript
复制
acme.sh --installcert -d example.com \
--key-file       /www/server/panel/vhost/cert/xxx.com/key.pem  \
--fullchain-file /www/server/panel/vhost/cert/xxx.com/cert.pem \
--reloadcmd     "service nginx force-reload"

自动部署

如果我们使用 curl https://get.acme.sh | sh 方式安装,续期任务会自动在定时任务中配置。使用acme.sh --cron便可以自动续期。

添加定时任务如下:

代码语言:javascript
复制
#设置每月执行一次的定时任务(每月第一天)
0 0 1 * * acme.sh --cron > /root/acme.sh/acme_cron.log 2>&1

当然,我们还可以写个脚本。更新成功后发送邮件。这里以QQ邮箱为例:

在使用前,请先开启邮箱的pop3服务

安装mailx

代码语言:javascript
复制
yum install -y mailx
apt-get install -y mailx

设置/etc/mail.rc文件,在文件尾追加如下配置

代码语言:javascript
复制
set from=xxoo@qq.com(发送邮件的📮)
set smtp=smtp.qq.com
set smtp-auth-user=xxoo@qq.com(发送邮件的📮,同上)
set smtp-auth-password=ooxx(邮箱的smtp密码,注意不是邮箱登录的密码)
set smtp-auth=login
set smtp-use-starttls
set ssl-verify=ignore
set nss-config-dir=/etc/pki/nssdb/

发送测试

代码语言:javascript
复制
echo "逍遥子大表哥" | mail -s "公众号 kali笔记" 914101530@qq.com

接下来,我们更新脚本。

代码语言:javascript
复制
#脚本
#!/bin/bash
cd ~
acme.sh --issue --dns dns_ali -d *.test.com --fullchain-file /home/ecs-user/test.pem --key-file /home/ecs-user/test.key
systemctl restart nginx
echo "站点HTTP证书更新完成" | mail -s "站点NB.COM已更新" 914101530@qq.com
sleep 30 #30s后关闭脚本
exit 0

最后,添加定时任务即可!

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2025-01-07,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 kali笔记 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 关于
  • 部署
  • 修改CA证书类型
  • 配置DNS API
  • 申请证书
  • 自动部署
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档