案例中心

在假期间的 API 和证书问题回顾

一次假期期间的 API 和证书问题回顾

2021年1月8日 新闻

海外npv加速器

在圣诞假期期间,我们发现并修复了一个 API 问题,该问题一度使客户无法进行支付和创建新帐户。我们邀请您了解背后的情况。

事件概述

我们于 2020 年 12 月 29 日被警告我们的 API 没有正常响应。初步检查后,我们的印象是,由于 Let’s Encrypt 证书的错误续期,我们的 Keepalived 服务用于将浮动 IP 分享给健康节点运行不正常。

在接下来的五小时里,我们调查了此问题并部署了一个修复方案,迫使我们的应用使用正确的中介证书。

事后我们确认,这一问题是由于我们在 2020 年夏季的 Certbot Dockerfile 中硬编码了中介证书造成的。

这对客户的影响

在此期间,客户无法生成新帐户,也无法对现有帐户进行支付。

影响因素

我们错误地假设 Let’s Encrypt 在 2021 年 3 月 17 日 X3 版本失效之前不会更改其默认中介证书我们使用的那个,如 Let’s Encrypt 的网站所示。

参考历史证书,X2 版本在 2020 年 10 月 20 日失效。查看 X2 版本 帮助我们确认 Certbot 在旧证书过期之前会开始使用较新的中介证书。

导致我们问题的原因是,中介证书 R3 在 X3 中介证书我们的 Certbot 选择在伺服器上使用的证书失效之前就已经开始使用。

我们的长期解决方案

我们准备了一个长期解决方案,将防止此问题再次发生。该方案将在本月底之前部署,并将与我们所有面向网页的应用的 Let’s Encrypt 证书续期同时进行。

事件详细时间线

所有时间均为瑞典当地时间。

在假期间的 API 和证书问题回顾 20201229 1315 基础设施和服务团队被警告 API 略有故障。20201229 1350 两队伍成员在线集中,开始调查。20201229 1415 我们完成初步调查,开始部署我们认为与 Keepalived 有关的潜在修复方案。20201229 1430 我们进一步调整以缓解 Keepalived 问题,添加静态网络设置,这是一个临时解决办法。20201229 1445 继续调查使我们查看 Nginx 配置和 Nginx 错误日志此处我们只能查看伺服器端错误,无法找到用户数据。研究仍然在进行中,其他团队成员在适当时提供协助,并准备一些调整进行部署。20201229 1500 我们对 Nginx 配置进行了一些调整,然后监测状况并持续调查。20201229 1530 开始讨论及理论,认为 Let’s Encrypt 证书是问题所在,针对其的直接解决方案也在进行中。20201229 1600 Let’s Encrypt 理论似乎是正确的,开始进行修复工作。20201229 1630 修复部署到我们 API 集群的主伺服器,并确认功能正常,接著在集群的其他伺服器上进行推广。20201229 1745 经过各团队的事后分析和持续讨论,问题标记为已解决。