假设我有一个基于 Linux 的服务器,运行 apache 或 tomcat,并具有由受信任的机构创建的 Web 服务器证书。该证书已嵌入 crl 的分发点。问题如下:每当我的服务器通过 ssl 与另一个实体(服务器、用户等)进行通信时,它是否依赖于有效的 crl 或信任链就足够了? (默认配置)
编辑:情况是我的组织由Windows环境和Linux环境组成。该组织使用 Microsoft CA 作为 Windows 和 Linux 使用的服务器和客户端的证书。有一个托管 crl 文件的公共服务器。大多数Linux环境由apache服务器和db服务器组成,通过ssl进行通信。
问题是如果 crl 服务器离线,Linux 环境会发生什么情况。 Linux 服务器是否能够通过验证链信任进行通信,或者在没有可用的 crl 的情况下无法进行验证。这个问题有点抽象,因为我在那个环境中有很多种服务器,但是我想知道这种情况下的一般情况。
第二次编辑:我想提一下,在我们的 Linux 环境中,我们使用 OpenSSL 来创建 CSR 并安装证书。
答案1
正如德米特里(Dmitry)评论的那样,客户(或者使用正确的术语,即依赖方)关心证书是否已被吊销。
在 Web 服务器中,依赖方是浏览器,但如果服务器请求客户端证书,则角色互换,依赖方就是服务器。
在 Windows 中,使用 CAPI,依赖方仅在配置为这样做时才检查 CRL。虽然我相信 Windows 10 上的 IE11 默认情况下会进行检查,但我确信在 IE9/Windows 7 时代,您必须应用组策略来强制执行 CRL 检查。
Unix/Linux 世界中的情况要复杂得多。首先,没有一个类似于 Windows CAPI 的 API。我们有 OpenSSL、GnuTLS、NSS 等。 Mozilla 的产品按其编写方式使用 NSS; Chrome 也使用它。但不能保证所有浏览器都这样做。 Firefox 检查 CRL(但是不是很长看起来),同时Chrome 使用不同的机制m,尽管它们都使用 NSS。
就像 Windows 上的 CAPI 一样,应用程序是否选择检查 CRL 取决于供应商或管理员(您?)或两者。