背景
之前博客是放在香港的虚拟主机上,有些功能就用不了(例如对象缓存 Object Cache)。虽然也有过转移到 VPS 的想法,但香港的 VPS 用的人太多,时不时感觉不稳定。再加上付款周期还没到,就搁置了。
前几天在网上看到日本有冷门的 VPS(需要本地手机号和住址验证),走的 IIJ 线路。正好上面有个免费 14 天试用,就申请试了一下,感觉连接国内速度还行(不绕路),就决定正式申请了。顺便花了一天时间把博客搬了过来。
之前博客是放在香港的虚拟主机上,有些功能就用不了(例如对象缓存 Object Cache)。虽然也有过转移到 VPS 的想法,但香港的 VPS 用的人太多,时不时感觉不稳定。再加上付款周期还没到,就搁置了。
前几天在网上看到日本有冷门的 VPS(需要本地手机号和住址验证),走的 IIJ 线路。正好上面有个免费 14 天试用,就申请试了一下,感觉连接国内速度还行(不绕路),就决定正式申请了。顺便花了一天时间把博客搬了过来。
我的 SSL 证书是主机供应商提供自动续期的,从上个月中旬开始第一期到期,去后台查看发现已经确认自动续期,但是不知为什么我自己访问站点时,时不时提示 SSL 证书过期,显示还是之前的老证书。这个“时不时”很诡异,大约三次里面两次失败一次成功。
折磨了将近两星期,向主机供应商发工单前后七八次,依旧无果。直到老麦兄在留言中提醒:“关了代理能正常访问”。我马上意识到是 CDN 的问题。
国内主机由于对Let’s Encrypt官网连接经常出现问题,因此推荐 DNS 法手动续期。特别是默认的 certbot renew
命令很容易由于网络连接问题导致失败,此时千万不要反复尝试,否则失败多次后直接封你一个星期没商量。惨痛教训。 😢
DNS验证是比较安全的方法,具体参考这篇文章。在此备份一下命令:
# certbot --manual --preferred-challenges dns certonly
然后有两个地方需要注意的,文章没提到:
第一:添加DNS时千万要仔细看清楚域名写的是什么,不是简单一个_acme-challenge 就完事了,因为可能有子域名。
第二:成功之后最好重启一下httpd服务。
这种方法每三个月都得手动操作一次,不能自动
snap 的官方全文在此处。其实也没什么特殊的,事实上就是它自动帮你安装了一个list-timers
脚本,无需手动去设置cron。
certbot --apache
该命令会自动帮你设置 conf 文件(SSL 的 conf 以及非 SSL 的重定向)
此时只能使用 webroot 模式。建议用 --webroot
时用 -w
加上具体的目录名字,例如:
certbot certonly --webroot -w /var/www/html
这里的 /var/www/html/
是你的域名对应的根目录。
然后去看一下 /etc/letsencrypt/renewal/yourdomain.com.conf
,最后几行应该是:
[renewalparams]
account = XXXXXXXX
authenticator = webroot
server = https://acme-v02.api.letsencrypt.org/directory
key_type = rsa
webroot_path = /var/www/html,
[[webroot_map]]
这样就对了。
此时可以 certbot renew --dry-run
尝试一下。确定成功才行。
注意:大部分情况下网站开启了 Cloudflare 时是允许源服务器不设置 SSL 的。但是有一种情况必须要设置:想使用 wordpress litespeed cache 爬虫插件时。