我遇到了一些问题,无法阻止使用HTTP/2,以便强制浏览器在https内部使用HTTP/1协议。 TLS MITM不可行,最多考虑类似于NFQUEUE的用户模式数据包过滤,具体取决于处理开销。
从阅读ALPN RFC来看,如果我看到包含ALPN:http/2的ClientHello时提供警报响应或断开连接,是否会使浏览器重试而没有ALPN,目前还不清楚。
如果我理解正确,修改ClientHello是不可能的,因为当服务器响应ServerHello时更改ClientHello会导致校验和错误,因为更改ClientHello会使该数据包的MAC失效。
关于阻止握手的行为是否与处理TLS版本回退的行为相同,即TLS_FALLBACK_SCSV?
编辑:根据openssl的t1_lib.c,如果服务器不知道ALPN,则会忽略它。因此,如果服务器返回Alert,表示包含ALPN的ClientHello,这可能仅是因为它不支持TLS1.2,除了“alert”之外,没有任何方法可以向客户端发出“请重试而没有ALPN”的信号,这将导致客户端尝试TLS1.1。
从阅读ALPN RFC来看,如果我看到包含ALPN:http/2的ClientHello时提供警报响应或断开连接,是否会使浏览器重试而没有ALPN,目前还不清楚。
如果我理解正确,修改ClientHello是不可能的,因为当服务器响应ServerHello时更改ClientHello会导致校验和错误,因为更改ClientHello会使该数据包的MAC失效。
关于阻止握手的行为是否与处理TLS版本回退的行为相同,即TLS_FALLBACK_SCSV?
编辑:根据openssl的t1_lib.c,如果服务器不知道ALPN,则会忽略它。因此,如果服务器返回Alert,表示包含ALPN的ClientHello,这可能仅是因为它不支持TLS1.2,除了“alert”之外,没有任何方法可以向客户端发出“请重试而没有ALPN”的信号,这将导致客户端尝试TLS1.1。