Ich habe versucht, eine SSL-Verbindung zu einem LDAPS-Server (Active Directory) herzustellen, habe aber weiterhin Probleme. Ich habe versucht, dies zu verwenden:
openssl s_client -connect the.server.edu:3269
Mit folgendem Ergebnis:
verify error:num=20:unable to get local issuer certificate
Ich dachte, OK, der Server ist ein alter Produktionsserver, der ein paar Jahre alt ist. Vielleicht ist die CA nicht vorhanden. Ich habe dann das Zertifikat von der Ausgabe in eine PEM-Datei gezogen und versucht:
openssl s_client -CAfile mycert.pem -connect the.server.edu:3269
Und das hat auch nicht funktioniert.
Was vermisse ich? Sollte das nicht IMMER funktionieren?
ldap.set_option(ldap.OPT_X_TLS_CACERTFILE,'./ca_issuer_cert.pem')
Danach konnte ich STARTTLS (innerhalb von LDAP-Port 389) wie erwartet verwenden.Antworten:
Das sehe ich also als CA-Zertifikatsnamen:
Das war der Name des Zertifikats, das ich importiert hatte, nachdem ich die Showshows in meinem zweiten Versuch oben gemacht hatte. Ich habe die Zertifikate im Keystore folgendermaßen aufgelistet:
Ich sehe dort das CA-Zertifikat.
Um sicherzustellen, dass openssl den Keystore verwendet, den ich mit dem Server verwende, verwende ich das Argument -CAfile:
Da ich wusste, dass der Java-Keystore für Zertifizierungsstellen ein Kennwort hat, habe ich versucht, die Option -pass pass: password wie folgt zu verwenden:
aber das hat auch nicht funktioniert.
Das Lustige daran ist, dass die Cacerts-Datei ein Passwort enthält und openssl sich nicht darüber beschwert, dass die Cacerts-Datei nicht gelesen werden kann. Das kommt mir faul vor. Läutet das oder irgendetwas anderes eine Glocke?
quelle
Dieser Fehler lautet: "Ich kann der Zertifikatkette nicht zu einem vertrauenswürdigen Stamm folgen". Ich habe gerade den gleichen Befehl für meine eigenen AD-Server ausgeführt und erhalte eine vollständige Zertifikatskette, aber das oberste Zertifikat weist genau diesen Fehler auf. Wenn Sie den Pub-Schlüssel der Zertifizierungsstelle haben, die das Zertifikat signiert hat, können Sie ihn mit den Optionen
-CAfile
oder angeben-CApath
quelle
Wenn Sie OpenLDAP verwenden, können Sie Folgendes festlegen:
in Ihrer
openldap.conf
Datei, die OpenLDAP anweist, keine Zertifikatüberprüfung zu versuchen. Es gibt eine ähnliche Option, wenn Sie eine LDAP-Authentifizierung mit Apache durchführen.Wenn Sie wirklich eine Zertifikatsüberprüfung durchführen möchten, kann Folgendes hilfreich sein:
Das glaube ich nicht. Während das Folgende definitiv klingt, ist es wirklich nur mein bester Gast:
Was Sie versucht haben, funktioniert nur für ein selbstsigniertes Zertifikat. Da das Zertifikat tatsächlich von der Windows-Zertifizierungsstelle ausgestellt wurde, erhalten Sie beim Versuch, das Serverzertifikat als Argument zu verwenden
-CAfile
, nichts.Nicht unbedingt, nein. Es gibt keine Garantie dafür, dass der Remote-Server das CA-Zertifikat in seiner Ausgabe präsentiert. Sie müssen sich zuerst den Aussteller des Serverzertifikats ansehen:
... und dann prüfen, ob eines der anderen Zertifikate, die Sie haben, mit diesem Aussteller übereinstimmt.
quelle