Python 3.11无法与支持TLSv1的客户端完成TLS握手的解决方案咨询
Python 3.11无法与支持TLSv1的客户端完成TLS握手的解决方案咨询
我正在研究一款明确支持TLSv1的软件,但始终无法完成TLS握手。我的测试环境是:一台Windows虚拟机连接到Windows主机,目标程序作为客户端,我用Python 3.11搭建了服务端。
我的TLS服务端配置代码如下:
import ssl import socket import time import binascii context=ssl.SSLContext(ssl.PROTOCOL_TLS_SERVER) context.options |=(ssl.OP_NO_TLSv1_2|ssl.OP_NO_TLSv1_3) context.maximum_version = ssl.TLSVersion.TLSv1_1 context.verify_mode=ssl.CERT_NONE #context.load_verify_locations("cert.pem") context.load_cert_chain(certfile="cert.pem" ,keyfile="key.pem") context.set_ciphers('ECDHE-RSA-AES128-SHA@SECLEVEL=0') serv=socket.socket(socket.AF_INET,socket.SOCK_STREAM) serv=context.wrap_socket(serv) serv.bind((ip,8080)) serv.listen(5)
用于测试的证书是通过以下OpenSSL命令生成的:
openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -days 600 -nodes
(补充说明:这款程序允许使用自签名证书,这点应该不会是问题根源)
我用Wireshark抓取了通信流量,发现两种异常行为:
- TCP连接建立后,Python服务端发送
alert: close notify (15030300020250),随后TCP连接被关闭 - TCP连接建立后,客户端发送了版本号为
0x0301(即TLSv1)的ClientHello,但Python服务端直接重置了TCP连接
我的核心需求是:只要能建立TLS 1.1或更低版本的连接就行,请问有没有可行的解决方案?
我最后尝试过调整SSL配置的方案,但还是没能成功建立连接。
备注:内容来源于stack exchange,提问作者Ivanex




