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    # 手动执行一次更新证书的定时任务
posted @ 2024-06-26 11:35  Gshelldon  阅读(373)  评论(0编辑  收藏  举报