pyOpenSSL:错误的连接协议版本
pyOpenSSL: wrong protocol version for the connection
环境:
Python 3.7(Windows 上的 Anaconda 5.3.1)
pyOpenSSL 18.0
SSL.SSLEAY_VERSION:OpenSSL 1.0.2p 2018 年 8 月 14 日
我有一个套接字,用于一些未加密的通信,然后被pyOpenSSL包装:
sock = socket.socket()
sock.connect((address, port))
sock.send(msg)
context = SSL.Context(SSL.TLSv1_2_METHOD)
conn = SSL.Connection(context, sock)
conn.set_connect_state()
conn.do_handshake()
我希望协议是为上下文对象指定的 TLS 1.2,但 Wireshark 显示如下:
Secure Sockets Layer
TLSv1 Record Layer: Handshake Protocol: Client Hello
Content Type: Handshake (22)
Version: TLS 1.0 (0x0301)
Length: 302
Handshake Protocol: Client Hello
Handshake Type: Client Hello (1)
Length: 298
Version: TLS 1.2 (0x0303)
我得到:
Error: [('SSL routines', 'SSL3_GET_RECORD', 'wrong version number')]
我想错误与使用TLS 1.0有关,但我不明白它来自哪里?如果我检查 conn.get_protocol_version_name()
,它显示 TLSv1.2
有什么想法吗?
经过进一步调查,我将自己回答这个问题。 TLS 1.0 (0x0301)
在 ClientHello 消息的记录层是 expected 在 OpenSSL.
我收到 wrong version number
因为请求没有在服务器端正确路由,所以响应不是有效的 ServerHello 消息。
环境:
Python 3.7(Windows 上的 Anaconda 5.3.1)
pyOpenSSL 18.0
SSL.SSLEAY_VERSION:OpenSSL 1.0.2p 2018 年 8 月 14 日
我有一个套接字,用于一些未加密的通信,然后被pyOpenSSL包装:
sock = socket.socket()
sock.connect((address, port))
sock.send(msg)
context = SSL.Context(SSL.TLSv1_2_METHOD)
conn = SSL.Connection(context, sock)
conn.set_connect_state()
conn.do_handshake()
我希望协议是为上下文对象指定的 TLS 1.2,但 Wireshark 显示如下:
Secure Sockets Layer
TLSv1 Record Layer: Handshake Protocol: Client Hello
Content Type: Handshake (22)
Version: TLS 1.0 (0x0301)
Length: 302
Handshake Protocol: Client Hello
Handshake Type: Client Hello (1)
Length: 298
Version: TLS 1.2 (0x0303)
我得到:
Error: [('SSL routines', 'SSL3_GET_RECORD', 'wrong version number')]
我想错误与使用TLS 1.0有关,但我不明白它来自哪里?如果我检查 conn.get_protocol_version_name()
,它显示 TLSv1.2
有什么想法吗?
经过进一步调查,我将自己回答这个问题。 TLS 1.0 (0x0301)
在 ClientHello 消息的记录层是 expected 在 OpenSSL.
我收到 wrong version number
因为请求没有在服务器端正确路由,所以响应不是有效的 ServerHello 消息。