介绍
- 一个用 Shell(Unix shell)语言编写的 ACME 协议客户端
- 完整的 ACME 协议实现
- 支持 ECDSA 证书
- 支持 SAN 和通配符证书
- 简单、强大、非常容易使用,你只需要3分钟就能学会它。
- 兼容bash、dash和sh
- 完全使用 Shell 编写,不依赖 python
- 只需一个脚本就能自动签发、更新和安装你的证书
- 不需要 root 权限
- 支持 Docker
- 支持 IPv6
- 支持设置定时任务更新通知结果
部署
本篇默认使用 ZeroSSL
进行部署,如需使用其他服务商请更换相关配置
1
| curl https://get.acme.sh | sh
|
定义临时变量
以 DNSPod
为例子,下面的内容根据所使用的 DNS 服务商更改,其他可支持地址请查看 https://github.com/acmesh-official/acme.sh/wiki/dnsapi
或者根据上方链接直接添加入 account.conf
文件
1 2
| export DP_Id="your ID" export DP_Key="your Token"
|
设置 CA
默认服务商为 ZeroSSL
,如需更换为 Let’s Encrypt
请输入以下命令
1
| acme.sh --set-default-ca --server letsencrypt
|
注册 ZeroSSL 账号
官网地址:https://zerossl.com
注册完成后点击进入 Dashboard
,选择 Developer
标签,生成 EAB
记录下来并替换至以下命令中(EAB可无限生成且无法删除)
1 2 3
| acme.sh --register-account --server zerossl \ --eab-kid xxxxxxxxxxxx \ --eab-hmac-key xxxxxxxxx
|
签发证书
- ec-256 (prime256v1, “ECDSA P-256”)
- ec-384 (secp384r1, “ECDSA P-384”)
- ec-521 (secp521r1, “ECDSA P-521”, Let’s Encrypt 尚不支持此功能。
1 2 3 4
| acme.sh --issue \ --dns dns_dp \ -d example.com -d *.example.com \ --keylength ec-256
|
安装证书
Apache example
1 2 3 4 5
| acme.sh --install-cert -d example.com --ecc \ --cert-file /path/to/certfile/in/apache/cert \ --key-file /path/to/keyfile/in/apache/key \ --fullchain-file /path/to/fullchain/certfile/apache/fullchain.pem \ --reloadcmd "service apache2 force-reload"
|
Nginx example
1 2 3 4
| acme.sh --install-cert -d example.com --ecc \ --key-file /path/to/keyfile/in/nginx/key \ --fullchain-file /path/to/fullchain/nginx/cert \ --reloadcmd "nginx -s reload"
|
--ecc
表示安装 ECC 证书--cert-file
表示证书安装目录及文件名--key-file
表示私钥安装位置以及文件名--fullchain-file
表示证书安装目录及文件名(此处为完整证书链)--reloadcmd
重载服务将证书加载
续订证书
无需手动续订,部署完成后自动添加定时任务检查证书有效期并进行更新
手动执行续期任务
1
| acme.sh --cron --home "/root/.acme.sh"
|
强制续订证书
1
| acme.sh --renew -d example.com --force
|
强制续订ECC 证书
1
| acme.sh --renew -d example.com --force --ecc
|
停止续订证书
1
| acme.sh --remove -d example.com [--ecc]
|
吊销证书
1
| acme.sh --revoke -d example.com [--ecc]
|
更新 acme.sh 到最新版
开启自动更新
1
| acme.sh --upgrade --auto-upgrade
|
关闭自动更新
1
| acme.sh --upgrade --auto-upgrade 0
|
设置通知
请使用 --set-notify
配置发送测试通知,并自动更新account.conf
文件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| --notify-level 0|1|2|3 设置通知级别,默认值为2
0: 禁用,将不发送通知 1: 只有在出现错误时才发送通知 2: 当有证书被成功更新或出现错误时,发送通知 3: 每次运行都将收到通知
--notify-mode 0|1 设置通知模式,默认值为0
0: 批量模式,在一个邮件中发送所有域名信息 1: 证书模式,为每一个证书发送一个邮件,如证书过多可能会收到大量邮件
--notify-hook [hookname] 设置通知名称,具体内容请查看 https://github.com/acmesh-official/acme.sh/wiki/notify
|
从入门到跑路