我正在使用http.client.HTTPSConnection生成到服务器的HTTPS连接。我无法使用原始主机名连接到服务器,因为这是一个测试设置,但我需要使用正确的主机名SNI进行正确的TLS握手。如何为HTTPS连接的客户端hello设置SNI
从ssl.SSLSocket.server_hostname判断,如果我可以访问底层套接字,我应该能够将其上的服务器主机名设置为我想要的值HTTPSConnection
确实有一个sock
成员,但它在构造之后是None
如果更多的源代码上下文有帮助,我将在proxy-verifier中处理测试代理。见proxy_http1.py#L94
在问题的评论部分,Steffen Ullrich引导我找到了答案。通过
http.client.HTTPSConnection
我试图做的事情没有直接的支持。但是,http.client.HTTPSConnection
调用传入的SSLContext的ssl.SSLContext.wrap_socket函数。因此,通过为该类创建包装器,我能够得到我想要的东西。如果对其他人有帮助,我的代码现在看起来如下:因此,如果我想指定SNI,我将使用定制的
WrapSSSLContext
类,它显式地提供我想要的服务器主机名。否则,我只使用标准ssl.SSLContext
。我已经在数据包捕获中验证了这一点,它指定了我希望在客户端hello中使用的SNI谢谢Steffen
相关问题 更多 >
编程相关推荐