0. 必备条件
1个域名,托管到acme.sh支持的平台,如Cloudflare, 阿里云,腾讯云等。本文后续命令以Cloudflare为例来说明。添加解析记录指向自己要申请证书的设备IP。
Linux/Windows/OpenWRT, 这里以Linux/OpenWRT为例
1. acme.sh安装
1.1 后台安装
进入系统-》软件包下,搜索acme, 参照下图安装
luci-app-acme,luci-i18n-acme-zh-cn这两个是后台管理界面,可以不安装,因为后台管理界面中操作怎么配都无法申请成功。
1.2 验证是否安装成功
连上SSH,执行以下名命令,看到显示帮助内容,则说明安装成功
[root@B702:19:58 ~] #cd /usr/lib/acme/client/ # 进入acme安装到的文件夹
[root@B702:19:58 ~] #cacme.sh
2. 命令方式申请证书
2.1 更换证书服务商(可选)
acme被ZeroSSL收购,其默认的证书方式为ZeroSSL,如果想用letsencrypt,可以用以下命令更改:
/usr/lib/acme/client/acme.sh --set-default-ca --server letsencrypt
目前 acme.sh 支持 5 个正式环境 CA,分别是 Let's Encrypt、Buypass、ZeroSSL、SSL.com 和 Google Public CA,默认使用 ZeroSSL,如果需要更换可以使用上面命令,将--server后的CA名按下表替换:
letsencrypt,buypass,zerossl,ssl.com,google
几个 CA 的简单对比
功能 | Let's Encrypt | Buypass | ZeroSSL | SSL.com | Google Public CA |
---|---|---|---|---|---|
有效期 | 90 天 | 180 天 | 90 天 | 90 天 | 90 天 |
多域名 | 支持 | 支持,最多 5 个 | 支持 | 收费支持 | 支持 |
泛域名 | 支持 | 不支持 | 支持 | 收费支持 | 支持 |
Rate Limit | 有 | 有 | 收费无 | 未知 | 有 |
GUI 管理 | 否 | 否 | 有 | 有 | 无 |
ECC 证书链 | 否 | 否 | 有 | 未知 | 无 |
客户支持 | 社区 | 收费 | 收费 | 收费 | 收费 |
兼容性 | 优秀 | 某些客户端不支持 | |||
国内访问 | 不能直接访问 |
简单来说,如果没有特殊需求,可以选择 Let's Encrypt,如果服务器在国内,可以选择 ZeroSSL 或 Buypass,如果愿意付费得到更好的服务和保障,可以选择 ZeroSSL 和 SSL.com,如果面向欧盟用户,可以选择 Buypass 和 ZeroSSL。
注意:经过测试 Google Public CA 的 ACME 验证域名在国内是无法访问的,只有国外服务器才可以申请,申请完成后的证书并无影响。
2.2 执行以下命令申请证书
进入以下路径:/usr/lib/acme/client/
acme.sh --register-account -m youname@qq.com # 设置邮箱
export CF_Token="3BUI1xxxxxxxxxxxxxxxxxxxXTSrFzNmeWW"
export CF_Zone_ID="badxxxxxxxxxxxxxxxxxxxxxxxxxxxc78"
acme.sh --issue --dns dns_cf -d 500599.xyz -d '*.500599.xyz'
这种DNS验证方式申请的证书是泛域名证书,即各个子域名都可以用这个证书。
另外一种http验证方式仅能申请某个子域名的证书,且要配合nginx等web服务,且80端口要能用(一般家庭网络的80,443端口都已被封杀不能使用),这里没有采用。
2.2 证书保存路径
/root/.acme.sh/500599.xyz_ecc
Sun Mar 2 01:21:40 CST 2025] Your cert is in: /root/.acme.sh/500599.xyz_ecc/500599.xyz.cer
[Sun Mar 2 01:21:40 CST 2025] Your cert key is in: /root/.acme.sh/500599.xyz_ecc/500599.xyz.key
[Sun Mar 2 01:21:40 CST 2025] The intermediate CA cert is in: /root/.acme.sh/500599.xyz_ecc/ca.cer
[Sun Mar 2 01:21:40 CST 2025] And the full chain certs is there: /root/.acme.sh/500599.xyz_ecc/fullchain.cer
3. 使用证书
比如caddy, 直接配置路径指向full chain证书即可
tls /root/.acme.sh/500599.xyz_ecc/fullchain.cer /root/.acme.sh/500599.xyz_ecc/500599.xyz.key
配置完成后,用浏览器打开网站,点击网址前的小按钮,打开证书查看证书信息。
4. 自动续期
目前证书在 60 天以后会自动更新,你无需任何操作,因为在acme.sh安装时,已经把相关的自动更新程序写入到crontab中,如果想要查看,可以通过以下命令:
crontab -l
输出内容包含一个自动更新程序,大致内容如下:
0 0 * * * /etc/init.d/acme start