嗯,又到了周一,打开自己的博客,居然不能访问了!
浏览器提示证书过期,今天11月4号,证书11月3号过期,这可真是……
按道理ghost是会自动刷新证书有效期的,为什么会这样呢?
输入
sudo crontab -l
可以查看ghost自动刷新证书的命令行。
ubuntu@ip-x-x-x-x:/etc/letsencrypt$ sudo crontab -l
36 0 * * * "/etc/letsencrypt"/acme.sh --cron --home "/etc/letsencrypt" > /dev/null
于是进入\etc\letsencrypt
目录,试图按照crontab里的命令手动运行acme.sh
命令,报错失败。
经过若干尝试和debug,发现抱错原因是timeout,这……
15 [Mon Nov 4 10:40:12 CST 2019] Le_API='https://acme-v01.api.letsencrypt.org/directory
16 [Mon Nov 4 10:40:12 CST 2019] Using config home:/etc/letsencrypt
17 [Mon Nov 4 10:40:12 CST 2019] ACME_DIRECTORY='https://acme-v02.api.letsencrypt.org/d
18 [Mon Nov 4 10:40:12 CST 2019] _main_domain='wmdpd.com'
19 [Mon Nov 4 10:40:12 CST 2019] _alt_domains='no'
20 [Mon Nov 4 10:40:12 CST 2019] Using ACME_DIRECTORY: https://acme-v02.api.letsencrypt
21 [Mon Nov 4 10:40:12 CST 2019] _init api for server: https://acme-v02.api.letsencrypt
22 [Mon Nov 4 10:40:12 CST 2019] GET
23 [Mon Nov 4 10:40:12 CST 2019] url='https://acme-v02.api.letsencrypt.org/directory'
24 [Mon Nov 4 10:40:12 CST 2019] timeout=
25 [Mon Nov 4 10:40:12 CST 2019] _CURL='curl -L --silent --dump-header /etc/letsencrypt
经过多方搜索和排查,最后ls -lh
,发现本地acme.sh
是建站时的日期,于是怀疑可能是acme.sh
版本落后导致。
运行sudo acme.sh --upgrade
进行升级,不过升级后的文件被放置在~/.acme.sh/
目录下。
于是备份原有acme.sh
,并将升级后的acme.sh
移动到\etc\letsencrypt
目录,再重新试图运行刷新证书的命令。
结果直接运行报permission denied
,sudo
运行报错,让查wiki。
查了wiki也没看出个啥,再加-f
参数试图强制sudo
运行一次,证书更新成功。
事实证明ghost update
也管杀不管埋,重要的证书更新脚本的版本停滞不前,导致了这次错误。
所以记录下来,供有缘人参考。
至于升级后是否仍会自动更新证书,需要等两个月后查看证书情况,不行的话可能得手动更新,无论如何如果再出错可以尝试先更新acme.sh
到最新版本再试试。
这个故事告诉我们,没有动手能力的人慎重考虑自建博客服务,有时候托管也是不错的选择。
完毕。