Dynadot 搬瓦工 腾讯云

使用 ACME.SH 实现 SSL 证书自动化管理教程

Sider GigsGigsCloud

目前很多免费证书都是有效期只有 90 天,这一趋势下,如何有效管理 SSL 证书成了一道难题。目前使用 ACME.SH 就能实现 SSL 证书的无限“续杯”,本文分享一下教程。

那什么是 ACME.SH?怎么用它来申请并管理 SSL 证书?它有哪些优势和不足?带着这些疑问让我们来一探究竟~

一、什么是 ACME.SH?

ACME(Automatic Certificate Management Environment)即自动证书管理环境,是一种用于自动化管理和获取 SSL 证书的协议。ACME.SH 则是常见的 ACME 客户端之一。

ACME.SH 是一个轻量级 Shell 脚本,支持自动申请和续签证书,兼容多种 DNS 提供商和 Web 服务器。如果你拥有一定的技术实力,并且喜欢各种“折腾”,那么用 ACME.SH 来管理 SSL 证书会是个不错的选择。

通过使用 ACME.SH,您可以轻松地为您的网站实现 SSL 证书的无限“续杯”,确保网站始终保持安全。此外,ACME.SH 的自动续订功能可以节省手动续订证书的时间和精力,无需担心 SSL 证书的到期和续订问题。

除了自动续订功能外,ACME.SH 还提供了很多其他功能和选项,例如 DNS 验证、通配符证书和与其他工具和服务的集成。使您能够灵活地配置和管理 SSL 证书,满足您的特定需求。

二、如何使用 ACME.SH 管理证书

想要使用 ACME.SH 实现 SSL 证书的无限“续杯”,你需要在终端执行一些特定命令。

■ 申请安装证书

第一步,需要安装 ACME.SH(可通过官网下载)

在服务器上通过以下命令安装 ACME.SH:

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

第二步,配置环境

设置环境变量以便 ACME.SH 识别你的域名:

export DOMAIN="yourdomain.com"

第三步,申请证书

一般有两种申请方法:

1、如果使用 HTTP 验证:

acme.sh --issue --webroot /path/to/webroot -d $DOMAIN

2、如果使用 DNS 验证:

acme.sh --issue --dns dns_cf -d $DOMAIN

这里以腾讯云为例:

如果你的域名在在腾讯云,使用类似的命令如下:

acme.sh --issue --dns dns_tencent -d example.com -d *.example.com -d 
a.com --server https://acme-v02.api.letsencrypt.org/directory

dns dns_tencent:使用腾讯云 dns 插件,需要配置环境变量,下面配置环境变量的命令仅在当前窗口有效,请根据自己的服务器配置永久生效的环境变量

export Tencent_SecretId="<id>"
export Tencent_SecretKey="<key>"

第四步,安装证书

将证书安装到 Web 服务器(例如 Nginx):

acme.sh --install-cert -d $DOMAIN 
\--key-file /path/to/keyfile 
\--fullchain-file /path/to/fullchainfile 
\--reloadcmd "service nginx reload"

■ 实现自动续期

ACME.SH 会自动检查证书的到期日期并在必要时进行续期。可通过以下命令手动触发续期测试:

acme.sh --renew -d $DOMAIN --force

你也可以添加定时任务(cron job)以确保定期检查和续期:

crontab -e

在打开的 crontab 文件中添加以下行:

0 0 * * * "/root/.acme.sh"/acme.sh --cron --home "/root/.acme.sh" > /dev/null

以上是 ACME.SH 使用流程的简单介绍。

三、ACME 的适用场景

前面提到,ACME.SH 作为一个强大且实用的证书管理工具,能通过一些指令实现证书的自动申请、安装和续期,支持多种验证方式,具有极高的灵活性。当然,最香的还是因为它免费。

然而,直呼 ACME.SH 真香的同时,它也存在一些限制和不足。

1、支持的证书类型有限

ACME.SH 通常只能签发 DV(域名验证)证书,不支持信任度更高的 OV(组织验证)和 EV(扩展验证)证书。

此外,ACME.SH 也主要用于签发免费的 SSL 证书,而不常用于付费证书的申请和管理。

2、具有一定的技术门槛

使用 ACME.SH 管理 SSL 证书,需要通过命令行完成。这对技术要求较高,复杂的配置过程可能让人望而却步。加上续期证书需要设置脚本的定时任务,这一过程相对复杂,需要手动确认和管理,如果续期过程出现问题,可能导致证书过期,也带来安全风险。

传统型 SSL 证书的证书私钥和公钥可以直接下载到本地,直接上传到云平台绑定对应的云资源使用(例如绑定负载均衡、边缘加速产品等),通过 ACME 申请的证书私钥保存在客户端,无法直接上传到云平台使用。

3、存在一定的安全风险

在服务器上配置密钥存在一定的安全风险。如果密钥泄露,可能会影响整个系统的访问控制权,增加安全隐患。

其次,ACME.SH 本身没有内置的监控功能,无法实时监控证书的状态和续期情况。如果出现证书过期或续期失败的情况,用户可能无法及时发现并处理,安全风险大大增加。

由此看来,ACME.SH 更适合一些开发者,技术爱好者去使用。如果你没有一定的技术能力,对安全性有更高的要求,追求更加便捷的操作,使用 ACME.SH 管理 SSL 证书可能并非是最佳选择。

参考文章:《如何用ACME.SH实现SSL证书自动化管理?》。

Dynadot Hostwinds
赞(0)
版权声明:本文采用知识共享 署名4.0国际许可协议 [BY-NC-SA] 进行授权
文章名称:《使用 ACME.SH 实现 SSL 证书自动化管理教程
文章链接:https://oldtang.com/13683.html
本站资源仅供个人学习交流,请于下载后24小时内删除,不允许用于商业用途,否则法律问题自行承担。