Requests: Zertifikat installiert, REQUESTS_CA_BUNDLE env var gesetzt, immer noch SSL-Fehler.

Erstellt am 25. Juli 2013  ·  10Kommentare  ·  Quelle: psf/requests

Ich verwende das Jenkinsapi-Modul, das Anfragen unter der Haube verwendet. Wenn ich versuche, es sofort zu verwenden und es auf einen Jenkins-Server zeige, der SSL verwendet, erhalte ich:

SSLError: [Errno 1] _ssl.c:504: error:14090086 :SSL- Routinen:SSL3_GET_SERVER_CERTIFICATE :Zertifikatsüberprüfung fehlgeschlagen

jenkinsapi bietet keinen Hook zum Setzen von verify=False. Ich habe versucht, das Zertifikat vom Jenkins-Server zu speichern und die Umgebungsvariable REQUESTS_CA_BUNDLE so einzustellen, dass sie darauf verweist, und habe immer noch den gleichen Fehler erhalten. Ich habe auch versucht, certifi zu installieren, aber es macht keinen Unterschied.

Ich weiß, dass ich den Jenkinsapi-Code hacken könnte, aber das ist nicht zufriedenstellend, da alle Benutzer meines Codes dasselbe tun müssten. Übersehe ich etwas?

Hilfreichster Kommentar

Ich bin auf das gleiche Problem gestoßen und das Problem mit der SSL-Zertifikatsüberprüfung ist fehlgeschlagen. Bei der Überprüfung des Boto3-Codes habe ich festgestellt, dass REQUESTS_CA_BUNDLE nicht festgelegt ist, also habe ich beide Probleme behoben, indem ich sie manuell eingestellt habe:

from boto3.session import Session
import os

# debian
os.environ['REQUESTS_CA_BUNDLE'] = os.path.join(
    '/etc/ssl/certs/',
    'ca-certificates.crt')
# centos
#   'ca-bundle.crt')

Für aws-cli denke ich, dass das Setzen von REQUESTS_CA_BUNDLE in ~/.bashrc dieses Problem behebt (nicht getestet, da mein aws-cli ohne es funktioniert)

REQUESTS_CA_BUNDLE=/etc/ssl/certs/ca-certificates.crt # ca-bundle.crt
export REQUESTS_CA_BUNDLE

Alle 10 Kommentare

Können Sie mir bitte zeigen, wie das gespeicherte Zertifikat aussah? Sollte möglich sein, es einfach hier einzufügen.

Danke für die Antwort. Ich habe das Zertifikat erneut gespeichert und die Dinge funktionieren jetzt.

Verdammt! Ich habe zu früh gesprochen. Hier ist das Zertifikat:

