NetWorker: Die LDAPS-Integration schlägt fehl mit "An SSL handshake error occurred while attempting to connect to LDAPS server: Unable to find valid certification path to requested target"
Summary: Sie versuchen, den authc_config-Befehl/das Skript zum Hinzufügen der externen AD-/LDAPS-Authentifizierung mit NetWorker auszuführen. Ihr LDAPS-CA-Zertifikat wurde in den JAVA-Cacerts-Keystore importiert, aber es wird die Fehlermeldung "An SSL handshake error occurred while attempting to connect to LDAPS server: unable to find valid certification path to requested target" angezeigt. ...
Symptoms
"Ein SSL-Handshake-Fehler ist beim Versuch, eine Verbindung zum LDAPS-Server herzustellen: unable to find valid certification path to requested target" (Beim Versuch, eine Verbindung zum LDAPS-Server herzustellen, aufgetreten: unable to find valid certification path to requested target)
- Sie versuchen, den authc_config Befehl/das Skript zum Hinzufügen einer externen AD-/LDAPS-Authentifizierung mit NetWorker auszuführen.
- Sie können AD/LDAP (Nicht-SSL) erfolgreich in NetWorker integrieren. Das Problem tritt nur bei der Integration von SSL (LDAPS) auf.
- Ihr LDAPS-CA-Zertifikat wurde in den JAVA-Cacerts-Keystore importiert.
- Sie verwenden eine "Zertifikatkette" in Ihrer Umgebung.
Cause
Dieses Problem tritt auf, weil nur das Kettenzertifikat in den Java Trust Keystore importiert wurde. Für eine Zertifikatkette sollten alle Zertifikate in der Kette ordnungsgemäß in den Java-Keystore in der richtigen Kettenreihenfolge (untere Kette zu Stammzertifikat) importiert werden. Jedes Problem beim Importieren des Zertifikats würde zu einem Fehler bei der Zertifikatsüberprüfung führen.
Dies wird identifiziert, wenn Sie den Befehl openssl von Ihrem NetWorker-Server zum LDAPS-Server ausführen:
OPENSSL_INSTALL_PATH\bin> openssl s_client -showcerts -connect ldaps-server.lab.emc.local:636 CONNECTED(00000124) depth=1 DC = LOCAL, DC = EMC, DC = LAB, CN = LDAPS-SERVER --- Certificate chain 0 s:/CN=LDAPS-SERVER.LAB.EMC.LOCAL i:/DC=LOCAL/DC=EMC/DC=LAB/CN=ROOTCA-SERVER -----BEGIN CERTIFICATE----- << removed for brevity >> -----END CERTIFICATE----- 1 s:/DC=LOCAL/DC=EMC/DC=LAB/CN=ROOTCA-SERVER i:/CN=ROOTCA-SERVER -----BEGIN CERTIFICATE----- << removed for brevity >> -----END CERTIFICATE-----
Resolution
Gehen Sie wie folgt vor, um den Zertifikatfehler zu beheben:
1. Entfernen Sie alle zuvor importierten Zertifikate aus dem Java Cacerts Trust Keystore.
Die Prozesse in diesem Wissensdatenbank-Artikel nutzen den Java keytool-Befehl . Es kann erforderlich sein, das Verzeichnis (cd) in das Java-Bin-Verzeichnis zu ändern. Je nach Java-Installation und Betriebssystem kann dies variieren. Der Keytool-Befehl befindet sich im Verzeichnis "java installations bin". Die meisten NetWorker-Implementierungen verwenden netWorker Runtime Environment (NRE) für Java.
- Linux: /opt/nre/java/latest/bin
- Windows: C:\Program Files\NRE\java\jre#.#.#_###\bin
JAVA_INSTALL_PATH\bin> keytool -list -keystore "JAVA_INSTALL_PATH\lib\security\cacerts" -storepass changeit | findstr LDAPS-SERVER
ldaps-server, DATE-IMPORTED, trustedCertEntry,
JAVA_INSTALL_PATH\bin> keytool -list -keystore "JAVA_INSTALL_PATH\lib\security\cacerts" -storepass changeit | findstr ROOTCA-SERVER
rootca-server, DATE-IMPORTED, trustedCertEntry,
- LDAPS-SERVER und ROOTCA-SERVER sind nur Beispiele. Sie müssen diese Werte durch Aliasnamen ersetzen, die Ihrem LDAPS-Server und Root-CA-Server entsprechen (in der Regel wird der Hostname verwendet).
- Selbst wenn die Zertifikate nicht angezeigt werden, wenn findstr/grep verwendet wird. Überprüfen Siedie Ausgabe, ohne die Ergebnisse einzugrenzen, um zu bestätigen, dass keine Aliase für Ihren LDAPS-Server UND/ODER Ihren Stamm-CA-Server vorhanden sind. findstr wurde im obigen Beispiel als Kürze verwendet.
- Der Standardspeicherpass für den Java Cacerts Trust Keystore ist "changeit".
- Ersetzen Sie JAVA_INSTALL_PATH durch den vollständigen Pfad zu Ihrer Java-Installation.
- Um die Zertifikate aus dem authc.truststore und/oder authc.keystore zu entfernen, geben Sie den vollständigen Pfad zu diesen Dateien für -keystore und das NetWorker authc-Passwort für -storepass an. Das NetWorker authc Keystore-Passwort wird während der Installation von NetWorker konfiguriert.
- Linux:
- /opt/nsr/authc-server/conf/authc.truststore
- /nsr/authc/conf/authc.keystore
- Windows:
- C:\Program Files\EMC NetWorker\nsr\authc-server\conf\authc.truststore
- C:\Program Files\EMC NetWorker\nsr\authc-server\tomcat\conf\authc.keystore
- Linux:
Wenn ein Zertifikat angezeigt wird, müssen Sie es löschen (andernfalls fahren Sie mit dem nächsten Schritt fort):
keytool -delete -alias ALIAS_NAME -keystore "PATH_TO_CACERTS_FILE" -storepass PASSWORD
Beispiel:
JAVA_INSTALL_PATH\bin> keytool -delete -alias LDAPS-SERVER -keystore ..\lib\security\cacerts -storepass changeit
JAVA_INSTALL_PATH\bin> keytool -delete -alias ROOTCA-SERVER -keystore ..\lib\security\cacerts" -storepass changeit
2. Stellen Sie über openssl eine Verbindung zum LDAPS-Server her:
openssl s_client -showcerts -connect LDAPS_SERVER:636
Beispiel:
OPENSSL_INSTALL_PATH\bin> openssl s_client -showcerts -connect ldaps-server.lab.emc.local:636
CONNECTED(00000124)
depth=1 DC = LOCAL, DC = EMC, DC = LAB, CN = LDAPS-SERVER
---
Certificate chain
0 s:/CN=LDAPS-SERVER.LAB.EMC.LOCAL
i:/DC=LOCAL/DC=EMC/DC=LAB/CN=ROOTCA-SERVER
-----BEGIN CERTIFICATE-----
<< removed for brevity >>
-----END CERTIFICATE-----
1 s:/DC=LOCAL/DC=EMC/DC=LAB/CN=ROOTCA-SERVER
i:/CN=ROOTCA-SERVER
-----BEGIN CERTIFICATE-----
<< removed for brevity >>
-----END CERTIFICATE-----
3, a. Kopieren Sie das Kettenzertifikat, einschließlich des -----BEGIN CERTIFICATE----- Headers und der -----END CERTIFICATE----- Fußzeile in eine Textdatei, z. B. chain.cer
3, b. Kopieren Sie das Stammzertifikat, einschließlich der Kopfzeile -----BEGIN CERTIFICATE----- und der -----END CERTIFICATE----- Fußzeile in eine Textdatei, z. B.: root.cer
4. Importieren Sie das Kettenzertifikat in den Java Cacerts Trust Keystore und importieren Sie dann alle Zertifikate, die zum Stammzertifikat führen:
Beispiel:
JAVA_INSTALL_PATH\bin> keytool -import -alias LDAPS-SERVER -keystore "JAVA_INSTALL_PATH\lib\security\cacerts" -storepass changeit -file "PATH_TO\chain.cer"
<< removed for brevity >>
Trust this certificate? [no]: y
Certificate was added to keystore
JAVA_INSTALL_PATH\bin> keytool -import -alias ROOTCA-SERVER -keystore "JAVA_INSTALL_PATH\lib\security\cacerts" -storepass changeit -file "PATH_TO\root.cer"
<< removed for brevity >>
Trust this certificate? [no]: y
Certificate was added to keystore
- Ersetzen Sie die Aliaswerte durch Aliasnamen, die Ihrer Umgebung entsprechen, z. B. den Hostnamen des LDAPS- und CA-Servers.
- Ersetzen Sie PATH_TO durch den vollständigen Pfad zum Speicherort der Dateien, die Sie für chain.cer und root.cer erstellt haben.
- Stellen Sie sicher, dass während des Imports keine zusätzlichen Fehler ausgegeben werden.
5. Starten Sie netWorker-Services neu. Der authc-Service liest den cacerts-Keystore beim Start:
Linux: nsr_shutdown
systemctl start networker
Windows: net stop nsrd /y && net start nsrd
6. Schließen Sie die LDAPS-Integration ab:
NetWorker: Konfigurieren von "AD over SSL" (LDAPS) über die NetWorker-Webbenutzeroberfläche (NWUI)
Networker: Konfigurieren der LDAPS-Authentifizierung