【发布时间】:2021-07-22 12:02:18
【问题描述】:
我有一个使用 RSA 非对称加密和套接字的应用程序。但是在我阅读this 之后,我尝试使用 ssl 套接字。我尝试了一堆代码。这是服务器:
import socket, ssl
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock = ssl.wrap_socket(sock)
sock.bind(('some ip', 9999))
sock.listen(1)
cl, ip = sock.accept()
cl.send(b'hi client')
print(cl.recv(1024))
这里是客户端:
import socket, ssl
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock = ssl.wrap_socket(sock)
sock.connect(('same ip as server', 9999))
sock.send(b'hi server')
print(sock.recv(1024))
但是当客户端连接时(而不是客户端未运行时),我一直在服务器端获取此信息:
Traceback (most recent call last):
File "C:/Users/avishah/PycharmProjects/Math/SocketTest/Server.py", line 9, in <module>
cl, ip = sock.accept()
File "C:\Python\Python38\lib\ssl.py", line 1355, in accept
newsock = self.context.wrap_socket(newsock,
File "C:\Python\Python38\lib\ssl.py", line 500, in wrap_socket
return self.sslsocket_class._create(
File "C:\Python\Python38\lib\ssl.py", line 1040, in _create
self.do_handshake()
File "C:\Python\Python38\lib\ssl.py", line 1309, in do_handshake
self._sslobj.do_handshake()
ssl.SSLError: [SSL: NO_SHARED_CIPHER] no shared cipher (_ssl.c:1125)
这在客户端:
Traceback (most recent call last):
File "C:/Users/avishah/PycharmProjects/Math/SocketTest/Client.py", line 8, in <module>
sock.connect(('192.168.43.254', 9999))
File "C:\Python\Python38\lib\ssl.py", line 1342, in connect
self._real_connect(addr, False)
File "C:\Python\Python38\lib\ssl.py", line 1333, in _real_connect
self.do_handshake()
File "C:\Python\Python38\lib\ssl.py", line 1309, in do_handshake
self._sslobj.do_handshake()
ssl.SSLError: [SSL: SSLV3_ALERT_HANDSHAKE_FAILURE] sslv3 alert handshake failure (_ssl.c:1125)
我还添加了密码作为wrap_socket 的一部分,但这会导致同样的事情。
我实际上想要一个带有密码的服务器和客户端的简约示例。
【问题讨论】:
标签: python-3.x sockets ssl