Ghost博客网站证书过期,怎么办?

嗯,又到了周一,打开自己的博客,居然不能访问了!

浏览器提示证书过期,今天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 deniedsudo运行报错,让查wiki。

查了wiki也没看出个啥,再加-f参数试图强制sudo运行一次,证书更新成功。

事实证明ghost update也管杀不管埋,重要的证书更新脚本的版本停滞不前,导致了这次错误。

所以记录下来,供有缘人参考。

至于升级后是否仍会自动更新证书,需要等两个月后查看证书情况,不行的话可能得手动更新,无论如何如果再出错可以尝试先更新acme.sh到最新版本再试试。

这个故事告诉我们,没有动手能力的人慎重考虑自建博客服务,有时候托管也是不错的选择。

完毕。