acme.sh + Let’s Encrypt 证书续签失败“Could not get nonce, let’s try again“的解决办法

昨天一个朋友跟说他的 Let’s Encrypt 证书续签失败,今天老王看到自己也有一个网站出现了类似的问题,看 acme.sh 的续签日志,发现错误都是 timeout,详细的信息是 Could not get nonce, let’s try again。下面就分享下解决方法。

一、问题描述

老王服务器的环境是 LNMP,默认的 ssl 证书是用 acme.sh 申请并管理 Let’s Encrypt 证书。

查看 acme.sh.log(路径在 /usr/local/acme.sh),错误信息如下:

[Wed Jul 7 00:58:49 CST 2021] Could not get nonce, let’s try again.
[Wed Jul 7 00:58:51 CST 2021] GET
[Wed Jul 7 00:58:51 CST 2021] url=’https://acme-v01.api.letsencrypt.org/directory’
[Wed Jul 7 00:58:51 CST 2021] timeout=
[Wed Jul 7 00:58:51 CST 2021] _CURL=’curl -L –silent –dump-header /usr/local/acme.sh/http.header -g ‘
[Wed Jul 7 00:58:51 CST 2021] ret=’0’
[Wed Jul 7 00:58:51 CST 2021] Could not get nonce, let’s try again.

似乎是访问 https://acme-v01.api.letsencrypt.org/directory’ 这个链接超时,之后返回了 Could not get nonce, let’s try again 的错误信息。

于是老王尝试了用 acme.sh 手动续签 SSL 证书,同样返回了错误,并且错误信息更模糊:Sleep 10 and retry

二、解决办法

首先分享解决方法:更新 LNMP、更新 acme.sh -> 删除已经过期的 SSL 证书 -> 重新生成 SSL 证书。

1、更新 LNMP

目前 LNMP 最新版本是 1.8,并且增加了 BuyPass、ZeroSSL SSL 证书。

首先下载最新的 1.8 版本:

wget http://soft.vpser.net/lnmp/lnmp1.8.tar.gz -cO lnmp1.8.tar.gz && tar zxf lnmp1.8.tar.gz && cd lnmp1.8

从旧版本更新成 1.8 版本:

upgrade1.x-1.8.sh

详细介绍:《LNMP 1.8:增加 PHP 8.0 支持,增加 BuyPass、ZeroSSL SSL 证书,附安装和升级方法

2、更新 acme.sh

这个在《解决 acme.sh 更新 Let’s Encrypt 证书失败,证书过期问题》已经分享过升级方法了。

1、官方一键升级脚本

acme.sh --upgrade

2、手动升级方法

mkdir temp && git clone https://github.com/acmesh-official/acme.sh.git temp

mv acme.sh acme.sh_backup && mv temp/acme.sh .

3、删除过期的 SSL 证书

LNMP 脚本下的 SSL 证书默认是在 /usr/local/nginx/conf/ssl/,删除对应的 SSL 证书。

4、重新生成 SSL 证书

最简单的方式就是用 lnmp 先删除站点(lnmp del),之后再添加对应的站点(lnmp add)。

经过这 4 步,这个“Could not get nonce, let’s try again”续签失败的问题就成功解决了。

赞(0)
关注我们
未经允许不得转载:老王博客 » acme.sh + Let’s Encrypt 证书续签失败“Could not get nonce, let’s try again“的解决办法

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址