我正在尝试在Python中建立一个安全的套接字连接,但SSL部分让我很苦恼。我找到了一些代码示例,介绍如何使用SSL建立连接,但它们都涉及到密钥文件。我要连接的服务器不需要接收任何密钥或证书。我的问题是,如何基本上用SSL包装Python套接字连接。我知道我应该使用的密码是ADH-AES256-SHA
,协议是TLSv1
。这就是我一直在尝试的:
import socket
import ssl
# SET VARIABLES
packet, reply = "<packet>SOME_DATA</packet>", ""
HOST, PORT = 'XX.XX.XX.XX', 4434
# CREATE SOCKET
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.settimeout(10)
# WRAP SOCKET ???
ssl.wrap_socket(sock, ssl_version="TLSv1", ciphers="ADH-AES256-SHA")
# CONNECT AND PRINT REPLY
sock.connect((HOST, PORT))
sock.send(packet)
print sock.recv(1280)
# CLOSE SOCKET CONNECTION
sock.close()
当我运行这段代码时,没有出现任何错误,但是我得到了一个空白响应。 在尝试在命令行中调试此代码时,通过在终端中键入python
并逐行粘贴代码,当运行sock.send(packet)
时,获取的是一个整数响应码,我认为它是状态码。 我得到的整数响应是26
。 如果有人知道这是什么意思,或者能以任何方式提供帮助,将不胜感激。
ssl.SSLError: [SSL: SSLV3_ALERT_HANDSHAKE_FAILURE] sslv3 alert handshake failure
。有什么想法吗? - KostanosADH-AES256-SHA
替换为AES256-SHA
。如果这样仍然无法解决问题,请尝试使用TLSv1.2
和AES256-SHA256
。很可能是服务器不支持该加密方式或协议。 - Rahul Bharadwaj