使用acme.sh申请通配符证书
目录
acme.sh 实现了 acme 协议,可以从 letsencrypt 生成免费的证书。
0.1 获取 acme.sh
中国大陆境内,访问可能会不成功
# Install from web
curl https://get.acme.sh | sh -s email=my@example.com
# Install from GitHub
curl https://raw.githubusercontent.com/acmesh-official/acme.sh/master/acme.sh | sh -s -- --install-online -m my@example.com
source ~/.bashrc
acme.sh --version0.2 切换默认 CA
acme.sh 脚本默认 CA 服务器是 ZeroSSL,切换 acme.sh 的默认 CA
acme.sh --set-default-ca --server zerossl
acme.sh --set-default-ca --server letsencrypt0.3 获取证书
执行以下命令,这里以阿里云解析为例,创建AccessKey
创建一个 RAM 用户授予 AliyunDNSFullAccess 权限即可
export Ali_Key="abcd"
export Ali_Secret="1234"
acme.sh --issue --dns dns_ali --keylength 2048 -d domain.com -d *.domain.com -d *.test.domain.com三级通配符域名需要*.xxx.domain.com才可以使用
0.4 导出证书
mkdir -p /data/ssl_cert/domain.com
acme.sh --install-cert -d domain.com \
--key-file /data/ssl_cert/domain.com/domain.com.key \
--fullchain-file /data/ssl_cert/domain.com/domain.com.cer证书导出路径
/data/ssl_cert/domain.com/domain.com.key
/data/ssl_cert/domain.com/domain.com.cer0.5 自动更新证书
安装 acme.sh 后会自动创建 cronjob, 每天 0:00 点自动检测所有的证书,建议调整为每周运行
0 3 * * 0为了配合证书生效,需要重载 Nginx 才行,添加一个定时重载 Nginx 的 cronjob
30 1 * * * systemctl reload nginx > /dev/null 2>&10.6 ZeroSSL
现在不需要去注册了,会自动注册
0.6.1 注册账户
传送门:https://app.zerossl.com/signup

0.6.2 获取账户的EAB凭证,用来注册acme帐户
传送门:https://app.zerossl.com/developer

点击生成会生成你的eab-kid和eab-hmac-key,复制保存下来;
0.6.3 注册ACME帐户
acme.sh --register-account --server zerossl \
--eab-kid 你的eab-kid \
--eab-hmac-key 你的eab-hmac-key