如果客户端在客户端Hello消息中有错误的SNI,我正在寻找让Apache发送handshake_failure错误或关闭连接的方法。
Apache能够从客户端获取SNI值
解决:Apache - mod_ssl在其环境变量中有“SSL_TLS_SNI”。
Apache可以检查SNI是否包含在当前基于名称的虚拟主机列表中。
未解决:但这并不重要,我可以使用SetEnvIf并手动匹配。
这对我来说是最困难的部分:让Apache关闭连接或回复TLS错误(RFC 5246 - 7.2.2. Error Alerts)给客户端。我找不到任何办法。
如果客户不支持SNI怎么办?
我启用了SSLStrictSNIVHostCheck,因此,如果未发送SNI,客户端将收到handshake_failure错误。
为什么您更喜欢关闭连接/回复TLS错误而不是仅显示错误?
我不希望我的服务器在客户端知道正确的域之前发送证书信息。 (我知道还有其他方法可以解决这个问题)我只是试图挑战自己找到一种方法来拦截Apache上TCP / TLS层上的连接。这是前提条件,无需讨论。
感谢。