2015-09-20 13 views
0

我的ssl服务器和客户端代码在Windows机器上工作正常。然而,当我尝试执行Ubuntu的机器相同的代码,然后我得到了一些错误,而在客户端以下行代码的执行:在调用ssl包装套接字的connect方法时出现一些错误

sslconnection.connect((host,port)) 

所有的代码文件和证书文件在同一文件夹中存在。

File "clientsideCode.py", line 24, in <module> 
    sslConnection.connect((host,port)) 
    File "/usr/lib/python2.7/ssl.py", line 433, in connect 
    self._real_connect(addr, False) 
    File "/usr/lib/python2.7/ssl.py", line 414, in _real_connect 
    self.ca_certs, self.ciphers) 
ssl.SSLError: [Errno 0] _ssl.c:344: error:00000000:lib(0):func(0):reason(0) 

代码我使用的包装用SSL套接字:

sslconnection = ssl.wrap_socket(clientsocket,cert_reqs=ssl.CERT_REQUIRED,ca_certs="server.crt") 
+0

是Ubuntu 2.7.9+上的Python版本吗? –

+0

Python版本2.7。我想,我有最新版本的ubuntu – User1551892

+0

虽然小版本是什么?如果在控制台中键入Python并启动REPL,则完整版本号是什么。 2.7.9中的SSL处理发生了变化,Ubuntu并不总是让你拥有最新版本即。 Ubuntu12.04附带了Python 2.7.3,并且与之挂钩。 –

回答

1

由于这个问题现在已经解决了此短写了任何人绊倒这种类型的问题:

... ssl.wrap_socket(clientsocket,cert_reqs=ssl.CERT_REQUIRED... 

这造成了最初的问题,因为CERT_REQUIRED是服务器端的选项(要求客户端证书),并且只会在客户端使用错误时引发问题。

但毕竟这是解决的另一个问题弹出:

... EOF occurred in violation of protocol

这意味着服务器关闭握手期间的连接。当协议或密码不匹配或者服务器安装错误时,通常会出现此错误。通过查看服务器端的错误消息,可以获得更多信息。这显然是后一种情况,即错误的设置:

There was problem with certificate or key. However, I copied again from windows machine to linux then everything worked smoothly.

相关问题