客户端证书身份验证如何基于每个目录工作?

Vic*_*nin 4 apache ssl client-certificates

根据文档,Apache允许为一个目录请求客户端证书身份验证,而不是为另一个目录请求它. http://httpd.apache.org/docs/2.2/ssl/ssl_howto.html#arbitraryclients

这怎么可能?

我假设第一个TLS/SSL进行握手(包括客户端证书验证),并且只有在它之后,才通过安全通道发送HTTP请求.此HTTP请求包含一个URL.

因此,看起来需要获取(或跳过)客户端证书身份验证的URL(指令).

所以,我不清楚Apache如何首先检查URL并稍后决定是否请求客户端证书身份验证.

Bru*_*uno 6

它使用SSL/TLS重新协商:服务器发送TLS Hello请求消息,要求客户端通过发送新的客户端Hello消息来触发新的握手(这次服务器将在其服务器Hello消息之后发送证书请求).

Hello请求消息原则上可以在HTTP交换期间的任何时间发生.对于此特定功能,服务器在收到请求后(因此知道请求了哪个资源),但在发送其响应之前发送它.

  • 是的。如果您不相信,您可以尝试使用 Wireshark 设置测试环境(即使没有客户端证书,您至少应该看到服务器的 CertificateRequest)。在目录中使用 `SSLVerifyClient none` 和 `SSLVerifyClient optional` 配置主机。遵循 [Wireshark SSL](http://wiki.wireshark.org/SSL) 教程(强制使用非 DHE 密码套件,如 `TLS_RSA_WITH_AES_256_CBC_SHA` 可能会使 Wireshark 的测试更容易)。当尝试访问该目录中的某些内容时,您应该看到来自服务器的“Hello Request”和这次与“Certificate Request”的第二次握手。 (2认同)