使用 acme.sh 自动签发 ZeroSSL 的 ECC 证书
acme.sh 使用 ACME 协议自动申请 SSL 证书,项目地址:acme.sh
环境:CentOS 8
安装 acme.sh
先安装好 curl,然后:
1 | curl https://get.acme.sh | sh |
该安装脚本做了几件事:
- 把 acme.sh 安装到了 home 目录下:
~/.acme.sh/
- 创建了一个 bash 的 alias, 方便使用:
alias acme.sh=~/.acme.sh/acme.sh
- 创建了 cronjob,每天 0:00 点自动检测所有的证书,如果快过期了,则会自动更新证书。
如果因为网络问题,无法连接到 https://raw.githubusercontent.com
域名,则要手动更改安装脚本内容:
1 | # 下载并保存脚本 |
注册 ZeroSSL 账号
acme.sh 默认使用 Let’s Encrypt 进行证书注册,本本章使用 ZeroSSL 进行注册,所以需要进行相关配置
官网注册:https://zerossl.com/
注册完成之后进入 Dashboard,选择右侧的 Developer 标签,生成 EAB Credentials 并记录下来。
将 acme.sh 的注册服务器改为 ZeroSSL
文档:https://github.com/acmesh-official/acme.sh/wiki/ZeroSSL.com-CA
运行,替换 eab-kid
和 eab-hmac-key
为上一步中生成的:
1 | acme.sh --register-account --server zerossl \ |
将其设置为默认 Server
1 | acme.sh --set-default-ca --server zerossl |
签发证书
本文章使用 DNS 验证的方法来验证域名,acme.sh 可以通过 DNS 提供商的 API 自动设置验证记录,具体用法详见文档:https://github.com/acmesh-official/acme.sh/wiki/dnsapi
1 | acme.sh --issue \ |
其中:
--dns
指定 DNS 服务商,dns_dp
代表 DNSPod,还有dns_cf
代表 CloudFlare,更多的字段见 https://github.com/acmesh-official/acme.sh/tree/master/dnsapi
如果不使用 API 自动添加验证,则不用添加后续参数,如:acme.sh --issue --dns -d morooi.com ....
-d \*.morooi.com
表示签发泛域名证书,\*
为转义(本人使用 zsh shell,实测需要转义,bash 貌似并不需要加反斜线)--keylength ec-256
表示签发 ECC 证书,不添加则签发 RSA 证书,可选参数还有ec-384
和ec-521
安装证书
使用 --install-cert
命令安装证书到指定目录,切记不要手动去复制签发的证书文件,会影响后续使用
1 | acme.sh --install-cert -d morooi.com --ecc \ |
其中:
--ecc
表示安装 ECC 证书--key-file
和-fullchain-file
后接想要安装到的目录及证书名--reloadcmd
后接服务的重启命令,程序自动续期证书后会运行该命令使其生效
大功告成!
更多信息可参考如下:
使用 acme.sh 自动签发 ZeroSSL 的 ECC 证书