2016-10-10 53 views
0

我使用Python 2.4.4和OpenSSL 0.9.8k(没有选择的余地)用Python创建

我已经提到的文档SSL套接字:https://docs.python.org/release/2.4.4/lib/module-socket.html

,并几乎每提在互联网上的“openSSL”和“python”,我还没有找到解决我的问题。

我只是写一个测试程序来启动SSL连接。下面是代码:

服务器

#!/usr/bin/python 
import socket 
import _ssl 

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 
s.bind(('', 4433)) 
s.listen(5) 

while True: 
    client, address = s.accept() 
    ssl_client = socket.ssl(client, 
          keyfile='keyfile', 
          certfile='certfile') 
    print "Connection: ", address 
    data = ssl_client.read(1024) 
    if data: 
    print "received data: ", data 
    ssl_client.write(data + " Hello, World!") 
    del ssl_client 
    client.close() 

客户

#!/usr/bin/python 
import socket 
import _ssl 

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 
s.connect(('host', 4433)) 
ssl_s = socket.ssl(s, 
        keyfile='keyfile', 
        certfile='certfile') 
print 'writing ', ssl_s.write("Hello, World!"), ' bytes to ssl stream' 
data = ssl_s.read(1024) 
del ssl_s 
s.close() 

print "received data: ", data 

这段代码的一些注意事项 - keyfilecertfile的路径,以我的实际密钥和证书文件。这些论点不是问题。主机名也不是问题。我知道使用的端口是4433 - 在我们的要求中,我们打算使用通用端口,而不是443.我不知道可以在不同的端口上使用SSL,但即使在我使用443我得到了完全相同的错误。

我可以运行服务器的罚款,然后当我运行客户端,我得到了wrap_socket线为客户端和服务器的以下错误:

error:140770FC:SSL routines:SSL23_GET_SERVER_HELLO:unknown protocol

我读过这是由于使用非443端口,但再次使用443端口并没有解决问题。我读过它可能是协议不匹配,但客户端和服务器都默认为SSL2.3。我们打算按照我们的要求使用TLS1.2,但文档似乎没有关于如何设置SSL协议版本的任何信息。我不确定这是否与我的问题有关。请记住,我不是在这里打开关于使用过时的SSL和Python版本的对话。

回答

1

socket.ssl只能够启动SSL连接,并且给定的可选证书和密钥用于使用客户端证书。 socket.ssl无法在服务器端使用,它看起来像Python 2.4.4在任何核心模块中都没有提供此功能。在后来的python版本中,你可以使用ssl模块,但是2.4.4似乎没有这个功能。

+0

不幸听到,但我想这只是从2.4.4升级更多的杠杆作用。谢谢。 – Lighthat