使用 acme.sh 申请和自动续签 SSL 证书
使用acme.sh
申请和自动续签 SSL 证书,项目地址:acme.sh
安装
## 安装
## 其中的`my@example.com`修改为你的邮箱地址
curl https://get.acme.sh | sh -s email=my@example.com
## 使acme.sh命令的alias立即在当前终端会话可用
source ~/.bashrc
申请证书
申请证书时需要验证你的域名所有权,这里以DNS-01 challenge
为例,这种方式将使用域名解析商提供的API自动验证。如你使用 DNSPod,可以在 DNSPod Token 中生成 ID 和 Key。
## 指定 DNSPod API
export DP_Id='XXX'
export DP_Key="XXXXXXXXXXXXXXX"
## 申请证书
acme.sh --issue --dns dns_dp -d exp.com
部署证书
部署证书基本上就是将密钥文件(key file)和证书文件(certificate file)复制到相应的目录,然后重启相关软件进行加载。
## 传统部署方式,如nginx
acme.sh --install-cert -d exp.com \
--key-file /path/key.pem \
--fullchain-file /path/cert.pem \
--reloadcmd "service nginx force-reload"
## deploy-hook方式,如haproxy
export DEPLOY_HAPROXY_PEM_PATH=/etc/haproxy/certs
export DEPLOY_HAPROXY_RELOAD="systemctl restart haproxy"
acme.sh --deploy -d exp.com --deploy-hook haproxy
自动续签证书
申请证书的参数和部署证书的参数会自动记录下来,如果同一个域名执行了多此,以最后一次记录的参数为准,到期前1个月会自动更新。
其他
申请通配符证书(通配符只支持 DNS-01 challenge
)
acme.sh --issue --dns dns_dp -d *.exp.com
将多个域名申请到同一张证书里面
acme.sh --issue --dns dns_dp -d a.exp.com -d b.exp.com
指定CA颁发机构(默认为 ZeroSSL)
acme.sh --issue --dns dns_dp -d exp.com --server letsencrypt
自动更新acme.sh
软件
acme.sh --upgrade --auto-upgrade
卸载acme.sh
acme.sh --uninstall
rm -rf ~/.acme.sh/
查看证书列表
acme.sh list
删除证书
acme.sh --remove -d exp.com