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