【发布时间】:2016-09-05 14:39:03
【问题描述】:
我想在客户端和用 python 3 编写的服务器之间启动一个简单的 SSL 连接,但是我遇到了错误。
这是服务器代码:
#/usr/bin/python3
import socket
import ssl
HOST, PORT = '0.0.0.0', 12345
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.bind((HOST, PORT))
sock.listen(10)
client, addr = sock.accept()
# WRAP SOCKET
wrappedSocket = ssl.wrap_socket(client, server_side=True, ssl_version=ssl.PROTOCOL_SSLv23, ciphers="ADH-AES256-SHA")
# CONNECT AND PRINT REPLY
print(wrappedSocket.recv(1024))
# CLOSE SOCKET CONNECTION
wrappedSocket.close()
这是客户端代码:
#/usr/bin/python3
import socket
import ssl
HOST, PORT = '127.0.0.1', 12345
# CREATE SOCKE
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# WRAP SOCKET
wrappedSocket = ssl.wrap_socket(sock, ssl_version=ssl.PROTOCOL_SSLv23, ciphers="ADH-AES256-SHA")
# connect and send a message
wrappedSocket.connect((HOST, PORT))
wrappedSocket.send(b"Hello")
wrappedSocket.close()
这是我在服务器端遇到的错误:
Traceback(最近一次调用最后一次):
文件“server.py”,第 18 行,在
wrappedSocket = ssl.wrap_socket(client, server_side=True, ssl_version=ssl.PROTOCOL_SSLv23, ciphers="ADH-AES256-SHA")
文件“/usr/lib/python3.4/ssl.py”,第 890 行,在 wrap_socket 密码=密码)
文件“/usr/lib/python3.4/ssl.py”,第 509 行,在 init 中 raise ValueError("必须为服务器端指定证书文件"
ValueError:必须为服务器端操作指定证书文件
拜托,我不想要复杂的 SSL 连接,我只是在寻找最简单的方法来加密客户端和服务器之间的数据,就像 ncat 使用 --ssl 选项 (ncat --ssl -l -p 12345来自服务器端,ncat --ssl 127.0.0.1 12345 来自客户端)。
PS:我使用的是 Ubuntu 15.10 和 Python 3。
【问题讨论】:
标签: linux python-3.x ssl server