Hugo博客公告弹窗

acme实用技巧:稳妥的自动更新证书之宝塔面板

   
文章摘要
摘要小助理今天溜号啦……😜

1. 安装 acme.sh

安装很简单, 一个命令:

curl https://get.acme.sh | sh -s email=my@example.com

my@example.com 改成自己的邮箱

安装成功后,会为你自动创建定时任务, 如果快过期了, 需要更新, 则会自动更新证书。

默认情况下,证书将每60天更新一次。


切换默认证书

目前 acme.sh 支持 Let’s Encrypt、Buypass、ZeroSSL、SSL.com 和 Google Public CA,默认使用 ZeroSSL,如果需要更换可以使用下面命令:

#切换 Let's Encrypt
acme.sh --set-default-ca --server letsencrypt
#切换 Buypass
acme.sh --set-default-ca --server buypass
#切换 ZeroSSL
acme.sh --set-default-ca --server zerossl
#切换 SSL.com
acme.sh --set-default-ca --server ssl.com
#切换 Google Public CA
acme.sh --set-default-ca --server google

2. 设置DNS验证

文档:https://github.com/acmesh-official/acme.sh/wiki/dnsapi

以 CloudFlare为例:使用全局API密钥

准备:全局API密钥在 我的个人资料API令牌Global API Key 获得

设置CloudFlare DNS自动验证使用下面命令:

export CF_Key="763eac4f1bcebd8b5c95e9fc50d010b4"  #API密钥
export CF_Email="123456@qq.com"               #登录邮箱

3. 生成证书

如果之前安装过证书,后面加 --force 参数,

acme.sh --issue --dns dns_cf -d xxx.com -d *.xxx.com

成功之后,会在 ~/.acme.sh/目录生成以域名为名称的文件夹,里面包含了证书和各种信息

不要通配符,可以去掉:-d *.xxx.com ,如果有多个子域名,后面加 -d x.xxx.com

--dns dns_cf 表示使用CloudFlare DNS 自动验证

4. 安装证书(重点)

假设:你网站使用的是nginx,使用以下命令

acme.sh --install-cert -d xxx.com -d *.xxx.com \
--key-file       /www/server/panel/vhost/cert/xxx.com/privkey.pem  \
--fullchain-file /www/server/panel/vhost/cert/xxx.com/fullchain.pem \
--reloadcmd     "service nginx force-reload"

使用这条命令时先要生成证书(第三步)

不要通配符,可以去掉:-d *.xxx.com ,如果有多个子域名,后面加 -d x.xxx.com

命令解读

  • --install-cert #安装证书
  • --key-file #指定安装证书密钥路径
  • --fullchain-file #指定安装证书路径
  • --reloadcmd #重新加载nginx生效

为什么要使用那么多参数

  1. 因为acme证书虽然60天更新一次,但是更新的证书路径是:~/.acme.sh/xxx.com

  2. 你的域名指向的证书路径并不是在 ~/.acme.sh/

  3. 不能使用~/.acme.sh/文件夹中的证书文件,它们仅供内部使用,文件夹结构将来可能会更改

  4. 这些参数会被acme保存起来,下次自动更新时就会自动把证书安装到指定的路径,然后帮你重新加载nginx生效

所以,你要先知道你的域名证书指向的路径在哪,以宝塔面板为例:

/www/server/panel/vhost/cert/xxx.com/fullchain.pem
/www/server/panel/vhost/cert/xxx.com/privkey.pem

5. 签发ECC证书

使用以下命令 (以nginx为例)

acme.sh --install-cert -d xxx.com -d *.xxx.com --keylength ec-256 \
--key-file       /www/server/panel/vhost/cert/xxx.com/privkey.pem  \
--fullchain-file /www/server/panel/vhost/cert/xxx.com/fullchain.pem \
--reloadcmd     "service nginx force-reload"

多了 --keylength ec-256 参数

6.强制更新证书

所有证书将每60天自动更新一次,但你要强制更新的话

acme.sh --renew -d xxx.com --force

或者,对于ECC证书:

acme.sh --renew -d xxx.com --force --ecc

如何停止证书续订

要停止证书的续订,您可以执行以下操作以从续订列表中删除证书:

acme.sh --remove -d xxx.com [--ecc]

不会从磁盘中删除证书/密钥文件。

您可以自己删除相应的目录 (例如 ~/.acme.sh/xxx.com )。

如何升级 acme.sh

您可以将acme.sh更新为最新代码:

acme.sh --upgrade

您还可以启用自动升级:

acme.sh --upgrade --auto-upgrade

然后acme.sh将自动保持最新。

禁用自动升级:

acme.sh --upgrade --auto-upgrade 0
CC BY-NC-SA 4.0 转载请注明
最后更新于 2024-11-20 16:13
clarity统计