首页 > 解决方案 > 使用 SSLContext 指定 IP 地址 + SNI

问题描述

如何使用 Python 的 SSLContext 指定您希望连接的服务器的 IP 地址以及SNI?

我可以轻松地单独指定 SNI,但无法确定如何将请求指向特定的 IP 地址

例如,这将导致在 'Client Hello' 中发送 'mywebsite'

 hostname = "mywebsite"
 context.wrap_socket(sock, server_hostname=hostname)

你如何控制你连接的IP?

谢谢!

标签: python-3.xssl

解决方案


你的sock变量是如何创建的?

它是一个套接字,因此它是在调用之前指定目标 IP 和端口的地方wrap_socket

像:

sock = socket.create_connection((HOST, PORT))

在 TLS 级别“太晚了”:TLS 握手发生在 TCP/IP 连接建立之后,因此在您发送 SNI 扩展时,您已经连接到特定的 IP 地址(和端口)。


推荐阅读