从套接字获取服务器名
问题描述:
我尝试编辑可用于嗅探SSL流量的mallory代理。然而,使用连接到服务器的服务器存在问题,例如, CloudFlare是因为无法获得真正的证书,而是来自前端的CloudFlare服务器。从套接字获取服务器名
由于这个原因,我想使用SSLContext.wrap_socket()中的server_hostname选项。但为此,我需要从Python套接字对象中获取目标服务器的名称。然而,我知道的唯一函数是getpeername(),但这只返回目标的ip。有人知道从套接字获取服务器名称的方法吗?
这是HTTP吗?在这种情况下,您 - 很遗憾 - 需要从HTTP标头中提取“Host:”。 python ssl的''server_name''参数是SNI(服务器名称指示),因为目标主机的名称不能从连接中确定... – dhke 2015-03-03 10:29:20
它适用于HTTP和HTTPS。这个解决方案有点令人不满意,因为我需要在真正的连接建立之前这样做,以伪造证书。 – 2015-03-03 10:38:41
然后,您可能需要通过SSLContext.set_servername_callback()从传入的SSL套接字获取服务器名称。但请注意您的python版本的可用性:http://bugs.python.org/issue8109 ... – dhke 2015-03-03 10:42:03