Email:2225994292@qq.com
CNY
如何使用ACME协议自动化安装与续期SSL证书
更新时间:2025-07-02 作者:SSL证书自动化

ACME协议让SSL证书安装与续期实现自动化,极大提升效率。我将从ACME协议原理出发,介绍常用工具,再结合不同Web服务器环境,详细讲解操作步骤与注意事项。

一、ACME协议概述

1. ACME协议的作用与优势

ACME协议是一种基于HTTP的开放标准协议,旨在简化SSL证书的获取和管理流程。它允许客户端(如网站服务器)与证书颁发机构(CA)进行自动化交互,无需人工手动干预繁琐的验证和配置步骤。使用ACME协议的主要优势包括:

  • 自动化操作:从证书申请、验证到安装,整个过程可通过脚本或工具自动完成,大幅节省时间和人力成本。
  • 降低错误率:减少手动操作带来的失误,如信息填写错误、验证失败等问题,提高证书申请和安装的成功率。
  • 广泛兼容性:支持众多主流CA,如Let's Encrypt、ZeroSSL等,用户可根据需求灵活选择,且适用于多种Web服务器和操作系统环境。

2. ACME协议的工作原理

ACME协议基于客户端与CA服务器之间的HTTP交互,核心流程如下:

  • 账户注册:客户端向CA服务器发送注册请求,创建ACME账户,并获取账户私钥。账户私钥用于后续请求的签名,确保请求的真实性和合法性。
  • 订单创建:客户端提交包含域名信息的证书订单请求。CA服务器接收到订单后,会生成一个挑战(Challenge),用于验证客户端对域名的控制权。
  • 挑战验证:常见的挑战类型有HTTP - 01、DNS - 01等。例如,HTTP - 01挑战要求客户端在Web服务器指定路径下放置特定文件,CA服务器通过访问该文件验证客户端是否拥有域名控制权;DNS - 01挑战则需要在域名的DNS记录中添加特定的TXT记录。客户端按要求完成挑战设置后,通知CA服务器进行验证。
  • 证书颁发:CA服务器验证通过后,生成对应的SSL证书,并将证书发送给客户端。客户端接收证书后,即可安装到Web服务器中启用HTTPS
  • 证书续期:SSL证书具有有效期,临近过期时,客户端可再次通过ACME协议发起续期请求,重复上述流程完成证书更新。

二、常用的ACME客户端工具

1. Certbot

Certbot是目前使用最广泛的ACME客户端工具,由Let's Encrypt官方开发和维护,支持多种操作系统(如Linux、Windows、macOS)和Web服务器(如Apache、Nginx)。它提供了简单易用的命令行接口,并且具备自动化证书续期功能,通过系统定时任务实现证书到期前自动更新。例如,在Ubuntu系统中安装Certbot后,只需执行简单命令即可为网站申请证书,如为Apache服务器下的 example.com 域名申请证书:

1    sudo certbot --apache -d example.com -d www.example.com

2. acme.sh

acme.sh是一款开源的ACME客户端,以Shell脚本编写,具有高度的灵活性和扩展性。它不仅支持Let's Encrypt,还支持众多其他CA。acme.sh提供了丰富的插件机制,可方便地与各种Web服务器集成,实现证书自动安装和部署。例如,使用acme.sh为Nginx服务器申请证书并自动部署:

1    curl  https://get.acme.sh | sh
2    ~/.acme.sh/acme.sh  --install -m your_email@example.com
3    ~/.acme.sh/acme.sh  --nginx -d example.com -d www.example.com

3. ZeroSSL CLI

ZeroSSL是提供免费SSL证书服务的CA,其官方CLI工具(ZeroSSL CLI)同样基于ACME协议,用于自动化管理ZeroSSL颁发的证书。它支持多种操作系统,并且具备直观的交互界面,适合希望使用特定CA证书的用户。用户可通过ZeroSSL CLI完成从证书申请、安装到续期的全流程操作。

三、使用ACME协议自动化安装SSL证书

