使用 acme.sh 来管理 letsencrypt 证书

安装 acme.sh

1
curl https://get.acme.sh | sh

安装完毕后可以使用 acme.sh --version 检查状态

1
2
3
# acme.sh --version
https://github.com/acmesh-official/acme.sh
v3.0.1

如果需要升级 acme.sh 则运行

1
2
3
4
5
6
7
8
# 升级到最新版
acme.sh --upgrade

# 开启自动升级
acme.sh --upgrade --auto-upgrade

# 关闭自动升级
acme.sh --upgrade --auto-upgrade 0

生成证书

HTTP 认证方式

1
acme.sh --issue -d example.com -d www.example.com --webroot /home/wwwroot/example.com/

DNS 认证方式

各大 dns 提供商的使用方式参考此处

此处以 cloudflare 为例:

1
2
3
4
5
export CF_Token="sdfsdfsdfljlbjkljlkjsdfoiwje"
export CF_Account_ID="xxxxxxxxxx"
export CF_Zone_ID="xxxxxxxxxx"

acme.sh --issue --dns dns_cf -d example.com -d *.example.com --server letsencrypt

操作已安装证书

1
2
3
4
5
# 查看已安装证书
acme.sh --list

# 删除证书
acme.sh remove <SAN_domains>

安装证书

1
2
3
4
5
# 以 example.com 为例
acme.sh --installcert -d example.com \
--key-file /usr/local/nginx/ssl/example.com.key \
--fullchain-file /usr/local/nginx/ssl/fullchain.cer \
--reloadcmd "systemctl reload nginx ; systemctl restart v2ray"

更新证书

如果需要手动续签,则执行

1
acme.sh --renew -d example.com --force