安装acme.sh

curl https://get.acme.sh | sh
# 国内
curl https://gitee.com/neilpang/acme.sh | sh
source ~/.bashrc

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

升级CA

yum update ca-certificates

将acme切换到Let’s Encrypt的CA

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

签发证书

因为我的nginx 443反代到一个网站,80端口是空闲的,所以我下面使用的是acme.sh伪装自己为一个webserver的方式,其他方式

防火墙放开80端口

安装socat

yum install socat

签发证书

acme.sh --issue -d 需要签发的域名 --standalone

安装证书到指定目录,并执行新域名后需要重启的应用,如xray,nginx。acme.sh将记住操作并

~/.acme.sh/acme.sh --install-cert -d 需要签发的域名 \
--key-file       /usr/local/nginx/ssl/需要签发的域名.key  \
--fullchain-file /usr/local/nginx/ssl/需要签发的域名.key.pem \
--reloadcmd     "service nginx force-reload"

(一个小提醒, 这里用的是 service nginx force-reload, 不是 service nginx reload, 据测试, reload 并不会重新加载证书, 所以用的 force-reload)

Nginx 的配置 ssl_certificate 使用 /etc/nginx/ssl/fullchain.cer ,而非 /etc/nginx/ssl/<domain>.cer ,否则 SSL Labs 的测试会报 Chain issues Incomplete 错误。

--install-cert命令可以携带很多参数, 来指定目标文件. 并且可以指定 reloadcmd, 当证书更新以后, reloadcmd会被自动调用,让服务器生效。

查看定时任务确保会自动执行

crontab  -l

查看已安装的证书信息

acme.sh --info -d 需要签发的域名

image-20230411173543741