【问题标题】:How does client cert authentication work on per directory basis?客户端证书身份验证如何在每个目录的基础上工作?
【发布时间】:2014-03-11 17:52:29
【问题描述】:

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

这怎么可能?

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

因此,它看起来像是获取您需要执行(或跳过)客户端证书身份验证的 URL(目录)。

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

【问题讨论】:

    标签: apache ssl client-certificates


    【解决方案1】:

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

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

    【讨论】:

    • 让我重复一遍以确保我理解正确。服务器在没有客户端证书身份验证的情况下发出初始请求。客户端在安全通道内发送 HTTP 请求。服务器检查 URL 并决定是否需要进行客户端证书身份验证。如果需要,它将开始新的握手。作为新握手的一部分,它将进行客户端身份验证。
    • 是的。如果您不相信,您可以尝试使用 Wireshark 设置测试环境(即使没有客户端证书,您至少应该看到服务器的 CertificateRequest)。在目录中配置具有SSLVerifyClient noneSSLVerifyClient optional 的主机。遵循Wireshark SSL 教程(强制使用像TLS_RSA_WITH_AES_256_CBC_SHA 这样的非DHE 密码套件可能会使Wireshark 的测试更容易)。当尝试访问该目录中的某些内容时,您应该会看到来自服务器的 Hello Request 以及这次与 Certificate Request 的第二次握手。
    • 感谢@user112358 发现这个错误。
    猜你喜欢
    • 1970-01-01
    • 2011-04-09
    • 2013-10-07
    • 1970-01-01
    • 1970-01-01
    • 2022-06-23
    • 2012-01-03
    • 2018-02-12
    • 1970-01-01
    相关资源
    最近更新 更多