# 一台你根本不知道它存在的计算机的故障 - **期号**: SRE Weekly Issue #242(2020-11-01) - **作者**: Oren Eini — RavenDB - **链接**: https://ayende.com/blog/192261-B/the-failure-of-a-computer-you-didnt-even-know-existed?Key=37a80133-d4db-498a-a62a-321ed12678fc ## 简介 "CRL 服务器宕机"——在排查数据库连接故障时,这不会是你第一个想到的原因。 ## 正文 ## 一台你根本不知道它存在的计算机的故障 **2 分钟阅读** **323 词** 这篇文章的标题化用了 Leslie Lamport 的一句名言:"分布式系统就是这样的系统:一台你根本不知道它存在的计算机的故障,也能让你的计算机无法使用。" 几天前,我的博客挂了。网站是能打开的,但它一直报错,说无法连接数据库。这很出人意料,因为那个数据库运行在一个三重冗余的系统中,而且经受住了不少折腾。我花了一番功夫才弄清楚到底发生了什么,但根本原因很简单——某台我压根不知道存在的服务器挂了。 具体来说,是 crl.identrust.com 服务器宕机了。我对我们的内部架构相当熟悉,而那台服务器并不是我们依赖的东西。至少我以前是这么想的。CRL 是证书吊销列表(Certificate Revocation List)的缩写。让我们来看看它是从哪冒出来的吧。这是本博客的证书: ![image image](https://ayende.com/blog/Images/Open-Live-Writer/The-failure-of-a-computer-you-didnt-even_13489/image_thumb_1.png) 它由 Let's Encrypt 签发——整个互联网上超过 50% 的网站都是它签的。而 Let's Encrypt 的证书里藏着这样一个有趣的小细节: ![image image](https://ayende.com/blog/Images/Open-Live-Writer/The-failure-of-a-computer-you-didnt-even_13489/image_thumb_2.png) 注意,这个 CRL 只在 Let's Encrypt 自身被吊销的情况下才会被用到。而那种情况对整个互联网来说大概都是灾难性的事件(别忘了 > 50%)。 当那台服务器宕机时,RavenDB 客户端无法验证证书链是否有效,于是拒绝了请求。这是我们*没有*预料到的,也是我们正在考虑默认禁用的东西。如今证书吊销列表其实用得不多,更常见的是 OCSP(在线证书状态协议,Online Certificate Status Protocol),而即便是 OCSP 也有它的问题。 如果您对此有任何反馈,我将不胜感激。 ## 评论 ## 评论预览