Python fordert SSL-Fehler mit kombinierter .pem-Datei an

Ich habe einen internen Server / api, der von einem internen Sub ca signiert wurde, der von der Wurzel signiert wurde. In meinen Browsern wird die Seite vertrauenswürdig und überprüft, weil die Wurzel ca und sub ca certs importiert wurden. Ich kann auch die Signierkette für den Webserver überprüfen.

Ich benutze Python-Anfragen Bibliothek, um Anrufe an die API zu machen. Ich habe eine .pem-Datei erstellt, die die Wurzel ca und sub ca certs enthält

z.B

-----BEGIN CERTIFICATE----- snathopONSETUHO... -----END CERTIFICATE----- -----BEGIN CERTIFICATE----- snathopONSETUHO... -----END CERTIFICATE----- 

Bei der Anforderung rief ich an

r = requests.get('https://server/api', auth=(user,password), cert='/path/to/cert_bundle.pem')

Der Fehler, den ich erhalte, ist

 --------------------------------------------------------------------------- SSLError Traceback (most recent call last) <ipython-input-16-04e0aff97162> in <module>() ----> 1 r = requests.get('https://host/api/', auth=(user,password), cert='/path/to/cert_bundle.pem') /usr/lib/python2.7/site-packages/requests/api.pyc in get(url, **kwargs) 66 67 kwargs.setdefault('allow_redirects', True) ---> 68 return request('get', url, **kwargs) 69 70 /usr/lib/python2.7/site-packages/requests/api.pyc in request(method, url, **kwargs) 48 49 session = sessions.Session() ---> 50 response = session.request(method=method, url=url, **kwargs) 51 # By explicitly closing the session, we avoid leaving sockets open which 52 # can trigger a ResourceWarning in some cases, and look like a memory leak /usr/lib/python2.7/site-packages/requests/sessions.pyc in request(self, method, url, params, data, headers, cookies, files, auth, timeout, allow_redirects, proxies, hooks, stream, verify, cert, json) 462 } 463 send_kwargs.update(settings) --> 464 resp = self.send(prep, **send_kwargs) 465 466 return resp /usr/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) /usr/lib/python2.7/site-packages/requests/adapters.pyc in send(self, request, stream, timeout, verify, cert, proxies) 429 except (_SSLError, _HTTPError) as e: 430 if isinstance(e, _SSLError): --> 431 raise SSLError(e, request=request) 432 elif isinstance(e, ReadTimeoutError): 433 raise ReadTimeout(e, request=request) SSLError: [SSL] PEM lib (_ssl.c:2757) 

Irgendwelche Ideen, warum mein Zertifikat nicht validieren wird? Ich habe versucht, den Auftrag in der .pem-Datei umzukehren, falls die Bestellung wichtig ist, aber immer noch nicht meine Anforderung zur Arbeit bekommen kann.

Ich habe auch versucht mit verify=False was funktioniert aber nicht was ich will und wirft den Fehler

 /usr/lib/python2.7/site-packages/urllib3/connectionpool.py:769: InsecureRequestWarning: Unverified HTTPS request is being made. Adding certificate verification is strongly advised. See: https://urllib3.readthedocs.org/en/latest/security.html InsecureRequestWarning) 

One Solution collect form web for “Python fordert SSL-Fehler mit kombinierter .pem-Datei an”

Sieht aus wie Sie den falschen Parameter verwenden, um den Pfad zum Zertifikatsbündel zu übergeben, Ihr Code sollte lesen:

 r = requests.get('https://server/api', auth=(user,password), verify='/path/to/cert_bundle.pem') 

Der Parameter, der für die Überprüfung eines von einer CA signierten Remotezertifikats verwendet wird verify ist die verify . Wenn Sie nur verify=True dann wird es einen standardmäßigen internen Stammzertifikatspeicher verwenden, aber Sie können auch einen Pfad zu Ihrem eigenen Speicher wie in meinem Codebeispiel übergeben.

Der cert Parameter ist für die Bestätigung Ihrer eigenen Identität auf den Remote-Server, die Ihr Server vermutlich hier nicht interessiert.

  • SSL-Fehler in Twython GET
  • Hinzufügen von SSL-Unterstützung zu SocketServer
  • Ziehen Sie das Timeout mit dem Google-api-python-Client ab
  • Pip: cert fehlgeschlagen, aber curl funktioniert
  • SSLError: sslv3 Warnung Handshake Ausfall
  • HTTPS bekommen Jython
  • Wie finde ich den Weg zu einer SSL-Zertifikat?
  • Wie blockiere ich SSL-Protokolle zugunsten von TLS?
  • Select und ssl in python
  • Urlopen error [Errno 110] mit https und python 2.7 auf ubuntu 12.10
  • Extrahieren und Analysieren von HTML von einer sicheren Website mit Python?
  • Python ist die beste Programmiersprache der Welt.