Linux下SSL证书到期怎么配置脚本自动续期

夏静同学_8890

夏静同学_8890

2026-10-19

603人浏览

原创

acme.sh是纯shell实现的轻量级acme客户端,零依赖、安装即用,支持dns/http/standalone验证,内置cron自动续期与nginx重载逻辑,比certbot更稳定适配老旧系统。

linux下ssl证书到期怎么配置脚本自动续期

直接用 acme.sh 配合 crontab 就能搞定,不用写复杂脚本,也不依赖 Python 环境或 systemd timer —— 这是目前最轻量、最稳定、适配性最强的方案。

为什么选 acme.sh 而不是 certbot

acme.sh 是纯 Shell 实现,无外部依赖,安装即用;certbot 依赖 Python 和大量包,在老旧系统(如 CentOS 7)上常因 OpenSSL 版本或 pip 源问题失败。更重要的是:acme.sh 的续期命令自带重载逻辑,而 certbot 必须额外写 hook 脚本才能 reload Nginx,稍有疏漏就导致证书更新了但服务没生效。

  • 证书路径默认在 ~/.acme.sh/,不污染系统目录
  • 支持 --webroot(推荐)、--standalone、DNS API(阿里云/Cloudflare 等)三种验证方式,无需开放 443 或停服务
  • 续期后自动触发 --reloadcmd,只要一条命令就能完成“签发 + 复制 + 重载”全流程

关键命令:一次签发 + 自动部署

假设你的域名是 example.com,网站根目录为 /var/www/html,Nginx 配置中证书路径设为 /etc/nginx/ssl/example.com.pem 和 /etc/nginx/ssl/example.com.key:

acme.sh --issue -d example.com -d www.example.com --webroot /var/www/html \
  --install-cert -d example.com \
    --key-file      /etc/nginx/ssl/example.com.key \
    --fullchain-file /etc/nginx/ssl/example.com.pem \
    --reloadcmd     "nginx -s reload"

注意:--install-cert 不是“只装一次”,它会把续期动作也绑定进去 —— 后续所有 acme.sh --renew 都会自动执行上面三个参数。

Obsidian (Linux)
Obsidian (Linux)

操作 Obsidian 库(纯 Markdown 笔记),并通过 notesmd-cli 实现自动化。

下载
  • --reloadcmd 必须用绝对路径调用 nginx(如 /usr/sbin/nginx -s reload),否则 crontab 下可能找不到命令
  • 如果 Nginx 运行用户不是 root,需确保 /etc/nginx/ssl/ 目录对该用户可读,且私钥权限为 600
  • 首次运行后检查 /etc/nginx/ssl/ 下文件是否生成,并手动执行一次 nginx -t && nginx -s reload 验证配置有效性

让 crontab 每天凌晨 3 点自动续期

acme.sh 内置的定时任务(acme.sh --install-cronjob)会往 root 用户的 crontab 写入一行,但容易被其他工具覆盖或权限干扰。更可控的做法是手动加:

sudo crontab -e

添加这行:

0 3 * * * "/root/.acme.sh/acme.sh" --renew --force --quiet
  • --renew 会检查证书剩余有效期,仅当 ≤ 30 天时才真正执行续期(避免频繁请求被限流)
  • --force 强制检查,配合 --quiet 可抑制日志刷屏,适合生产环境
  • 不要用 */12 或 */6 这类高频周期 —— Let's Encrypt 对同一域名每小时最多验证 5 次,误触可能进黑名单

最容易被忽略的两个坑

一是 HTTP 验证路径权限不对:/var/www/html/.well-known/acme-challenge/ 必须对 world-readable(至少 755),否则 CA 请求返回 403,续期静默失败;二是 Nginx 的 location ^~ /.well-known/acme-challenge/ 块必须放在所有 location ~ \.php$ 或 rewrite 规则之前,否则 PHP 脚本拦截了验证请求,返回 200 但内容为空 —— 这种错误不会报错,只会卡在“验证超时”,查日志也只看到 Connection refused。

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
SSL检测工具介绍
SSL检测工具介绍

SSL检测工具有SSL Labs、SSL Check、SSL Server Test、SSLMate、SSL/TLS Analyzer等。详细介绍:1、SSL Labs是一个由Qualys提供的在线SSL检测工具,可以评估服务器证书的部署情况、加密套件、协议支持等方面的安全性,它提供了一个详细的报告,包括证书的颁发者、有效期、安全性配置等;2、SSL Check等等。

2023.10.20

770

3

磁盘配额是什么
磁盘配额是什么

磁盘配额是计算机中指定磁盘的储存限制,就是管理员可以为用户所能使用的磁盘空间进行配额限制,每一用户只能使用最大配额范围内的磁盘空间。php中文网为大家提供各种磁盘配额相关的内容,教程,供大家免费下载安装。

2023.06.21

4090

4

如何安装LINUX
如何安装LINUX

本站专题提供如何安装LINUX的相关教程文章,还有相关的下载、课程,大家可以免费体验。

2023.06.29

3473

10

linux find
linux find

find是linux命令,它将档案系统内符合 expression 的档案列出来。可以指要档案的名称、类别、时间、大小、权限等不同资讯的组合,只有完全相符的才会被列出来。find根据下列规则判断 path 和 expression,在命令列上第一个 - ( ) , ! 之前的部分为 path,之后的是 expression。还有指DOS 命令 find,Excel 函数 find等。本站专题提供linux find相关教程文章,还有相关

2023.06.30

2673

5

linux修改文件名
linux修改文件名

本专题为大家提供linux修改文件名相关的文章,这些文章可以帮助用户快速轻松地完成文件名的修改工作,大家可以免费体验。

2023.07.05

6510

7

linux系统安装教程
linux系统安装教程

linux系统是一种可以免费使用,自由传播,多用户、多任务、多线程、多CPU的操作系统。本专题提供linux系统安装教程相关的文章,大家可以免费体验。

2023.07.06

6162

7

linux查看文件夹大小
linux查看文件夹大小

Linux是一种自由和开放源码的类Unix操作系统,存在着许多不同的Linux版本,但它们都使用了Linux内核。Linux可安装在各种计算机硬件设备中,比如手机、平板电脑、路由器、视频游戏控制台、台式计算机、大型机和超级计算机。linux怎么查看文件夹大小呢?php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

2023.07.20

3593

8

linux查看ip命令
linux查看ip命令

本专题为大家提供linux查看ip命令相关文章内容,感兴趣的朋友可以免费下载体验试试。

2023.07.20

3065

4

linux查看cpu使用率
linux查看cpu使用率

在linux的系统维护中,可能需要经常查看cpu使用率,分析系统整体的运行情况。本专题为大家带来了linux查看cpu使用率的相关文章,感兴趣的朋友千万不要错过了。

2023.07.25

3299

6

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Linux man-pages 项目
Linux man-pages 项目

共0课时 | 0人学习

Linux系统运维及项目正式上线
Linux系统运维及项目正式上线

共14课时 | 2.8万人学习

Linux负载均衡视频教程
Linux负载均衡视频教程

共7课时 | 1.9万人学习