LNMP无法更新SSL证书问题解决

以前SSL证书都是自动更新的,最近发现证书到期以后居然没有更新了。

于是手动更新证书得到提示“It seems the CA server is busy now ”的相关提示。

[Thu May 28 12:01:26 CST 2020] Getting domain auth token for each domain
[Thu May 28 12:01:27 CST 2020] It seems the CA server is busy now, let’s wait and retry. Sleeping 1 seconds.
[Thu May 28 12:02:35 CST 2020] It seems the CA server is busy now, let’s wait and retry. Sleeping 1 seconds.

按理说Let's Encrypt每天签发那么多证书,不至于会这样,于是上网搜了下,出现这个结果的原因Let's Encrypt升级 API CDN 接口了。现在LNMP使用的是acme.sh 程序来进行获取证书了,acme.sh也已经更新的相关的程序。于是把程序升级下就可以了。

进入到acme文件夹,然后直接升级就可以了。

cd /usr/local/acme.sh
acme.sh --upgrade

升级完成以后,再更新证书就可以了。我这里因为昨天更新过,所以就自动跳过了。为了验证整个更新过程,我强制让系统再重新生成一次证书。

于是,整个升级过程就结束了。

另外,目前由于 acme 协议和频繁更新, 因此 acme.sh 也需要经常更新以保持同步,如果不想每次都手动升级,可以打开自动升级。

acme.sh --upgrade --auto-upgrade

以下命令为关闭自动升级。

 

acme.sh --upgrade --auto-upgrade 0

既然写到这里,干脆就把整个LNMP获取Let's Encrypt免费SSL证书的相关信息全部整理一下吧。

军哥的LNMP在1.5版本上增加LetseEcrypt 通配符/泛域名 SSL证书生成,在 1.6的版本上已经增加使用DNS API方式只创建SSL证书不添加网站。1.5和1.6有些不太一样,实际上我们只要运行下lnmp就可以看到相关提示。这些通过LNMP的更新日志就可以看到。https://lnmp.org/changelog.html。

Usage: lnmp {start|stop|reload|restart|kill|status}
Usage: lnmp {nginx|mysql|mariadb|php-fpm|pureftpd} {start|stop|reload|restart|kill|status}
Usage: lnmp vhost {add|list|del}
Usage: lnmp database {add|list|edit|del}
Usage: lnmp ftp {add|list|edit|del|show}
Usage: lnmp ssl add
Usage: lnmp {dnsssl|dns} {cx|ali|cf|dp|he|gd|aws}
Usage: lnmp onlyssl {cx|ali|cf|dp|he|gd|aws}

之前通过DNS验证应该是lnmp dns **,现在通过DNS验证并获取证书的方式变成了 lnmp dnsssl **。

当然,除了这个以外,LNMP状态管理命令列表也是需要的。https://lnmp.org/faq/lnmp-status-manager.html

关于LNMP即acme协议申请域名证书,主要是分为两种验证方式,http 和 dns 验证。

HTTP验证很好说。就是已经建立了一个站点并可以通过Internal访问,那么就可以通过HTTP验证的方法申请证书,LNMP默认也是这种的,当然这种只适合申请普通的单个域名证书。

dns验证则是我们上篇文章提到的,可以申请通配符也就是泛域名证书,及*.nicky1605.com,也就是nicky1605.com不管是什么域名都可以用的证书。

DNS验证与HTTP验证方式不同,它也有两种方式,一种是API的方式,是可以自动续期的;另一种是普通DNS的方式,在生成证书的时候,系统会提示手动添加DNS的txt记录。注意这种方式是不支持自动续期的。

lnmp dnsssl **  #通过API方式
lnmp dnsssl    #手动DNS方式

我们上一篇文章就是通过DNS服务器API的方式来进行的。

注意,如果是通过手动添加DNS的txt记录方式申请证书的,下次手动更新的时候,是需要更换txt记录的。如果使用定期执行的方式,得到的结果只会类似下面这样


"/usr/local/acme.sh"/acme.sh --cron --home "/usr/local/acme.sh" > /dev/null
[Thu May 28 18:19:15 CST 2020] It seems that you are using dns manual mode. Read this link first: https://github.com/Neilpang/acme.sh/wiki/dns-manual-mode
[Thu May 28 18:19:20 CST 2020] Error renew blog.nicky1605.com.

这时候,就要输入以下参数


acme.sh --issue -d example.com --dns \
--yes-I-know-dns-manual-mode-enough-go-ahead-please

再将系统提示的DNS解析记录更新到DNS服务器中,再执行以下命令进行更新。

acme.sh --renew -d example.com \
--yes-I-know-dns-manual-mode-enough-go-ahead-please

如果想在LNMP中解决的话,1.5版本只能删除虚拟机中ssl的配置,再像上面配置,如果是1.6的话,可以使用 lnmp onlyssl 只生成证书。当然也可以升级中使用DNS API的方式来解决。

参考资料:

HTTPS之acme.sh申请证书:https://www.cnblogs.com/clsn/p/10040334.html

Let’sEncrypt 证书 API 升级了:? https://blog.csdn.net/weixin_42527192/article/details/102883616

Let's Encrypt 泛域名SSL证书申请:http://blog.fly2x.cn/archives/95/

升级Let’s Encrypt通配符证书:https://mr21.cc/update/update-lets-encrypt-to-wildcard-support.html

Let'sEncrypt 免费通配符/泛域名SSL证书添加使用教程:https://lnmp.org/faq/letsencrypt-wildcard-ssl.html

Let's Encrypt 终于支持通配符证书了: https://www.jianshu.com/p/c5c9d071e395

快速签发 Let's Encrypt 证书指南:? https://www.cnblogs.com/esofar/p/9291685.html

怎么把手动DNS添加的ssl,改成自动续期 https://bbs.vpser.net/thread-18761-1-1.html

点赞

发表评论

电子邮件地址不会被公开。必填项已用 * 标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据