Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/apache/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ssl/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache 客户端证书身份验证如何基于每个目录工作?_Apache_Ssl_Client Certificates - Fatal编程技术网

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

Apache 客户端证书身份验证如何基于每个目录工作?,apache,ssl,client-certificates,Apache,Ssl,Client Certificates,基于文档,Apache允许为一个目录请求客户端证书身份验证,而不为另一个目录请求客户端证书身份验证。 怎么可能呢 我假设第一个TLS/SSL进行握手(包括客户端证书验证),只有在握手之后,HTTP请求才会通过安全通道发送。这个HTTP请求包含一个URL 因此,看起来需要获取一个URL(一个目录)来执行(或跳过)客户端证书身份验证 因此,我不清楚Apache如何首先检查URL,然后决定是否请求客户端证书身份验证。它使用SSL/TLS重新协商:服务器发送一个请求,请求客户端通过发送新的客户端Hel

基于文档,Apache允许为一个目录请求客户端证书身份验证,而不为另一个目录请求客户端证书身份验证。

怎么可能呢

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

因此,看起来需要获取一个URL(一个目录)来执行(或跳过)客户端证书身份验证


因此,我不清楚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发现此错误。