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'
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.

2、切换证书颁发服务器

acme.sh支持4个CA服务器,分别是 Let's Encrypt、Buypass、ZeroSSL 和 SSL.com,默认使用 ZeroSSL。

默认的可能会创建失败

./acme.sh --set-default-ca --server letsencrypt
  • 1.

3、注册邮箱用户

~]# ./acme.sh --register-account -m gong@kai.com
  • 1.

返回的用户码

ACCOUNT_THUMBPRINT='iZvLA00P9wNoMDQhXxvUHXRcFs'
  • 1.

4、申请证书

申请成功之后会输出证书的存放位置

./acme.sh --issue --days 80 -d certs.cqka.cn --webroot /www

--days 指定使用"--issue"命令时更新证书的天数,这个证书使用多少天后更新;默认值为60天。
--webroot 是网站的目录,如果是代理可以修改nginx的路由规则,来重新定义验证信息的生成目录。
--force   强制更新
--debug   申请证书的详细过程
-d        指定域名,可以指定多个域名,比如www和主域名。
--nginx   使用nginx模式
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.

会在指定的目录下生成.well-known用于验证。
/www/.well-known
然后证书颁发机构会根据这个链接去验证域名
 http://certs.cqka.cn/.well-known/acme-challenge/so8_vG20HB87zyCidp2D2sZ2dUz08zN_QGm4brYAtLk

4.1 nginx的配置

location /.well-known/ {
  root /www;
}
  • 1.
  • 2.
  • 3.

成功之后打印出详细信息并把证书位置打印出来。

[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  # 存储了配置文件存放的地址
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.

6、删除已经存在的证书

./acme.sh --remove --domain cqka.cn
  • 1.

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      # 查看证书过期的时间
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.

8、手动更新证书

acme.sh --renew --domain sofineday.com
  • 1.

9、创建一个证书key

~]# ./acme.sh  --create-domain-key --domain hook.cqka.cn
  • 1.

10、安装定时任务

如果需要日志需要手动修改下

~]# ./acme.sh --install-cronjob

--cron    # 手动执行一次更新证书的定时任务
  • 1.
  • 2.
  • 3.