使用 acme.sh 申请和自动续签 SSL 证书

使用acme.sh申请和自动续签 SSL 证书,项目地址:acme.sh

安装 acme

其中的[email protected]修改为你的邮箱地址。安装后文件的目录/root/.acme.sh/

1
wget -O -  https://get.acme.sh | sh -s [email protected]

创建一个 bash 的 alias, 方便你全局使用:

1
alias acme.sh=~/.acme.sh/acme.sh

申请证书和部署证书

申请证书时需要验证你的域名所有权,这里以 dnspod 为例, 你需要先登录 dnspod 账号 -> 管理控制台 -> 账户中心 -> API密钥 -> DNSPod Token, 生成 ID 和 Token。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
## 进入程序目录
cd ~/.acme.sh/

## 指定 DNSPod API
export DP_Id='XXX'
export DP_Key="XXXXXXXXXXXXXXX"

## 申请证书
acme.sh --issue --dns dns_dp -d exp.com

## 部署证书,Nginx 为例
acme.sh --install-cert -d exp.com \
--key-file /path/key.pem \
--fullchain-file /path/cert.pem \
--reloadcmd "service nginx force-reload"

申请证书的参数和部署证书的参数会自动记录下来,如果同一个域名执行了多此,以最后一次记录的参数为准,到期前1个月会自动更新。
reloadcmd参数可以让 Nginx 重载证书。也可以指定其他软件,比如 Trojan:

1
2
3
4
acme.sh --install-cert -d exp.com \
--key-file /path/key.pem \
--fullchain-file /path/cert.pem \
--reloadcmd "systemctl restart trojan"

HAProxy:

1
2
acme.sh --install-cert -d exp.com \
--reloadcmd "cat \$CERT_FULLCHAIN_PATH \$CERT_KEY_PATH > /etc/haproxy/certs/exp.com.pem && systemctl restart haproxy"

其他

申请通配符证书(只支持 dns 验证方式)

1
acme.sh --issue --dns dns_dp -d *.exp.com

将多个域名申请到同一张证书里面

1
acme.sh --issue --dns dns_dp -d a.exp.com -d b.exp.com

自动更新acme.sh软件

1
acme.sh --upgrade --auto-upgrade

卸载acme.sh

1
2
acme.sh --uninstall
rm -rf ~/.acme.sh/

删除证书

1
acme.sh  --remove  -d exp.com