Apache 客户端证书身份验证如何基于每个目录工作?
基于文档,Apache允许为一个目录请求客户端证书身份验证,而不为另一个目录请求客户端证书身份验证。 怎么可能呢 我假设第一个TLS/SSL进行握手(包括客户端证书验证),只有在握手之后,HTTP请求才会通过安全通道发送。这个HTTP请求包含一个URL 因此,看起来需要获取一个URL(一个目录)来执行(或跳过)客户端证书身份验证Apache 客户端证书身份验证如何基于每个目录工作?,apache,ssl,client-certificates,Apache,Ssl,Client Certificates,基于文档,Apache允许为一个目录请求客户端证书身份验证,而不为另一个目录请求客户端证书身份验证。 怎么可能呢 我假设第一个TLS/SSL进行握手(包括客户端证书验证),只有在握手之后,HTTP请求才会通过安全通道发送。这个HTTP请求包含一个URL 因此,看起来需要获取一个URL(一个目录)来执行(或跳过)客户端证书身份验证 因此,我不清楚Apache如何首先检查URL,然后决定是否请求客户端证书身份验证。它使用SSL/TLS重新协商:服务器发送一个请求,请求客户端通过发送新的客户端Hel
因此,我不清楚Apache如何首先检查URL,然后决定是否请求客户端证书身份验证。它使用SSL/TLS重新协商:服务器发送一个请求,请求客户端通过发送新的客户端Hello消息触发新的握手(这一次,服务器将在其服务器Hello消息之后发送证书请求)
Hello请求消息原则上可以在HTTP交换期间的任何时间发生。对于此特定功能,服务器在收到请求后立即发送该消息(因此知道请求的资源),但在发送响应之前。让我重复一遍,以确保我正确理解它。服务器在没有客户端证书身份验证的情况下发出初始请求。客户端在安全通道内发送HTTP请求。服务器检查URL并决定是否需要执行客户端证书身份验证。如果需要,它将启动t新握手。作为新握手的一部分,它将执行客户端身份验证。是的。如果您不确信,可以尝试使用Wireshark设置测试环境(即使没有客户端证书,您至少应该看到服务器的证书请求)。使用目录中的
SSLVerifyClient none
和SSLVerifyClient optional
配置主机。按照教程进行操作(强制使用非DHE密码套件,如TLS\u RSA\u和\u AES\u 256\u CBC\u SHA
可能使Wireshark的测试更容易)。当尝试访问该目录中的内容时,您应该会看到服务器发出的Hello请求
,以及与证书请求
的第二次握手。感谢@user112358发现此错误。