0

由于 2 天前Pushbullet Kodi 插件停止工作,抛出此错误:

EOF 发生违反协议 (_ssl.c:590)

GET 是通过 httplib2 生成的,您可以在那里看到简单的代码。

奇怪的是,也使用 openssl cli 我得到错误:

$ openssl s_client -connect api.pushbullet.com:443              
CONNECTED(00000003)
140625036449432:error:140790E5:SSL routines:ssl23_write:ssl handshake failure:s23_lib.c:177:
---
no peer certificate available
---
No client certificate CA names sent
---
SSL handshake has read 0 bytes and written 307 bytes
---
New, (NONE), Cipher is (NONE)
Secure Renegotiation IS NOT supported
Compression: NONE
Expansion: NONE
No ALPN negotiated
SSL-Session:
    Protocol  : TLSv1.2
    Cipher    : 0000
    Session-ID: 
    Session-ID-ctx: 
    Master-Key: 
    Key-Arg   : None
    PSK identity: None
    PSK identity hint: None
    SRP username: None
    Start Time: 1481297548
    Timeout   : 300 (sec)
    Verify return code: 0 (ok)
---

信息:

$ openssl version
OpenSSL 1.0.2j  26 Sep 2016
$ uname -a
Linux meanmachine 4.8.11-1-ARCH #1 SMP PREEMPT Sun Nov 27 09:26:14 CET 2016 x86_64 GNU/Linux

感谢您的任何建议!

编辑:

在 Python2.7 上引发错误的代码:

import httplib2
h = httplib2.Http()
h.request('https://api.pushbullet.com/v2/devices', method='GET')

回溯(最近一次通话最后):

 File "<stdin>", line 1, in <module>
  File "/usr/lib/python2.7/site-packages/httplib2/__init__.py", line 1609, in request
    (response, content) = self._request(conn, authority, uri, request_uri, method, body, headers, redirections, cachekey)
  File "/usr/lib/python2.7/site-packages/httplib2/__init__.py", line 1351, in _request
    (response, content) = self._conn_request(conn, request_uri, method, body, headers)
  File "/usr/lib/python2.7/site-packages/httplib2/__init__.py", line 1272, in _conn_request
    conn.connect()
  File "/usr/lib/python2.7/site-packages/httplib2/__init__.py", line 1036, in connect
    self.disable_ssl_certificate_validation, self.ca_certs)
  File "/usr/lib/python2.7/site-packages/httplib2/__init__.py", line 80, in _ssl_wrap_socket
    cert_reqs=cert_reqs, ca_certs=ca_certs)
  File "/usr/lib/python2.7/ssl.py", line 933, in wrap_socket
    ciphers=ciphers)
  File "/usr/lib/python2.7/ssl.py", line 601, in __init__
    self.do_handshake()
  File "/usr/lib/python2.7/ssl.py", line 830, in do_handshake
    self._sslobj.do_handshake()
ssl.SSLEOFError: EOF occurred in violation of protocol (_ssl.c:590)

ps 在 python3.5 上就像一个魅力

4

2 回答 2

2

我已经解决了通过httplib2切换到请求python lib 的问题。

并安装:

python2.7 -m pip install pyopenssl pyasn1 ndg-httpsclient
于 2016-12-11T10:10:38.157 回答
0

在 OS X 上,这解决了我的问题。

sudo -H pip install requests[security] --upgrade --ignore-installed six

于 2017-02-08T21:56:13.607 回答