切换Acme.sh默认CA至ZeroSSL

3 分钟前早上·2024年4月16日

Acme.sh在很久之前发了一个issue,告知用户将切换其默认CA至ZeroSSL,我个人持无所谓的态度,ZeroSSL画的这些美好的饼里我唯一感兴趣的大概就是签发频率不受限这一点。之前配置Caddy SSL的时候由于不熟悉配置语法直接把 Let’s Encrypt 的Rate Limit耗尽了,等了好长一段时间来重签证书。

除此之外,ZeroSSL相较Let’s Encrypt 并没有太显著的优势。

准备工作

配置ZeroSSL为默认CA前,需要先在其官网注册账户,并且获取EAB凭证。在终端里输入

acme.sh  --register-account  --server zerossl \
        --eab-kid  xxxxxxxxxxxx  \
        --eab-hmac-key  xxxxxxxxx

将kid和key替换为你在 ZeroSSL后台 生成的键值对,注意这里标明了每次都是新生成密钥,不会吊销之前的也看不到之前生成过的,因此对于强迫症强烈建议将其保存在你的密码管理工具或安全的地方。

当然如果你对ZeroSSL的控制台不感兴趣,也可以直接在终端里输入

acme.sh  --register-account  -m myemail@example.com --server zerossl

这样会自动帮你注册账户,但你并不知道密码是什么,也许需要重置密码才能登录。

最后,如果你搞错了——我指用了命令行注册账户却发现结果不符合预期,试图再绑定EAB凭证时Acme.sh会提示你已经注册过了,无需再绑定,这个时候你需要先

rm -rf ~/.acme.sh/ca/zerossl.com

来清除旧的凭证信息,才能重新绑定。

准备工作完成后就可以按照普通方法签发证书了,我是用DNS API的方法来签发通配符证书,省的麻烦。

export CF_Key="YOURKEYHERE"
export CF_Email="cloudflare@example.com"

然后再运行

acme.sh --issue --dns dns_cf -d jipai.moe -d *.jipai.moe

不出意外的话证书就签好了,如果不小心搞错了,比如少写了一个域名,可以先revoke掉再申请,不用担心rate limit限制了。

acme.sh  --revoke  -d example.com

最后,使用Acme.sh 的安装命令来复制证书,不要直接使用Acme.sh根目录中的证书文件,内部文件结构可能会发生变化。

acme.sh --install-cert -d example.com \
--key-file       /path/to/keyfile/in/nginx/key.pem  \
--fullchain-file /path/to/fullchain/nginx/cert.pem \
--reloadcmd     "service nginx force-reload"

参考链接

https://github.com/acmesh-official/acme.sh/wiki/ZeroSSL.com-CA

https://github.com/acmesh-official/acme.sh/issues/3640

https://github.com/acmesh-official/acme.sh/wiki/dnsapi

avatar
Hi, i am JiPai

a Web Full Stack Developer