SSLError: schlechter Handshake, Python-Anfragen

Ich verbrauche Ebay Trading APIs using Ebay Python SDK das ist schließlich singen Python-Anfragen für API-Aufrufe.

All hat gut funktioniert, aber seit einigen Tagen kann ich keinen Anruf mehr tätigen. Ich erhalte die Fehlermeldung:

SSLError: bad handshake: Error([('SSL routines', 'SSL3_GET_SERVER_CERTIFICATE', 'certificate verify failed')],)

Hier ist die vollständige Rückverfolgung:

In [9]: response = api.execute('GetSessionID', data)
---------------------------------------------------------------------------
SSLError                                  Traceback (most recent call last)
<ipython-input-9-eb33610c2a7f> in <module>()
----> 1 response = api.execute('GetSessionID', data)

/home/debian/.virtualenvs/myvirtualenv/local/lib/python2.7/site-packages/ebaysdk/connection.pyc in execute(self, verb, data, list_nodes, verb_attrs, files)
    117
    118         self.build_request(verb, data, verb_attrs, files)
--> 119         self.execute_request()
    120
    121         if hasattr(self.response, 'content'):

/home/debian/.virtualenvs/goplaces/local/lib/python2.7/site-packages/ebaysdk/connection.pyc in execute_request(self)
    182             proxies=self.proxies,
    183             timeout=self.timeout,
--> 184             allow_redirects=True
    185         )
    186

/home/debian/.virtualenvs/myvirtualenv/local/lib/python2.7/site-packages/requests/sessions.pyc in send(self, request, **kwargs)
    574
    575         # Send the request
--> 576         r = adapter.send(request, **kwargs)
    577
    578         # Total elapsed time of the request (approximately)

/home/debian/.virtualenvs/myvirtualenv/local/lib/python2.7/site-packages/requests/adapters.pyc in send(self, request, stream, timeout, verify, cert, proxies)
    431         except (_SSLError, _HTTPError) as e:
    432             if isinstance(e, _SSLError):
--> 433                 raise SSLError(e, request=request)
    434             elif isinstance(e, ReadTimeoutError):
    435                 raise ReadTimeout(e, request=request)

SSLError: bad handshake: Error([('SSL routines', 'SSL3_GET_SERVER_CERTIFICATE', 'certificate verify failed')],)

Es gibt viele verwandte Fragen zu StackOverflow, die lauten:

pass argument verify = False CA-Zertifikat übergebenügen Sie Ihr CA-Zertifikat in @ hinz cacert.pem file (Ich habe es versucht, hat nicht funktioniert)

Ich kann das nicht, weil:

requests wird von einer Drittanbieter-Bibliothek aufgerufen, die sich in meiner virtuellen Umgebung befindet.Dies ist aus Sicherheitsgründen schlecht.

Ebenfalls

Ich bin in der Lage, andere TSL-Aufrufe (z. B. Amazon Marketplace Apis) in derselben virtuellen Umgebung mithilfe von Anforderungen durchzuführen, die keinen schlechten Handshake oder andere SSL-Fehler verursachen. Ebay SDK funktioniert einwandfrei auf meinem lokalen System (Mac OsX), das Problem tritt nur auf meinem Produktionsserver (Google Cloud / Debian) auf. Es wurden keine SSL-Fehler von Chrome auf meiner Domain gemeldet.

ch habe keine Ahnung, warum das passier

WarumSSL routines', 'SSL3_GET_SERVER_CERTIFICATE', 'certificate verify failed' ist im Traceback, wenn ich SSL3 deaktiviert habe. (Ich habe keine tiefen Kenntnisse über SSL).

Vielen Dank

Bearbeiten
# openssl version
OpenSSL 1.0.2e 3 Dec 2015

Upgrade auf openssl 1.0.2 von 1.0.1 durch Erzeugen aus dem Quellcode nach @Steffen Ullrichs Vorschlag.

$ pip freeze | grep -i ssl
backports.ssl-match-hostname==3.4.0.2
pyOpenSSL==0.15.1

Antworten auf die Frage(4)

Ihre Antwort auf die Frage