acme.sh

一. 证书提供商

3.0 后默认 ZeroSSL ,相比 Let’s Encrypt ZeroSSL拥有 web 控制面板,没有速率限制,不存在同一 IP 多次申请 SSL 证书被限制的问题

acme.sh --set-default-ca  --server zerossl

二.acme.sh安装及基本使用

1.安装脚本

# centos可能需要安装
yum install epel-release socat -y

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

# 设置别名
alias acme.sh=~/.acme.sh/acme.sh

2.使用 DNS 直接解析

  1. 使用一些服务商的 DNS API

  2. 手动设置 DNS 记录,但是不支持自动更新所以不推荐

这里使用 DNSAPI 来设置:

# 可以通过配置文件新增对应DNS key,或者通过环境变量添加
vi ~/.acme.sh/account.conf

# 阿里云添加
export Ali_Key="xxx"
export Ali_Secret="xxxxxx"

# 腾讯云添加
export DP_Id="xxx"
export DP_Key="xxxxxxx"

# cloudflare
export CF_Token="xx"

3.生成证书

# DNS 自动验证
# 腾讯dnspod
acme.sh --issue --dns dns_dp -d "*.mydomain.com"
# 阿里云
acme.sh --issue --dns dns_ali -d "*.mydomain.com"
# cloudflare
acme.sh --issue --dns dns_cf -d '*.mydomain.com'

# 手动DNS验证,需要自行配置DNS txt验证,并且到期需手动更新
acme.sh --issue -d example.com --dns \
 --yes-I-know-dns-manual-mode-enough-go-ahead-please

acme.sh --renew -d example.com \
  --yes-I-know-dns-manual-mode-enough-go-ahead-please

# nginx
acme.sh --issue  -d mydomain.com   --nginx

# 无web服务器验证,保证本地80端口可用
acme.sh  --issue -d mydomain.com   --standalone

4.复制证书

sudo acme.sh --install-cert -d "*.mydomain.com" \
--key-file       /etc/nginx/cert/*.mydomain.com.key  \
--fullchain-file /etc/nginx/cert/*.mydomain.com.cer \
--reloadcmd     "service nginx force-reload"

如果提示权限问题可以修改配置文件所在文件夹权限

5.最后配置nginxssl即可

脚本相关命令

# 自动更新
acme.sh  --upgrade  --auto-upgrade

# 关闭自动更新
acme.sh --upgrade  --auto-upgrade  0

#查看证书
acme.sh --list

acme.sh remove 域名

参考链接