使用 acme.sh 脚本自动申请并续签免费 SSL 证书

2025.11.10 杂七杂八 527
33BLOG智能摘要
证书过期导致网站瞬间崩溃?别再手动续签了!技术博主亲测:用acme.sh脚本5分钟搞定免费SSL证书自动申请+终身续签,从此告别网站下线噩梦。本文揭秘Let's Encrypt证书管理的终极方案——无需停机、零成本,只需4步:一键安装脚本、DNS验证秒过(支持Cloudflare/阿里云等)、自动部署到Nginx/Apache、内置90天静默续期。重点披露实战避坑指南:网络不稳安装陷阱?权限错误导致续签中断?博主连踩3个大坑的解决方案全公开。更附赠强制续签命令和SSL Labs测试技巧,手把手教你把证书管理压缩成“设置一次,永不再管”的自动化流程。个人博客、小型项目必备神器,现在读完就能部署,彻底解决HTTPS安全焦虑!
— 此摘要由33BLOG基于AI分析文章内容生成,仅供参考。

使用 acme.sh 脚本自动申请并续签免费 SSL 证书

使用 acme.sh 脚本自动申请并续签免费 SSL 证书

大家好,我是 33blog 的技术博主。今天想和大家分享一个非常实用的工具——acme.sh,它能够帮助我们自动申请和续签免费的 SSL 证书。在实际部署中,我多次使用它来为网站启用 HTTPS,过程简单且稳定。下面,我将一步步带你完成整个流程,包括一些我踩过的坑和解决方案。

1. 安装 acme.sh

首先,我们需要在服务器上安装 acme.sh。它支持多种安装方式,我推荐使用一键安装脚本,简单快捷。登录你的服务器(如 Linux VPS),执行以下命令:

curl https://get.acme.sh | sh

安装完成后,脚本会自动添加一个别名到你的 shell 配置中(如 ~/.bashrc)。你可以重新加载配置或重新登录来生效。acme.sh 默认使用 Let’s Encrypt 作为证书颁发机构(CA),它提供免费的 SSL 证书,非常适合个人和小型项目。

踩坑提示:如果服务器网络不稳定,安装可能会失败。建议先检查 curl 是否可用,或者尝试使用 wget 替代。另外,确保服务器时间正确,否则可能导致证书申请失败。

2. 申请 SSL 证书

acme.sh 支持多种验证方式,我常用的是 DNS 验证,因为它不需要暂停 Web 服务。假设你要为域名 example.com 申请证书,可以按以下步骤操作。

首先,使用 DNS API 方式(这里以 Cloudflare 为例,你需要提前获取 API 密钥):

export CF_Key="你的_Cloudflare_API_Key"
export CF_Email="你的_Cloudflare_邮箱"
acme.sh --issue --dns dns_cf -d example.com -d www.example.com

这个命令会为 example.com 和 www.example.com 申请一个通配符证书。acme.sh 会自动处理 DNS 记录验证,完成后证书会保存在 ~/.acme.sh/example.com/ 目录下。

实战经验:如果你使用其他 DNS 服务商,acme.sh 也支持许多内置插件,比如阿里云、GoDaddy 等。查看官方文档获取具体参数。申请过程中,如果遇到超时,可以尝试增加 –debug 参数来排查问题。

3. 安装证书到 Web 服务器

申请成功后,我们需要将证书安装到 Web 服务器(如 Nginx 或 Apache)。acme.sh 提供了方便的安装命令,可以自动复制证书到指定目录并重启服务。

以 Nginx 为例,假设你的配置目录是 /etc/nginx/,执行:

acme.sh --install-cert -d example.com 
--key-file /etc/nginx/ssl/example.com.key 
--fullchain-file /etc/nginx/ssl/example.com.cer 
--reloadcmd "systemctl reload nginx"

这个命令会将私钥和证书链文件复制到 /etc/nginx/ssl/ 目录,并设置自动续签后重启 Nginx。记得提前创建 ssl 目录(mkdir -p /etc/nginx/ssl),否则会报错。

踩坑提示:如果服务器权限设置严格,可能需要用 sudo 执行。另外,确保 reloadcmd 中的命令可用,我曾在测试环境中因拼写错误导致续签失败。

4. 配置自动续签

acme.sh 的亮点之一是自动续签。安装时,它会添加一个定时任务(cron job),每天检查证书是否快过期(Let’s Encrypt 证书有效期为 90 天),并自动更新。

你可以手动查看定时任务:

crontab -l

如果看到类似 “0 0 * * * /root/.acme.sh/acme.sh –cron” 的行,说明自动续签已启用。无需额外操作,acme.sh 会静默处理。

实战经验:我建议定期检查证书状态,使用 acme.sh –list 查看所有证书。如果遇到续签问题,日志文件在 ~/.acme.sh/acme.sh.log,可以帮助快速定位。

5. 测试和验证

最后,别忘了测试证书是否生效。访问你的网站,确保浏览器显示 HTTPS 锁标志。你也可以用在线工具如 SSL Labs 测试评分。

如果需要手动强制续签(例如测试),可以运行:

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

这样,你就完成了整个流程。acme.sh 让 SSL 证书管理变得轻松,我再也不用担心证书过期问题了。

希望这篇教程对你有帮助!如果你在操作中遇到问题,欢迎在评论区留言,我会尽力解答。记得备份重要数据,祝你部署顺利!

评论