调用ssl包装套接字的connect方法时出错

时间:2015-09-20 12:55:20

标签: python-2.7 ssl ssl-certificate

我的ssl服务器和客户端代码在Windows机器上运行正常。但是,当我尝试在Ubuntu机器上执行相同的代码时,我在客户端执行以下行代码时遇到了一些错误:

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")

1 个答案:

答案 0 :(得分:1)

由于这个问题现在已经解决,所以任何人都会在这类问题上磕磕绊绊:

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

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

但是在解决了这个问题之后又出现了另一个问题:

  

...... EOF违反协议

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

  

证书或密钥有问题。但是,我再次从Windows机器复制到linux,然后一切顺利。