-----ZERTIFIKAT BEGINNEN-----
MIIGQDCCBSigAwIBAgIKWQnHpQAAAAAIzjANBgkqhkiG9w0BAQUFADBZMRMwEQYK
CZImiZPyLGQBGRYDY29tMRQwEgYKCZImiZPyLGQBGRYEZWJheTEUMBIGCgmSJomT
8ixkARkWBGNvcnAxFjAUBgNVBAMTDUFNRVItU1NMQ0EtMDIwHhcNMTIxMTE4MDUz
MTA4WhcNMTQxMTE4MDUzMTA4WjB1MQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2Fs
aWZvcm5pYTERMA8GA1UEBxMIU2FuIEpvc2UxFDASBgNVBAoTC1BheVBhbCBJbmMu
MQwwCgYDVQQLEwNDRUkxGjAYBgNVBAMTEWZ1c2lvbi5wYXlwYWwuY29tMIIBIjAN
BgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAwOZj4ezQ/k5vTU6E63uNsP+LZjeg
4kTEUwSzFsRj3NImQdfOrQ7W7S386ep2EZZqmjevO6HBzkaXaYYQ0GSqthdspd53
A8GnLi0q43oFy+kyAc2ItAM0SH/GOt0J+5EUdS12S821WMiwebHInSHINAjexAHN
Sm87yXCyO8mZ3Jzc3+PFraveF9WFmE0NLZUDpEMxq17K3/6iGLsVO/YZkUpaAXNJ
962fGrIZ4xcvK//S903ehloKwQnRCgtNoGCmvsoDftbYye6LfRh/rH3xWFXIUmWG
Wib27ZwAgbyxz2FPcexie4FB/IzbH2l9Tp5rzGWfs1159VmVhQ/L3EJIDQIDAQAB
o4IC7DCCAugwHQYDVR0OBBYEFMkZJD5QaahE21k37UvPIP1VmZ1SMB8GA1UdIwQY
MBaAFLI24M3s4ViBTJbTf1lWAEsUzehVMIIBDQYDVR0fBIIBBDCCAQAwgf2ggfqg
gfeGgb9sZGFwOi8vL0NOPUFNRVItU1NMQ0EtMDIsQ049QU1FUi1TU0xDQS0wMixD
Tj1DRFAsQ049UHVibGljJTIwS2V5JTIwU2VydmljZXMsQ049U2VydmljZXMsQ049
Q29uZmlndXJhdGlvbixEQz1jb3JwLERDPWViYXksREM9Y29tP2NlcnRpZmljYXRl
UmV2b2NhdGlvbkxpc3Q/YmFzZT9vYmplY3RDbGFzcz1jUkxEaXN0cmlidXRpb25Q
b2ludIYzaHR0cDovL3BraS5jb3JwLmViYXkuY29tL0NlcnREYXRhL0FNRVItU1NM
Q0EtMDIuY3JsMIIBTgYIKwYBBQUHAQEEggFAMIIBPDCBsQYIKwYBBQUHMAKGgaRs
ZGFwOi8vL0NOPUFNRVItU1NMQ0EtMDIsQ049QUlBLENOPVB1YmxpYyUyMEtleSUy
MFNlcnZpY2VzLENOPVNlcnZpY2VzLENOPUNvbmZpZ3VyYXRpb24sREM9Y29ycCxE
Qz1lYmF5LERDPWNvbT9jQUNlcnRpZmljYXRlP2Jhc2U/b2JqZWN0Q2xhc3M9Y2Vy
dGlmaWNhdGlvbkF1dGhvcml0eTBbBggrBgEFBQcwAoZPaHR0cDovL3BraS5jb3Jw
LmViYXkuY29tL0NlcnREYXRhL0FNRVItU1NMQ0EtMDIuY29ycC5lYmF5LmNvbV9B
TUVSLVNTTENBLTAyLmNydDApBggrBgEFBQcwAYYdaHR0cDovL3BraS5jb3JwLmVi
YXkuY29tL29jc3AwIQYJKwYBBAGCNxQCBBQeEgBXAGUAYgBTAGUAcgB2AGUacjAL
BgNVHQ8EBAMCBaAwEwYDVR0lBAwwCgYIKwYBBQUHAwEwDQYJKoZIhvcNAQEFBQAD
ggEBAFj5s9SdtRpXLz03BjPFsDvQPzoyML9ngHL5zyYMlotUpD7d+aO41Q2E2+LO
REfbd3NAnLT3MfWMHAxNaZ4TRUog1fFJmLJxHTBax5fpmY8YAhiPjQIO+IZOUZO3
4lAwXKsq4ylWS2tlbxL56mPngN2EzLisWgIZqJSx9zd1K/LvKyvs/R3wxBerhTN5
LyHFf9/ByUhaqgIE8jydM4qiS8o3zxjrPAIbi6lnZjktkguYTSAKDoHb17BkNoPr
mU1xDtD1/FuX22dfHpqmJSYVubPVfUTvGB3julT2GNNREoHsQI7wmgFBEMaTdvJq
42DUnHIK0pdMzb2urxL/toZ3mHY=
-----ENDE ZERTIFIKAT-----

