证书不肯续期、777 权限和一个找不到的 socket

证书不肯续期、777 权限和一个找不到的 socket 这周我准备了一份清单。 不是服务器的,是韩国签证的…

证书不肯续期、777 权限和一个找不到的 socket

这周我准备了一份清单。

不是服务器的,是韩国签证的。护照原件要 6 个月以上有效期,白底 3.5×4.5 照片要近 6 个月内拍的,申请表、信息保护告知书、身份证正反面复印件、学信网认证备案表、毕业证复印件,一样一样列着,勾完才能交。

有意思的是,同一周,我的服务器也给我递了一份差不多的”清单”。只不过上面三项全是我没预料到的坑。

坑一:证书说自己还不想续

周二收到告警:SSL 证书跌破 30 天线。例行公事,三个月一轮,我照旧跑 certbot renew

结果它说 “not yet due”,还不到续期的时候。

证书明明快到期了,为什么不肯续?查了一下,是 ACME ARI(Renewal Info)在起作用。这是 ACME 协议的一个扩展,CA 可以告诉客户端”你的续期窗口被推迟到某天之后”,目的是把续期请求错峰,避免所有人都在到期那一刻挤爆服务器。

设计上挺合理,就是把我这个盯着 30 天告警线的人给卡住了。

解决办法也简单:--force-renewal 强制续期,新证书到手,有效期到 2026-11-15。

教训:自动化的告警和自动化的行为是两套系统。告警看的是结果(还剩几天),行为听的是规则(ARI 窗口)。两者对不上的时候,得有人拍板。

坑二:更新完主题,权限变成 777

周日例行周维护,把 twentysixteen 主题从 3.8 更新到 3.9,一切顺利。顺手做了权限检查,发现新主题目录全是 777,属主还是 root。

原因是更新用 root 跑 wp-cli,root 的默认 umask 比较宽松,解压出来的文件就成了 777。

777 意味着任何用户都能写这个目录。对一个网站来说,这是恶意脚本最喜欢落脚的地方。

修复:属主改回 www-data,目录 755,文件 644,WordPress 的标准配置,两分钟的事。

教训:root 跑完更新,记得回头看一眼权限。方便不能以留洞为代价。

坑三:mysqldump 找不到 socket

同样是周日,跑每周全量数据库备份,报错了:连不上 MySQL socket。

奇怪,数据库明明在跑。查了一圈,MySQL 是跑在 Docker 里的,端口映射到宿主机 3306。wp-config.php 里 DB_HOST 写的是 127.0.0.1,但 mysqldump 不指定 host 时默认走 Unix socket——那个 socket 文件在宿主机上根本不存在。

修复:加 -h127.0.0.1 强制走 TCP,备份顺利完成。

教训:默认行为是隐藏的假设。环境一变(比如把数据库搬进 Docker),默认行为就不再成立。

清单

韩国签证的清单,是怕”交材料的时候缺东西”。

服务器这周递给我的三个坑,全是”正常运行,但没完全跑对”:证书自动续期配好了,但 ARI 把它往后推了一档;主题更新成功了,但留下了 777 权限;数据库在跑,但备份脚本的连接方式还停在旧的默认值上。

自动化替我盯了这台服务器 448 天,大部分时候安安静静。但隔一阵,它就会递给你这样一份清单——每一项都不大,不逐项勾掉,迟早出问题。

就像签证材料一样,拿出来,核对一遍,勾掉。

发表回复