繁体   English   中英

从python SSL服务器接收的数据不正确

[英]Received data from python SSL server is incorrect

我正在尝试修改我用python套接字库编写的套接字服务器,以使用通过python的SSL库进行加密。

我无法成功打开与服务器的连接,将其与SSL上下文包装在一起,然后将数据发送到服务器,但是发送回客户端的数据不是应该的。

我怀疑服务器的响应没有在客户端解密,但我不知道为什么。 我对SSL / TLS和网络一般还很陌生,所以...我想念什么?

客户端也是用python编写的(目前,以方便测试)

码:

相关服务器资料:

def sslServerLoop():
    s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    s.bind((host, port))
    s.listen(5)

    context = ssl.create_default_context(ssl.Purpose.CLIENT_AUTH)
    context.load_cert_chain('cert.pem')

    while True:
        conn, addr = s.accept()
        sslConn = context.wrap_socket(conn, server_side=True)
        data = sslConn.recv(1024)
        sslConn.sendall(response)
        sslConn.close()

相关客户资料:

context = ssl.create_default_context(cafile='cert.pem')
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s = context.wrap_socket(s, server_hostname=server_addr)
s.connect((address, port))
s.sendall(msg)
s.shutdown(socket.SHUT_WR)
response = s.recv(1024)

从客户端到服务器的发送可以正常工作,但是发送回客户端的数据是错误的。 例如,如果我在服务器端设置response = bytes([1])b'\\x17\\x03\\x03\\x00\\x19\\xac\\xb6\\x7f@\\xc0\\xd3\\xce%\\x13G\\x01\\xbd\\x88y\\xf0\\xda..\\x02\\xf9\\xe4o\\xdd\\x1a\\xdb'收到b'\\x17\\x03\\x03\\x00\\x19\\xac\\xb6\\x7f@\\xc0\\xd3\\xce%\\x13G\\x01\\xbd\\x88y\\xf0\\xda..\\x02\\xf9\\xe4o\\xdd\\x1a\\xdb'在客户端。 每次我尝试运行它时,大多数更改都会更改,但是前5个字节始终是相同的(这部分是我怀疑它没有被解密的原因)。

cert.pem是使用openssl生成的自签名证书,如python 3 SSL模块文档中所述

关闭用于SSL的套接字是不合法的。 这是违反协议的行为。 您必须通过使用的SSL / TLS API关闭。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM