繁体   English   中英

来自文档的Python SSL示例给出“对等重置连接”错误

[英]Python SSL example from docs gives “Connection reset by peer” error

我试图在此处运行ssl模块的文档中提供的示例代码: http : //docs.python.org/2/library/ssl.html#client-side-operation

服务器端代码与文档中给出的示例相似,并且抛出此异常:

Traceback (most recent call last):
  File "serve.py", line 16, in <module>
    ssl_version=ssl.PROTOCOL_TLSv1)
  File "/usr/lib/python2.7/ssl.py", line 381, in wrap_socket
    ciphers=ciphers)
  File "/usr/lib/python2.7/ssl.py", line 143, in __init__
    self.do_handshake()
  File "/usr/lib/python2.7/ssl.py", line 305, in do_handshake
    self._sslobj.do_handshake()
socket.error: [Errno 104] Connection reset by peer

客户端代码(也类似于文档中的示例)抛出此异常:

Traceback (most recent call last):
  File "client.py", line 8, in <module>
    ssl_sock.connect((host, port))
  File "/usr/lib/python2.7/ssl.py", line 331, in connect
    self._real_connect(addr, False)
  File "/usr/lib/python2.7/ssl.py", line 324, in _real_connect
    raise e
socket.error: [Errno 104] Connection reset by peer

据我所知,我已经非常接近地复制了文档中提供的示例,所以我不知道问题出在哪里。 我所有的TCP,UDP和ICMP端口都是开放的,因此我认为这不是防火墙问题。

(为了简化起见,我已经编辑了这个问题,以简化我的代码,因为它确实与链接中提供的示例非常相似。如果要查看我的代码,请查看此问题的历史记录。)

我发现了问题。 我使用如下命令生成了私钥和证书:

$ openssl req -new -x509 -days 365 -nodes -out cert.pem -keyout key.pem
Generating a 1024 bit RSA private key
# ...
Country Name (2 letter code) [AU]:US
State or Province Name (full name) [Some-State]:MyState
Locality Name (eg, city) []:Some City
Organization Name (eg, company) [Internet Widgits Pty Ltd]:My Organization, Inc.
Organizational Unit Name (eg, section) []:My Group
Common Name (eg, YOUR name) []:myserver.mygroup.myorganization.com
Email Address []:ops@myserver.mygroup.myorganization.com
$

关键部分是输入的“公用名”必须与服务器的域名匹配。 我以为当cacertsssl.CERT_NONE时(默认情况下是wrap_socket ,将不会进行检查,但是我错了。 它总是被检查。 一晚的睡眠,这是我想到验证的第一件事!

希望这对收到此错误消息的其他人有用。

如果这不能解决问题,则可能是您在进行深度数据包检查 当我在大学网络上,但在其他任何网络上都没有时,我再次遇到此错误,我可以肯定这是由于深度数据包检查所致。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM