Pushbullet и EOF произошли с нарушением протокола (_ssl.c:590)

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

Traceback (последний последний вызов):

 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)

p.s. работает как шарм на python3.5


person elbowz    schedule 09.12.2016    source источник
comment
Покажите соответствующий код и укажите код ошибки, когда она возникает. Мы ничего не можем сказать о вашем коде из внешних команд, которые вы запускаете.   -  person jww    schedule 09.12.2016
comment
@jww извините... я добавил кое-какую информацию. На моем компьютере тот же код хорошо работает с Python v3.5.2... не с 2.7.12.   -  person elbowz    schedule 10.12.2016


Ответы (2)


Я решил переключение с помощью httplib2 на requests python lib.

и установить:

python2.7 -m pip install pyopenssl pyasn1 ndg-httpsclient
person elbowz    schedule 11.12.2016
comment
Сработало для меня +1! - person Maghoumi; 30.12.2016
comment
У меня работало на Ubuntu 14.04. - person Duke; 28.02.2017

В OS X это решило мою проблему.

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

person H. U.    schedule 08.02.2017