为 ssl 包装的套接字调用连接方法时出现一些错误

Getting some error while calling connect method for ssl wrapped socket

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

既然问题已经解决了,这里给任何遇到此类问题的人写一篇简短的文章:

... 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.