惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

月光博客
月光博客
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
阮一峰的网络日志
阮一峰的网络日志
罗磊的独立博客
T
Tailwind CSS Blog
博客园_首页
博客园 - 司徒正美
Google DeepMind News
Google DeepMind News
Hugging Face - Blog
Hugging Face - Blog
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
V
V2EX
J
Java Code Geeks
量子位
D
DataBreaches.Net
MongoDB | Blog
MongoDB | Blog
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Microsoft Azure Blog
Microsoft Azure Blog
P
Proofpoint News Feed
C
Check Point Blog
V
Visual Studio Blog
H
Help Net Security
Recent Announcements
Recent Announcements
Engineering at Meta
Engineering at Meta

希仁之拥

领克900半年使用体验 | 希仁之拥的博客 Ubuntu 26.04 Desktop使用体验 | 希仁之拥的博客 【转载】谈谈不受欢迎的博客技术特征 | 希仁之拥的博客 【转载】ClaudeCode 你想知道的所有秘密,源码深度研究报告 | 希仁之拥的博客 2025年年终总结 | 希仁之拥的博客 集成和使用Openclaw后的思考 | 希仁之拥的博客 我买了领克900 | 希仁之拥的博客 服务器性能优化之io拷贝 | 希仁之拥的博客 Go-Sail导航站上线啦 | 希仁之拥的博客 今年国庆的一些感受 [2025] | 希仁之拥的博客 在Deepin 25上配置forticlient | 希仁之拥的博客 分享一些酷酷的站点 [20250908] | 希仁之拥的博客 Go-Sail发布v3.0.6版本了 | 希仁之拥的博客 我对V2EX发布$V2EX讨论的一些感受 | 希仁之拥的博客 如何让Stripe支持支付宝和微信支付 | 希仁之拥的博客 2025上半年里程碑 | 希仁之拥的博客 GitLab+Drone使用体验 | 希仁之拥的博客 四姑娘山之旅 | 希仁之拥的博客 近来帮同事做性能优化的过程回顾 | 希仁之拥的博客 聊聊接口的返回数据结构 | 希仁之拥的博客 由GORM的Updates语法糖 我把 Go-Sail 的文档站更新了 | 希仁之拥的博客 这就是我为什么讨厌拼多多 | 希仁之拥的博客 元旦快乐~ | 希仁之拥的博客 致敬还在写博客的我们 | 希仁之拥的博客 逐步的把图片资源迁移到星光图床上 | 希仁之拥的博客 帮弟弟配了一台mini主机 | 希仁之拥的博客 国庆的一些碎碎念 | 希仁之拥的博客 就这一刻而言,我觉得科技冷冰冰的。 | 希仁之拥的博客 Go-Sail的文档站点搭建好了 | 希仁之拥的博客
如何使用acme.sh自动续签证书 | 希仁之拥的博客
希仁之拥 · 2024-07-17 · via 希仁之拥

随着 Google 推进90天证书步伐的加快,业内纷纷针对 “SSL证书有效期缩短至90天” 提出倡议,TrustAsia开始响应此倡议,因此基于TrustAsia提供免费证书的云服务商提供的免费证书有效期也逐步从1年缩短为90天。

iShot_2024-07-17_13.17.18.png
iShot_2024-07-17_13.21.34.png
90天的有效期,确实比较短,再加上如果你有不止一个域名证书需要维护,那么维护工作的确会变得棘手。另外,有可能还会忘记续签,总不至于设置闹钟来提醒吧。因此,我也开始加入到证书部署自动化中来了😊。

今天,我使用acme.sh开源脚本工具,基于Let's Encrypt提供商,实现了证书自动续期。简单记录一下过程:

安装acme.sh

curl https://get.acme.sh | sh -s email=my@example.com

在Github上有详细的教程,这里就不赘述了。

配置环境变量

由于续签证书需要验证域名所有权,因此,需要对域名进行验证,例如常见的DNS解析验证。

因此,需要设置域名注册商的api访问权限以备acme脚本可以自动调用。我的两个域名先后注册在阿里云和腾讯云上,所以需要设置这两个供应商的api访问密钥。
首先需要创建一个子账户(为了账号安全,强烈建议使用子账户),然后对该子账户开放DNS解析控制权限。之后将对应的key和secret配置到环境变量文件~/.acme.sh/acme.sh.env中。

  • 阿里云
export Ali_Key="xxx"
export Ali_Secret="xxx"
  • 腾讯云
export Tencent_SecretId="xxx"
export Tencent_SecretKey="xxx"

设置acme.sh默认的证书服务商

我这里设置的是 letsencrypt

acme.sh --set-default-ca --server letsencrypt

执行证书颁发命令

我这里设置的是通配符证书

# 阿里云
acme.sh --issue --dns dns_ali -d *.keepchen.com -w /workspace/nginx/ssl_files/acme

# 腾讯云
acme.sh --issue --dns dns_tencent -d *.xxx.com -w /workspace/nginx/ssl_files/acme

命令执行之后,证书文件会被保存到指定目录下:

/home/<账号名>/.acme.sh/*.keepchen.com_ecc

修改代理服务器配置

我这里是nginx

ssl_certificate /home/<账号名>/.acme.sh/*.keepchen.com_ecc/fullchain.cer;
ssl_certificate_key /home/<账号名>/.acme.sh/*.keepchen.com_ecc/*.keepchen.com.key;

校验配置和证书是否正确:

sudo nginx -t

重启nginx让证书生效:

sudo service nginx restart  
# 也可以使用平滑重启:  
sudo nginx -s reload

从浏览器查看证书:
iShot_2024-07-17_13.47.18.png

设置计划任务自动续签

我这里使用Linux Crontab

将上面用到的命令统一编写到一个shell脚本中,然后配置crontab:

# 每月1号晚上23:30执行
30 23 1 * * sh /workspace/nginx/acme-shell/auto-renew-ssl.sh >> /dev/null

收工


980_120.png(via stardots.io)

觉得博主写的不错?给他一个赞赏:

keepchen的赞赏码-支付宝 keepchen的赞赏码-微信