acme.sh使用进阶:acme.sh 手动更新 SSL 证书的详细步骤

acme.sh使用进阶:acme.sh 手动更新 SSL 证书的详细步骤

V+变量
2025-03-11 / 1 评论 / 6 阅读 / 正在检测是否收录...

一 前言

关于 TLS/SSL
传输层安全协议(英语:Transport Layer Security,缩写:TLS),及其前身安全套接层(Secure Sockets Layer,缩写:SSL)是一种安全协议,目的是为互联网通信,提供安全及数据完整性保障

为什么要部署 HTTPS
说到底,就是 HTTPS 更安全。甚至为了安全,一个专业可靠的网站, HTTPS 是必须的。 Firefox 和 Chrome 都计划将没有配置 SSL 加密的 HTTP 网站标记为不安全(貌似 Firefox 50 已经这么干了),目前它们也正在联合其他相关的基金会与公司推动整个互联网 HTTPS 化,现在大家访问的一些主要的网站。如 Google 多年前就已经全部启用 HTTPS ,国内的淘宝、搜狗、知乎、百度等等也全面 HTTPS 了。甚至 Google 的搜索结果也正在给予 HTTPS 的网站更高的排名和优先收录权。

怎么部署 HTTPS
你只需要有一张被信任的 CA ( Certificate Authority )也就是证书授权中心颁发的 SSL 安全证书,并且将它部署到你的网站服务器上。一旦部署成功后,当用户访问你的网站时,浏览器会在显示的网址前加一把小绿锁,表明这个网站是安全的,当然同时你也会看到网址前的前缀变成了 HTTPS ,不再是 HTTP 了。

怎么获得 SSL 安全证书
理论上,我们自己也可以签发 SSL 安全证书,但是我们自己签发的安全证书不会被主流的浏览器信任,所以我们需要被信任的证书授权中心( CA )签发的安全证书。而一般的 SSL 安全证书签发服务都比较贵,比如 Godaddy 、 GlobalSign 等机构签发的证书一般都需要 20 美金一年甚至更贵,不过为了加快推广 HTTPS 的普及, EEF 电子前哨基金会、 Mozilla 基金会和美国密歇根大学成立了一个公益组织叫 ISRG ( Internet Security Research Group ),这个组织从 2015 年开始推出了 Let’s Encrypt 免费证书。这个免费证书不仅免费,而且还相当好用,所以我们就可以利用 Let’s Encrypt 提供的免费证书部署 HTTPS 了

之前本站介绍过如何安装acme.sh,以及通过阿里云API自动签发证书:
acme.sh免费SSL证书申请教程——安装acme.sh并使用阿里云域名API自动签发证书。本文介绍在个别情况下SSL自动更新失败的时候如何手动更新SSL。

二 安装步骤

1 查看证书到期时间

在更新前,确认当前证书的到期时间:

acme.sh --list

或直接查看证书文件:

openssl x509 -enddate -noout -in /path/to/cert.pem

2. 手动触发证书续期

使用 --renew 或 --renew-all 命令手动更新证书:

# 更新单个域名
acme.sh --renew -d vvars.com
# 更新所有证书
acme.sh --renew-all

3. 指定验证方式(如需要)

根据证书初次申请时使用的验证方式,可能需要额外参数:
1)HTTP 验证
确保 Web 服务器可访问 .well-known/acme-challenge/ 目录:

acme.sh --renew -d vvars.com --webroot /var/www/html

2)DNS 验证
使用 DNS API 自动验证(如 Cloudflare、阿里云等):

# 示例:Cloudflare
export CF_Key="your_api_key"
export CF_Email="[email protected]"
acme.sh --renew -d example.com --dns dns_cf

4. 强制更新(可选)

若证书未到期但需强制更新,添加 --force 参数:

acme.sh --renew -d vvars.com --force

5. 检查续期日志

若更新失败,使用 --debug 查看详细日志:

acme.sh --renew -d vvars.com --debug

6. 重启 Web 服务器

更新后,重新加载配置使新证书生效:

# Nginx
sudo nginx -s reload

# Apache
sudo systemctl reload apache2

7. 确认自动续期配置

确保 acme.sh 的自动任务已启用:

crontab -l | grep acme.sh

正常会显示类似:
0 0 * "/home/user/.acme.sh"/acme.sh --cron

三 常见问题

1 权限问题

确保 acme.sh 有权限写入证书目录。
避免使用 sudo,建议以普通用户运行。

2 DNS API 配置

若使用 DNS 验证,确保环境变量(如 CF_Key)已正确设置。

3 证书路径变更

若需更改证书保存路径,使用 --cert-file 和 --key-file 参数指定位置。

0

评论 (1)

取消
  1. 头像

    [...]一 前言随着各大搜索引擎增加对SSL证书认证的网站的收录和权重,获取SSL证书也成为各网站的首选,但一般各大SSL证书商提供的证书较贵,而网上提供90天的免费证书提供商有很多,每隔3个月的续期给网站管理带来挑战。关于acme.sh手动更新SSL证书,可以参考:acme.sh使用进阶:acme.sh 手动更新 SSL 证书的详细步骤1 ACME主要特点ACME.sh是一款非常优秀的签发SSL证书并自[...]

    回复