Featured image of post acme.sh更换证书签发机构zerossl更换letsencrypt

acme.sh更换证书签发机构zerossl更换letsencrypt

acme.sh 是一个轻量级的 ACME 协议客户端,用于从像 Let's Encrypt 和 ZeroSSL 这样的证书颁发机构(CA)获取 SSL/TLS 证书。

acme.sh 是个小巧又强大的工具,用于管理 SSL/TLS 证书。它支持多家 CA(证书颁发机构),但要更换 CA 时,找不到命令就容易抓狂——不过别急,这份教程会带你一步步完成切换,并附上一些调侃,帮你缓解心情!


第一步:查看支持的 CA

你可以参考官方的 Wiki 页面,里面列出了所有支持的 CA。

目前支持的签发机构如下:

Short Name ACME Server URL 用途
letsencrypt https://acme-v02.api.letsencrypt.org/directory 主流的 Let’s Encrypt
letsencrypt_test https://acme-staging-v02.api.letsencrypt.org/directory 测试环境
buypass https://api.buypass.com/acme/directory BuyPass.com CA
buypass_test https://api.test4.buypass.no/acme/directory BuyPass.com 测试
zerossl https://acme.zerossl.com/v2/DV90 ZeroSSL.com CA
sslcom https://acme.ssl.com/sslcom-dv-rsasslcom-dv-ecc SSL.com CA
google https://dv.acme-v02.api.pki.goog/directory Google Public CA
googletest https://dv.acme-v02.test-api.pki.goog/directory Google 测试 CA

支持的机构还挺多,但选项一多,反而让人迷惑——到底选哪个才合适呢?别纠结,常见用 letsencryptzerossl 就够了。


第二步:切换 CA

选好了目标 CA 后,用以下命令切换:

1
acme.sh --set-default-ca --server <Short_Name>

举个例子:

  • 如果想用 Let’s Encrypt(经典之选):
    1
    
    acme.sh --set-default-ca --server letsencrypt
    
  • 想试试 ZeroSSL(折腾党选择):
    1
    
    acme.sh --set-default-ca --server zerossl
    

吐槽时间:

  1. 为什么不提供一个交互式界面,比如“请选择你的 CA”,还能更直观些。
  2. ZeroSSL 非得注册 API 密钥,这种强制登录的体验,总是让我怀疑免费是不是套路。

第三步:确认是否切换成功

命令运行完毕后,最好验证一下当前使用的默认 CA,确保没填错:

1
acme.sh --show-config

如果看到类似这样的输出:

1
DEFAULT_CA = letsencrypt

或者:

1
DEFAULT_CA = zerossl

那就说明切换成功啦!

这命令只会傻乎乎地告诉你“默认 CA 是什么”,也不能附加点提示信息,比如“切换成功,欢迎使用新 CA!”。


第四步:重新签发证书

为了确保新 CA 能正常工作,你需要重新签发一次证书:

1
acme.sh --renew -d yourdomain.com --force

吐槽时间:

  1. 每次重新签发都得加 --force,万一忘了,系统就会“假装没听见”,让人浪费时间。
  2. 配额限制和 API 失败问题经常让人抓狂,比如 Let’s Encrypt 的周签发限制 50 次,感觉总在提醒你“别随便浪费免费资源”。

特殊场景:不同域名用不同 CA

如果需要对某些域名使用特定的 CA,可以直接在签发时指定:

1
acme.sh --issue -d yourdomain.com --server letsencrypt

对于有大量域名的用户,手动配置不同 CA 简直就是“勤劳人的修行”,期待未来能有批量管理功能。


注意事项(必看,防踩坑)

  1. ZeroSSL 的 API 密钥
    如果你选择 ZeroSSL,需要提前注册账号并获取 API 密钥:

    1
    
    acme.sh --register-account --server zerossl --accountemail [email protected]
    

    免费证书搞得像个 SaaS 服务,这种“改良”方式真的更好吗?

  2. 兼容性问题
    如果你的服务器很老旧(比如某些根证书都不更新的系统),可能无法支持新 CA 的根证书,比如 ZeroSSL。如果发现 SSL 报错,十有八九是这个问题。

  3. 重启服务
    别忘了重新加载 Web 服务配置,应用新证书:

    1
    2
    3
    4
    5
    
    # 重启 Nginx
    systemctl reload nginx
    
    # 重启 Apache
    systemctl reload apache2
    

总结

虽然更换 CA 的流程看似简单,但总是有些小坑会让人抓狂。不过,掌握了上述步骤,你就能快速完成切换,不再被各种错误信息支配。
最后再提醒一句:别忘了对新证书做兼容性测试,别等上线时才发现出问题,那才叫“惊喜”。

转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
使用 Hugo 构建
主题 StackJimmy 设计