You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

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

火山引擎 最新活动