Traceback (letzter Anruf zuletzt):
Datei "goals.py", Zeile 3, in
J = api.Jenkins('https://fusion.[ANONYMISIERT].com/jenkins/')
Datei "C:\python27\lib\site-packages\jenkinsapi\jenkins.py", Zeile 35, in init
JenkinsBase. init (selbst, baseurl)
Datei "C:\python27\lib\site-packages\jenkinsapi\jenkinsbase.py", Zeile 27, in init
selbst.umfrage()
Datei "C:\python27\lib\site-packages\jenkinsapi\jenkinsbase.py", Zeile 49, in Umfrage
self._data = self._poll()
Datei "C:\python27\lib\site-packages\jenkinsapi\jenkinsbase.py", Zeile 53, in _poll
Rückgabe self.get_data(url)
Datei "C:\python27\lib\site-packages\jenkinsapi\jenkinsbase.py", Zeile 57, in get_data
Antwort = requester.get_url(url)
Datei "C:\python27\lib\site-packages\jenkinsapi\utils\requester.py", Zeile 59, in get_url
return request.get (url,








Datei "C:\python27\lib\site-packages\requests\adapters.py", Zeile 331, in send
SSLError(e) auslösen
Requests.Exceptions.SSLError: [Errno 1] _ssl.c:504: error:14090086 :SSL- Routinen:SSL3_GET_SERVER_CERTIFICATE :Zertifikatsüberprüfung fehlgeschlagen

Könnten Sie versuchen, eine Verbindung über Anfragen direkt herzustellen, ohne Jenkinsapi zu durchlaufen, aber während Sie das Zertifikat übergeben, das Sie an Anfragen speichern.

r=requests.get(url,verify=certfile)

SSLError: [Errno 1] _ssl.c:504: error:14090086 :SSL- Routinen:SSL3_GET_SERVER_CERTIFICATE :Zertifikatsüberprüfung fehlgeschlagen

r=requests.get(url,cert=certfile)

SSLError: [Errno 336265225] _ssl.c:351: error:140B0009 :SSL routines :

Bedeutet das, dass ich den privaten Schlüssel haben soll? Ich bezweifle, dass die Serverbesitzer es mir geben werden.

Entschuldigung, ignorieren Sie den zweiten Teil - ich habe herausgefunden, dass es bei der Angabe von "cert" darum geht, sich selbst beim Server zu authentifizieren, was hier nicht das Problem ist.

Jetzt wissen wir, dass das Problem beim Zertifikat liegt :-)
Angenommen, das Zertifikat stammt von der Zertifizierungsstelle und nicht vom Server selbst: Ist die Schubkette vollständig?
Sie sollten diese Kette in Ihrem Browser sehen, in den Sie das Zertifikat exportiert haben.
Um eine Zertifikatsanforderung zu verifizieren, benötigt man eine komplette Kette. Das letzte Element wird vom Server gesendet, ich gehe davon aus, dass Sie nur das Root-Zertifikat in einer Datei gespeichert haben.
Sie benötigen weiterhin alle Zertifikate zwischen der Wurzel und dem Blatt. Diese können entweder vom Server zusammen mit dem Blattzertifikat gesendet werden oder Sie sollten sie der Zertifikatsdatei hinzufügen können.

Danke - endlich funktioniert es! Zusammenfassend, falls dies für jemand anderen hilfreich ist: Ich musste jedes Zertifikat in der Kette vom Server selbst zum Root exportieren, jedes im base64-Format speichern, dann alle Zertifikate in eine einzelne Datei kopieren und die Umgebung einstellen Variable REQUESTS_CA_BUNDLE, um darauf zu verweisen.

Danke nochmal für deine Hilfe!

Für andere Google-Mitarbeiter: Sie können die SSL-Überprüfung in jenkinsapi deaktivieren, indem Sie:

from jenkinsapi.jenkins import Jenkins
from jenkinsapi.utils.requester import Requester

j = Jenkins(base_url, requester=Requester(username, password, baseurl=base_url, ssl_verify=False))

Ich bin auf das gleiche Problem gestoßen und das Problem mit der SSL-Zertifikatsüberprüfung ist fehlgeschlagen. Bei der Überprüfung des Boto3-Codes habe ich festgestellt, dass REQUESTS_CA_BUNDLE nicht festgelegt ist, also habe ich beide Probleme behoben, indem ich sie manuell eingestellt habe:

from boto3.session import Session
import os

# debian
os.environ['REQUESTS_CA_BUNDLE'] = os.path.join(
    '/etc/ssl/certs/',
    'ca-certificates.crt')
# centos
#   'ca-bundle.crt')

Für aws-cli denke ich, dass das Setzen von REQUESTS_CA_BUNDLE in ~/.bashrc dieses Problem behebt (nicht getestet, da mein aws-cli ohne es funktioniert)

REQUESTS_CA_BUNDLE=/etc/ssl/certs/ca-certificates.crt # ca-bundle.crt
export REQUESTS_CA_BUNDLE
War diese Seite hilfreich?
0 / 5 - 0 Bewertungen