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

可以看到宝塔的证书路径是:/www/server/panel/vhost/cert/

如果还没有安装过证书,那么此路径是没有域名证书文件夹的,

宝塔面板默认的证书路径格式是:/www/server/panel/vhost/cert/{域名}

所以,生成证书后,到~/.acme.sh/目录下找到域名文件夹,复制证书

fullchain.cer            #证书

xx.com.key               #密钥

复制到配置ssl证书的地方,
在这里插入图片描述

再查看证书路径:

在这里插入图片描述

最后再执行以下命令,记得修改为你的证书路径

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"

不是复制了证书生效了吗,为什么还要执行上面的命令?因为这些参数会被保存起来,之后的自动更新才有效!

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
  • 27
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值