之前我写了一篇,免费申请 HICA 的教程。写完之后有人问我,ACME 还能申请哪些证书呢?于是就有了今天这篇文章。
正文开始
什么是 ACME?
acme.sh是一个轻量级的、高度可自定义的Shell脚本,用于自动化管理和部署Let's Encrypt证书。它可以轻松地在各种操作系统和平台上使用,并提供了丰富的命令行接口和API,方便管理员进行证书的申请、更新和部署。此外,acme.sh还支持多种证书验证方式,包括DNS验证、HTTP验证和TLS-SNI验证等,可以满足不同场景下的证书需求。
CA 支持情况
CA | 时间(DAY) | ECC | 域数量 | 通配符 | IPV4 | IPV6 | IDN |
---|---|---|---|---|---|---|---|
Let's Encrypt | 90 | 支持 | 100 | 支持 | 不支持 | 不支持 | 支持 |
ZeroSSL | 90 | 支持 | 100 | 支持 | 不支持 | 不支持 | 支持 |
90 | 支持 | 100 | 支持 | 不支持 | 不支持 | 不支持 | |
Buypass | 180 | 支持 | 5 | 不支持 | 不支持 | 不支持 | 支持 |
SSL.com | 90 | 支持 | 2 | 不支持 | 不支持 | 不支持 | 支持 |
HiCA | 180 | 不支持 | 10* | 支持 | 支持 | 支持 | 不支持 |
HICA 如果是通配符证书,域数量则为 1。
安装&注册 acme.sh
curl https://get.acme.sh | sh -s [email protected] #[email protected] 改为你自己的邮箱地址
acme.sh --upgrade --auto-upgrade #开启acme.sh自动更新
申请SSL证书
手动DNS校验
acme.sh --issue \
-d \*.<域名1.com> \
-d <域名1.com> \
-d \*.<域名2.com> \
-d <域名2.com> \
--days 60
自动DNS校验
此处仅列出大陆常用 DNS 方法,其他 DNS 请前往 acme.sh
文档查看。
DNSPOD
首先需要获取 API KEY。

然后将你的 ID 和 Token 保存下来,对应下方的 ID 和 KEY。
export DP_Id="DNSPOD API TOKEN ID"
export DP_Key="DNSPOD API TOKEN KEY"
acme.sh --issue \
--dns dns_dp \
-d \*.<域名1.com> \
-d <域名1.com> \
-d \*.<域名2.com> \
-d <域名2.com> \
--days 60
阿里云
前往阿里云申请 AK、SK 即可。也可以使用子账户的方法(更安全),只给予 AliyunDNSFullAccess 权限。


export Ali_Key="阿里云API KEY"
export Ali_Secret="阿里云API Secret"
acme.sh --issue \
--dns dns_ali \
-d \*.<域名1.com> \
-d <域名1.com> \
-d \*.<域名2.com> \
-d <域名2.com> \
--days 60
CloudFlare
首先获取 Global API Key。
export CF_Email="<Cloudflare_Account_Email>"
export CF_Key="<Cloudflare_Global_API_Key>"
acme.sh --issue \
--dns dns_cf \
-d \*.<域名1.com> \
-d <域名1.com> \
-d \*.<域名2.com> \
-d <域名2.com> \
--days 60
切换 CA
名称 | 参数 |
---|---|
Let's Encrypt | letsencrypt |
Buypass | buypass |
SSL.com | ssl.com |
HICA | https://acme.hi.cn/directory |
需要前往官方申请API |
最新版 acme.sh 工具默认使用 ZeroSSL 作为证书颁发机构,但也支持使用其他 ACME 协议兼容的证书颁发机构。要切换证书颁发机构,您需要在 acme.sh 命令中指定 --server
参数,并将其设置为目标证书颁发机构的 ACME 服务端地址。
案例如下(将 CA 切换为 letsencrypt ):
acme.sh --issue \
--dns dns_cf \
--set-default-ca \
--server letsencrypt \
--default-ca \
-d \*.<域名1.com> \
-d <域名1.com> \
-d \*.<域名2.com> \
-d <域名2.com> \
--days 60
在此命令中,--set-default-ca
参数用于设置默认证书颁发机构,--server letsencrypt
参数用于指定 ACME 服务端地址,--default-ca
参数用于使设置生效并保存在配置文件中。
相关问题
IDN 是什么?
在 acme.sh 的文档中,IDN 是 Internationalized Domain Name(国际化域名)的缩写。IDN 是指包含非 ASCII 字符(如中文、日文、韩文等)的域名,这些域名需要经过 Punycode 编码才能在计算机网络中正常使用。acme.sh 工具支持在域名中包含 Punycode 编码后的 IDN,并可以自动为其申请和部署 Let's Encrypt 证书,从而支持在这些域名下启用 HTTPS 安全连接。
申请证书参数中的 days 是什么意思?
在 acme.sh 工具中,-d
或 --days
参数用于设置证书的有效期,即证书将在多少天后过期。例如,使用命令 acme.sh --issue -d example.com -d www.example.com --days 90
将为 example.com
和 www.example.com
申请有效期为 90 天的证书。
默认情况下,Let's Encrypt 证书的有效期为 90 天。在证书到期前,您可以使用 acme.sh 工具的自动更新功能来自动续期证书,以确保您的网站或应用程序一直使用最新的证书,从而保持 HTTPS 连接的安全性。
acme.sh 会自动续期吗?
是的,acme.sh 工具支持自动续期 Let's Encrypt 证书,以确保您的网站或应用程序一直使用最新的证书,从而保持 HTTPS 连接的安全性。当您使用 acme.sh 工具生成证书时,它会自动在系统上设置一个计划任务(Cron Job),以定期检查证书是否即将过期,如果是,则自动发起续期申请,并更新证书。默认情况下,acme.sh 工具会在证书过期前 30 天进行检查和自动续期,以确保证书始终处于有效期。
所以 days 参数的含义也可以理解为,多少天后尝试自动续期。
网站使用免费 SSL 有什么影响吗?
使用免费 SSL 证书,如 Let's Encrypt,ZeroSSL 等,对网站的影响是正面的,而且是必要的。
- 提高安全性:使用 SSL 证书可以加密网站和用户之间的通信,防止黑客窃取或篡改数据,增强网站的安全性,保护用户隐私和数据安全。
- 提高可信度:使用 SSL 证书可以让网站获得 "HTTPS" 安全标识,这是现代网站的标志之一,有助于增强用户对网站的信任和可靠性。
- 改善 SEO:使用 SSL 证书可以提高网站的搜索引擎排名,因为搜索引擎通常会优先考虑加密网站的搜索结果,从而带来更多的流量和曝光机会。
- 降低成本:使用免费 SSL 证书可以降低网站的运营成本,避免购买昂贵的商业 SSL 证书,节省了网站的开支。
需要注意的是,使用免费 SSL 证书可能会存在一些限制和缺点,如证书有效期较短,需要定期续期;支持的功能和证书类型可能有限;受到特定证书颁发机构和浏览器的限制等。因此,选择合适的 SSL 证书和证书颁发机构需要根据实际情况和需求进行评估和选择。
Comments NOTHING