1. 以Certbot为例在Apache服务器上安装证书

  • 安装Certbot:不同操作系统安装Certbot的方式略有差异。在Ubuntu系统中,可执行以下命令安装:
1    sudo apt update
2    sudo apt install certbot python3-certbot-apache

在CentOS系统中,安装命令如下:

1    sudo yum install epel-release
2    sudo yum install certbot python3-certbot-apache
  • 申请证书:执行申请证书命令,例如为 example.com 及其子域名 www.example.com 申请证书:
1    sudo certbot --apache -d example.com -d www.example.com

Certbot会自动完成域名验证(采用HTTP - 01挑战方式),并将证书安装到Apache服务器的配置文件中,同时自动配置HTTPS相关设置。

  • 验证安装:在浏览器中输入 https://example.com ,查看是否能正常访问网站,且地址栏出现安全锁图标,确认证书安装成功。

2. 以acme.sh为例在Nginx服务器上安装证书

  • 安装acme.sh:通过以下命令下载并安装acme.sh:
1    curl  https://get.acme.sh | sh
2    source ~/.bashrc
  • 配置邮箱(可选):为接收证书相关通知,可配置邮箱:
1    acme.sh  --set -default -account -email your_email@example.com
  • 申请并安装证书:执行命令为 example.com 及其子域名申请证书并部署到Nginx:
1    acme.sh  --nginx -d example.com -d www.example.com

acme.sh会自动生成证书文件,并修改Nginx配置文件,启用HTTPS访问。

四、使用ACME协议自动化续期SSL证书

1. Certbot自动续期

Certbot默认会自动配置证书续期任务。在Ubuntu或CentOS系统中,可通过查看定时任务配置文件(如 /etc/cron.d/certbot )确认续期任务已添加。Certbot通常会在证书到期前一定时间(如30天)自动发起续期请求,完成证书更新,并重新配置Web服务器。用户无需手动干预,只需确保系统时间准确、网络连接正常,以及Certbot相关服务正常运行即可。

2. acme.sh自动续期

acme.sh自身具备自动续期功能,默认会在证书到期前30天自动续期。它会在系统中创建定时任务(如在Linux系统的 /etc/crontab 或用户的 crontab 文件中添加任务),定期检查证书有效期。当检测到证书临近过期时,自动发起续期请求,完成证书更新后,还会自动重新部署证书到Web服务器,确保网站始终使用有效证书提供HTTPS服务。

五、使用ACME协议的注意事项

1. 账户安全:ACME账户私钥至关重要,需妥善保管,防止泄露。避免在不可信环境中使用账户私钥,定期备份私钥并存储在安全位置。

2. 挑战类型选择:根据实际环境选择合适的挑战类型。若Web服务器可正常对外访问,HTTP - 01挑战较为便捷;若存在网络限制或需要验证域名所有权,DNS - 01挑战更为可靠。

3. 服务器配置要求:确保Web服务器运行正常,端口开放,且具备足够权限执行证书安装和配置操作。例如,Certbot和acme.sh在安装证书时需要对Web服务器配置文件进行修改,需保证相应文件的写入权限。

4. 监控与维护:定期检查证书状态和续期情况,可通过日志文件或工具提供的状态查询功能进行查看。若出现续期失败等问题,及时排查原因,如网络故障、服务器配置变更等,并进行修复。

ACME协议为SSL证书的自动化管理提供了高效、便捷的解决方案。通过合理选择ACME客户端工具,并按照上述步骤操作,用户能够轻松实现SSL证书的自动化安装与续期,保障网站的安全运行。


Dogssl.cn拥有20年网络安全服务经验,提供构涵盖国际CA机构SectigoDigicertGeoTrustGlobalSign,以及国内CA机构CFCA沃通vTrus上海CA等数十个SSL证书品牌。全程技术支持及免费部署服务,如您有SSL证书需求,欢迎联系!
相关文档
立即加入,让您的品牌更加安全可靠!
申请SSL证书
0.156071s