ACME自动更新Nginx 网站证书
1、安装acme.sh
curl https://get.acme.sh | sh -s email=business@kai.com
~]# ls /root/.acme.sh/
account.conf acme.sh acme.sh.csh acme.sh.env deploy dnsapi http.header notify
alias acme.sh='/root/.acme.sh/acme.sh'
2、切换证书颁发服务器
acme.sh支持4个CA服务器,分别是 Let's Encrypt、Buypass、ZeroSSL 和 SSL.com,默认使用 ZeroSSL。
默认的可能会创建失败
./acme.sh --set-default-ca --server letsencrypt
3、注册邮箱用户
~]# ./acme.sh --register-account -m gong@kai.com
返回的用户码
ACCOUNT_THUMBPRINT='iZvLA00P9wNoMDQhXxvUHXRcFs'
4、申请证书
申请成功之后会输出证书的存放位置
./acme.sh --issue --days 80 -d certs.cqka.cn --webroot /www
--days 指定使用"--issue"命令时更新证书的天数,这个证书使用多少天后更新;默认值为60天。
--webroot 是网站的目录,如果是代理可以修改nginx的路由规则,来重新定义验证信息的生成目录。
--force 强制更新
--debug 申请证书的详细过程
-d 指定域名,可以指定多个域名,比如www和主域名。
--nginx 使用nginx模式
会在指定的目录下生成.well-known用于验证。
/www/.well-known
然后证书颁发机构会根据这个链接去验证域名
http://certs.cqka.cn/.well-known/acme-challenge/so8_vG20HB87zyCidp2D2sZ2dUz08zN_QGm4brYAtLk
4.1 nginx的配置
location /.well-known/ {
root /www;
}
成功之后打印出详细信息并把证书位置打印出来。
[Fri Feb 2 11:19:47 CST 2024] Your cert is in: /root/.acme.sh/www.jfbym.com_ecc/www.jfbym.com.cer
[Fri Feb 2 11:19:47 CST 2024] Your cert key is in: /root/.acme.sh/www.jfbym.com_ecc/www.jfbym.com.key
[Fri Feb 2 11:19:47 CST 2024] The intermediate CA cert is in: /root/.acme.sh/www.jfbym.com_ecc/ca.cer
[Fri Feb 2 11:19:47 CST 2024] And the full chain certs is there: /root/.acme.sh/www.jfbym.com_ecc/fullchain.cer
5、查看已经申请的证书
./acme.sh --list
# 查看证书详情,有证书的更新你时间,存放路径,多久更新等信息。
acme.sh --info -d example.com
DOMAIN_CONF # 存储了配置文件存放的地址
6、删除已经存在的证书
./acme.sh --remove --domain cqka.cn
7、安装证书
执行如下命令将前面生成的证书安装到 nginx 中。本质上就是拷贝证书文件到 nginx 的证书目录下。
该命令会被 ACME 记录下来,当做证书更新操作时,会自动执行该命令。
./acme.sh --installcert -d certs.cqka.cn \
--key-file /etc/nginx/ssl/certs.cqka.cn.key \
--fullchain-file /etc/nginx/ssl/certs.cqka.cn.crt \
--reloadcmd "nginx -s reload"
-d
表示证书所属的域名
--key-file
复制前面生成的 .key 文件到哪个位置。
一般为 nginx 配置文件中 ssl_certificate_key 指定的路径。
--fullchain-file
复制前面生成的 fullchain.cer 文件到哪个位置
一般为 nginx 配置文件中 ssl_certificate 指定的路径。
--reloadcmd
执行完证书文件的复制操作后,还需要执行哪些命令才能将目标证书文件成功配置到 nginx 上。
一般为 service nginx force-reload,强制重新加载配置文件即可启用最新的证书。
该命令就很灵活了,甚至您可以在其它机器上完成证书的安装,然后再远程把证书文件同步到域名所在服务器上。
--list # 查看证书过期的时间
8、手动更新证书
acme.sh --renew --domain sofineday.com
9、创建一个证书key
~]# ./acme.sh --create-domain-key --domain hook.cqka.cn
10、安装定时任务
如果需要日志需要手动修改下
~]# ./acme.sh --install-cronjob
--cron # 手动执行一次更新证书的定时任务