服务器用的免费的 Les`s Encrypt 证书,自动续期用的 acme。之前一直好好的,但这一个月,阿里云每天都给我发解析变更的邮件通知。但我一直没在意,直到今天网站打不开。
重启服务器,无效。
访问不需要 MySQL 的应用。成功打开。
直接访问 MySQL api。成功。
检查域名,发现浏览器提示证书过期。
进入 /usr/local/acme.sh/ 检查 acme.sh 日志。发现如下记录:
[Fri Mar 12 01:14:30 CST 2021] Return code: 1 [Fri Mar 12 01:14:30 CST 2021] Error renew tony93.top. [Fri Mar 12 01:14:30 CST 2021] _error_level='1'
然后更新了下 acme:
acme.sh --upgrade
然后 crontab -l 查看续期命令,手动执行:
crontab -l // 复制显示的脚本命令,粘贴执行 "/usr/local/acme.sh"/acme.sh --cron --home "/usr/local/acme.sh" > /dev/null
可还是续期失败了。
执行 debug 模式。
acme.sh --cron --force --debug 2
在一连串的输出里,找到了失败的原因:acme 将默认 AC 改成了 zerossl。在网上找了一圈,没找到继续使用 let`s encrypt 的方法。没办法,只能按照 acme 的提示,用邮箱注册了 zerossl。
acme.sh --register-account -m xxx@qq.com // 然后再次执行续期脚本 acme.sh --cron --force --debug 2
这次终于成功了。
再次碰到了更新失败的问题,这次日志显示:dns_ali does not contain dns。
解决方法是:
apt-get update apt-get install ca-certificates
然后执行 acme 的 renew 就可以:
acme.sh --renew -d your.domain --ecc
这会更新距离到期不足 30 天的证书,其中–ecc 是可选的(使用 ECC 算法申请证书)。如果想强制更新,可以加 –force 参数。