如果 SSL 握手失败,Apache HTTP 回退

如果 SSL 握手失败,Apache HTTP 回退

我有一个非常特定用例。我想使用 Apache 检查用户的浏览器是否能够使用现代 CipherSuites。

Apache 使用 https 调用并应尝试建立 SSL 连接,如果失败,Apache 应将用户重定向到后备 HTTP 站点,在那里告知用户他的浏览器已过时。

当然,我需要使用 mod_rewrite,它甚至有一个 https 变量,其中包含开/关,具体取决于 SSL 是否已建立。但如果初始 SSL 握手失败,我该如何告诉 apache 继续?

答案1

客户端应该尝试建立 SSL 连接,如果失败,Apache 应该将用户重定向到后备 HTTP 站点,并在那里告知用户他的浏览器已过时。

我认为你不能,TLS 握手会在客户端和 Web 服务器可以交换 HTTP 协议消息的阶段之前的阶段失败。

反而:

  1. 接受所有密码。
  2. 并按照从强到弱的顺序排列SSLCipherSuite ...指示。
  3. 不允许客户端决定密码的偏好,而是按照你在步骤 2 中确定的偏好顺序进行协商。SSLHonorCipherOrder on 指示。
  4. 应该导致与客户端支持的最强密码的连接。(理论上,您的实际里程可能会有所不同。)
  5. 如果该密码低于您的阈值,则应用逻辑显示您的安全消息。
  6. 保护真正需要强密码的内容手册中有说明

即类似于以下内容:

# be liberal in general
SSLCipherSuite ALL:!aNULL:RC4+RSA:+HIGH:+MEDIUM:+LOW:+EXP:+eNULL
SSLHonorCipherOrder on

<Location "/strong/area">
# but https://hostname/strong/area/ and below
# requires strong ciphers
SSLCipherSuite HIGH:!aNULL:!MD5
</Location>

相关内容