Acme.sh
Contents
安装
curl https://get.acme.sh | sh -s email=pannnnta@gmail.com
或者
wget -O - https://get.acme.sh | sh -s email=pannnnta@gmail.com
此处填写的邮箱主要用于 Let’s Encrpt CA
刷新终端配置
source ~/bashrc
安装完成后会在 crontab 中生成一条定时任务用于检查证书是否临近过期并自动续订
常用命令
查看帮助:
acme.sh
升级 acme.sh:
# 手动升级
acme.sh --upgrade
# 自动升级
acme.sh --upgrade --auto-upgrade
查看证书列表:
acme.sh --list
查看配置信息:
acme.sh --info
设置默认 CA:
acme.sh --set-default-ca --server letsencrypt
配置 CA
ZeroSSL
- 命令行一键配置:
acme.sh --register-account --server zerossl -m pannnnta@gmail.com
- 手动注册 ZeroSSL 帐号配置:
打开 ZeroSSL 官网,注册并登录,登录成功后打开 Developer 界面,随后点击 Generate 生成一对 EAB 密钥,这对密钥只会显示一次,关闭窗口后无法找回,将它们复制并临时保存到记事本中。

替换以下命令中的 eab-kid 和 eab-hmac-key 然后运行:
acme.sh --register-account --server zerossl \
--eab-kid <eab-kid> \
--eab-hmac-key <eab-hmac-key>
Let’s Encrypt
acme.sh --register-account --server letsencrypt
Google Public CA
配置有点麻烦,暂略
申请证书
申请证书的方式有很多,这里只讲使用 DNS API 申请的方法,该模式可以自动续签,也是最常使用的模式。
这里也以最常用的 DNS 提供商 CloudFlare 为例,其他 DNS 提供商的配置方法可以查看 acme.sh 官方文档。
首先需要准备验证信息:
- CF_Token: 打开 CloudFlare 个人资料页,依次点击:API 令牌 - 创建令牌 - 编辑区域 DNS (使用模板) ,在此处配置 API 信息,生成得到 Token。
- CF_Zone_ID: 打开 CloudFlare 切换到需要申请证书的域名,点击查看域名概述 (Overview),在页面右下角可以找到区域 ID。
- CF_Account_ID: 与上一步相同位置,找到帐户 ID。
生成 CF_Token 时需要注意,RackNerd 的机器会使用 ipv6 访问网站,而 RackNerd 的 ipv6 似乎不是固定的,因此建议不要限制 ip 访问(到头来防的是自己)
接下来将这些验证信息导入环境变量:
export CF_Token="Y4eqYxxxxxxxxxxxxxxxxxxxxxPnKeYZh"
export CF_Zone_ID="6238xxxxxxxxxxxxxxxxxxx85a831"
export CF_Account_ID="86018xxxxxxxxxxxxxxxxxx80x04e"
重启终端时环境变量会刷新,每次申请证书都需要确保环境变量中有这些信息,可以将环境变量写入 ~/.bashrc 以永久生效。对于已经申请的证书,acme.sh 会自动记录环境变量用于续订。
然后就可以申请证书了:
acme.sh --issue -d example.pannta.me --dns dns_cf --server zerossl
安装证书
申请到的证书文件保存在:~/.acme.sh,这里的证书文件可能会随时变动,一般会使用 --install-cert 命令来安装证书到其它位置。
acme.sh --install-cert -d pannta.me \
--key-file /root/nginx/cert/pannta.me.key \
--fullchain-file /root/nginx/cert/pannta.me.cer \
--reloadcmd "nginx -s reload"
# --ca-file /root/nginx/cert/pannta.me.ca.cer
# 如果需要CA证书
Panta 的博客