跳到正文

证书到期

SysAdmin Crisis 中的证书到期:先有一行早期预警日志,随后 TLS 握手失效。了解它的特征以及如何与其他事件区分。

最后更新:

游戏中最小的事件,也是最常因疏忽而中招的事件。它只明明白白地提示一次,然后在一段时间内毫无动静。

它做什么

它分两个阶段到来。注入时,一行警告日志说明负载均衡器的 TLS 证书即将到期——除此之外什么都不会发生。没有指标变动,没有条形图变色,没有机器改变状态。

宽限期一过,证书到期,两件事同时发生:合法流量下降,因为客户端无法再连接;这些客户端的重试风暴则烧着负载均衡器的 CPU,直到它进入 CRIT。可用率从两个方向同时下跌。

日志特征

先是负载均衡器上 monit 的一条警告;证书到期之后,握手错误出现在 nginx 的错误日志中:

00:14:22 lb-01 monit[540]: 'shop-tls' certificate expiry test failed -- certificate expires in less than 1 day
00:19:40 lb-01 nginx: [crit] SSL_do_handshake() failed (SSL: error:0A000415:SSL routines::sslv3 alert certificate expired:SSL alert number 45) while SSL handshaking, client: 198.51.100.23, server: 0.0.0.0:443

这条警告会从日志流中一闪而过,且不会重复。证书的真实到期日期可以用 openssl x509 -enddate -noout -in <cert> 读取;openssl 命令显示的就是证书中的原始日期。

置之不理的后果

影响会持续到班次结束。警告不会重复。在所有事件中,只有这一个事件,“及时解决”与“发现得太晚”的差别仅仅是一行文字:读到了,或者没读到。

如何区分

游戏中没有别的事件会产生 TLS 握手错误,也没有别的事件会在造成损害之前发出警告。日志行里只要出现 certificate,诊断就很简短;真正的问题在于何时认真对待这条警告。

何时出现

最早出现的夜4
前提一台 lb 机器(负载均衡器在第 3 夜加入)
权重55——事件目录中最罕见的事件
同时出现一个实例

处置不会立即显出效果;即便已经动手,修复也不是即时的。