如果SNI与任何已启用的基于名称的虚拟主机

时间:2016-11-01 05:08:26

标签: apache ssl https tls1.2 sni

我想要的是什么:

如果客户端在客户端Hello消息中有错误的SNI,我正在寻找让Apache发送handshake_failure错误或关闭连接的方法。

将这个问题分解成部分,我已完成的研究:

  1. Apache能够从客户端获取SNI值

    解决:Apache - mod_ssl在其环境变量中有“SSL_TLS_SNI”。

  2. Apache可以检查SNI是否包含在当前基于名称的虚拟主机列表中。

    未解决:但这并不重要,我可以使用SetEnvIf并手动匹配。

  3. 这对我来说是最困难的部分:让Apache关闭连接或回复TLS错误RFC 5246 - 7.2.2. Error Alerts)给客户端。我找不到任何办法。

  4. 您可能会问的其他问题

    • 如果客户不支持SNI怎么办?

      我启用了SSLStrictSNIVHostCheck,因此,如果未发送SNI,客户端将收到handshake_failure错误。

    • 为什么您更喜欢关闭连接/回复TLS错误而不是仅显示错误?

      我不希望我的服务器在客户端知道正确的域之前发送证书信息。 (我知道还有其他方法可以解决这个问题)我只是试图挑战自己找到一种方法来拦截Apache上TCP / TLS层上的连接。这是前提条件,无需讨论。

    请给我一些提示或与我分享您的类似经历。

    感谢。

0 个答案:

没有答案