⭐⭐⭐ Spring Boot 项目实战 ⭐⭐⭐ Spring Cloud 项目实战
《Dubbo 实现原理与源码解析 —— 精品合集》 《Netty 实现原理与源码解析 —— 精品合集》
《Spring 实现原理与源码解析 —— 精品合集》 《MyBatis 实现原理与源码解析 —— 精品合集》
《Spring MVC 实现原理与源码解析 —— 精品合集》 《数据库实体设计合集》
《Spring Boot 实现原理与源码解析 —— 精品合集》 《Java 面试题 + Java 学习指南》

摘要: 原创出处 极客之家 「丛林」欢迎转载,保留摘要,谢谢!


🙂🙂🙂关注微信公众号:【芋道源码】有福利:

  1. RocketMQ / MyCAT / Sharding-JDBC 所有源码分析文章列表
  2. RocketMQ / MyCAT / Sharding-JDBC 中文注释源码 GitHub 地址
  3. 您对于源码的疑问每条留言都将得到认真回复。甚至不知道如何读源码也可以请教噢。
  4. 新的源码解析文章实时收到通知。每周更新一篇左右。
  5. 认真的源码交流微信群。

如果你自己部署过网站,或者运维过服务器,一定对SSL/TLS证书又爱又恨。爱的是,它给网站挂上了那把安全的小锁(🔒),瞬间专业又可靠;恨的是,这玩意儿它会过期!

而且现在主流的免费证书有效期都缩短到了90天,一不留神就“证书过期”,网站直接罢工给你看。

以前,我们得在日历上设好提醒,每隔几个月就手动登录服务器,重新申请、下载、配置证书……繁琐又容易忘。

但现在,有了 ACME (自动证书管理环境) 协议,这一切都可以自动化了。而今天要介绍的 acme.sh,就是实现这个“自动驾驶”梦想的、一个极其强大又轻巧的Shell脚本工具。

简介

acme.sh 是一款免费、开源、轻量级的 ACME 协议客户端工具,专门用于自动化申请和续期 SSL/TLS 证书,支持 Let’s Encrypt、ZeroSSL、Buypass 等主流免费证书颁发机构(CA)。它的核心优势是无依赖、跨平台、自动化程度高,广泛用于服务器、嵌入式设备等场景的证书管理。

核心优势

ACME客户端有很多选择,比如EFF官方的Certbot、Go语言写的lego等。但acme.sh在其中脱颖而出,得益于以下几个优势特征:

1. 纯粹与零依赖 它的最大特点是用纯Unix Shell脚本编写。这意味着它不需要Python、Go或其他任何运行时环境,在绝大多数Linux/Unix系统上(包括各种精简的Docker容器)开箱即用。这极大地减少了兼容性问题和依赖冲突,让部署变得无比简单。

2. 强大的跨平台能力 别被“Shell脚本”局限,它的支持列表非常广泛:从各种Linux发行版(Ubuntu, CentOS等)、BSD系统(FreeBSD, OpenBSD),到macOS,甚至通过Cygwin或WSL支持Windows。

3. “全家桶”式的功能支持

  • 证书类型:支持普通的单域名证书、多域名SAN证书,以及非常实用的通配符证书(*.example.com)。
  • 验证方式:除了基本的HTTP文件验证,它最受推崇的是对数十种DNS API的集成支持(如Cloudflare,阿里云,腾讯云DNSPod等)。你只需要配置好API密钥,它就能自动操作DNS添加TXT记录完成验证,特别适合那些没有公网IP或80/443端口被封的服务器。
  • 加密算法:支持传统的RSA和更现代、更高效的ECC(椭圆曲线)证书。
  • 自动化闭环:不仅自动申请,还能通过--install-cert命令自动将证书安装到Nginx/Apache等服务器,并执行重载命令。安装后自动创建cron任务,未来所有的续期、部署全部静默完成,你甚至感觉不到它的存在。

4. 多CA支持与灵活切换 它不绑定任何一家CA。默认使用ZeroSSL,但一键就能切换到Let‘s Encrypt、Buypass、SSL.com或Google Public CA。下表是主要免费CA的对比,帮你做选择:

特性 Let‘s Encrypt ZeroSSL(默认) Buypass Google Public CA
有效期 90天 90天 180天 90天
通配符 支持 支持 (已停止服务) 支持
多域名 支持(最多100个) 支持 原支持最多5个 支持
国内访问 优秀 优秀 N/A 验证服务器可能被墙
特点 社区标杆,应用最广 提供Web管理界面 曾以180天有效期著称 需申请内测

你可以根据网络状况或偏好自由切换:acme.sh --set-default-ca --server letsencrypt。

使用指南

第1步:一键安装 打开终端,一行命令搞定(请替换`your-email@example.com`):

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

或者用wget。安装脚本会自动将acme.sh添加到你的用户路径(~/.acme.sh/)。

第2步:签发证书 假设你的域名是example.com,并且已经解析到了当前服务器。

# 使用Nginx等Web服务器运行模式进行验证(80端口需空闲)
acme.sh --issue -d example.com -d www.example.com --nginx
# 或者使用独立模式(如果80端口空闲,但未安装Nginx/Apache)
# acme.sh --issue -d example.com --standalone

几秒钟后,证书和密钥就会安静地躺在~/.acme.sh/example.com/目录下。

第3步:自动安装到Nginx(关键!) 这是实现完全自动化的魔法命令:

acme.sh --install-cert -d example.com \
--key-file /etc/nginx/ssl/example.com.key \
--fullchain-file /etc/nginx/ssl/example.com.fullchain.crt \
--reloadcmd “systemctl reload nginx”

这个命令做了两件事:

  1. 把证书和密钥复制到你指定的Nginx配置路径;
  2. 更重要的是,它记住了这个位置和重载命令。 以后证书自动续期后,它会自动复制新文件并执行systemctl reload nginx,服务无缝切换,零中断。

第4步:坐享其成 从此,你再也不用惦记证书何时过期。acme.sh创建的cron任务会默默检查并管理一切。你可以通过acme.sh --list查看所有已管理的证书。

开源地址

https://github.com/acmesh-official/acme.sh

文章目录
  1. 1. 简介
  2. 2. 核心优势
  3. 3. 使用指南
  4. 4. 开源地址