如今网站项目如果需要增加SSL证书确实比较方便,比如有很多免费一年的证书申请,即便是付费购买也就这么几十元一年的。或者我们在使用LNMP、Oneinstack、宝塔面板这些一键包环境的时候看而已自动一键安装Let's Encrypt免费证书,而且默认还是支持自动续约的(因为这个证书90天后需要续约才可以继续使用)。
不过,有些时候也有遇到不自动更新证书的时候,今天一个网友使用的Oneinstack一键包,自动配置的Let's Encrypt证书并没有在到期前30天自动更新证书。有些时候不自动更新的时候老左以前也遇到,然后手工输入更新脚本更新续期。
可以看到有提示错误无法自动续期。
The following certs are not due for renewal yet:
/etc/letsencrypt/live/****/fullchain.pem (skipped)
No renewals were attempted.
搜索相关解决方案没有找到合适的,迫于时间有限,赶紧就找一个笨办法解决。
第一、备份网站
这里我直接将网站根目录下的文件打包,然后拖动到本地和其他站点和服务器下备份好。如果担心数据和系统问题,我们还可以将数据库备份。
第二、清理已有的证书文件
/etc/letsencrypt
到这个目录中,将几个目录中带有站点文件夹的都手工删除掉。
第三、删除站点
./vhost.sh del
这里是用的Oneinstack一键包,我们可以删除站点包括目录,因为我们都备份好了(你得确定真备份了),所以可以删除。
第四、重新创建站点
./vhost.sh
重新创建站点,当然需要选择自动安装Let's Encrypt证书。
第五、迁移数据恢复
我们将备份好的数据再迁移到添加的站点目录下,因为数据库我都没动过,所以迁移压缩包解压调整目录就可以正常打开,而且可以看到证书都是最新的。
这样问题就这么用笨方法解决。笔者有咨询过oneinstack脚本作者,提到应该是服务器连接证书方有问题导致的,或者修改过nginx配置脚本,以后如果再遇到再看看有没有好办法,这么每次手工迁移数据添加也比较麻烦。