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 直接解析
手动设置 DNS 记录,但是不支持自动更新所以不推荐
这里使用 DNSAPI 来设置:
- 阿里云的申请地址
- Access Key ID
- Access Key Secret
- 腾讯云 DNSpod
- 密钥 ID
- 密钥 Token
- cloudflare
# 可以通过配置文件新增对应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.最后配置nginx
的ssl
即可
脚本相关命令
# 自动更新
acme.sh --upgrade --auto-upgrade
# 关闭自动更新
acme.sh --upgrade --auto-upgrade 0
#查看证书
acme.sh --list
acme.sh remove 域名