LDAP mit SSL in HCL Connections TDI als Quellverzeichnis verwenden

Der IBM Tivoli Directory Integrator unterstützt die Verwendung von SSL Transportverschlüsselung zum Domaincontroller. Dies ist grundsätzlich sinnvoll und sollte einer unverschlüsselten Verbindung natürlich vorgezogen werden. Folgender Artikel beschreibt, wie der TDI zur Verwendung von SSL konfiguriert werden kann.

Aktivieren von SSL im TDI

In der Datei profiles_tdi.properties müssen wir dafür SSL aktivieren. Beginnen wir mit der Anpassung des Portes. Standardmäßig kommt 389 für unverschlüsselte LDAP-Anfragen zum Einsatz. Dieser Port ist in source_ldap_url entsprechend durch 636 zu setzen – oder eben den jeweiligen SSL-Port, falls er geändert wurde. Zusätzlich die Eigenschaft source_ldap_use_ssl auf true setzen.

source_ldap_url=ldap://ldaphost.internal:636
source_ldap_use_ssl=true

Da die LDAP-URL von Connections in der PeopleDB gespeichert wird, macht es Sinn, folgende zwei Attribute zu setzen:

sync_source_url_enforce=true
sync_source_url_override=true

Dadurch wird die LDAP-URL entsprechend angepasst.

Dem Zertifikat im Truststore vertrauen

Entsprechend dem Funktionsprinzip von SSL muss der Client dem Zertifikat des Servers vertrauen. Üblicherweise kommt eine eigene Zertifizierungsstelle zum Einsatz – oder ein selbst signiertes Zertifikat für Testumgebungen. In der Konfigurationsdatei solution.properties wird der verwendete Truststore festgelegt. Auch das dazugehörige Passwort findet sich dort:

javax.net.ssl.trustStore=ldap_ssl.jks
javax.net.ssl.trustStorePassword=1234
javax.net.ssl.trustStoreType=jks

Der Pfad zum Store ist relativ zum tdisol-Verzeichnis. Wenn man erstmalig auf SSL umstellt, muss der Truststore zunächst angelegt werden. Anschließend benötigen wir das Zertifikat des LDAP-Servers, damit es im Truststore gespeichert werden kann. Zur Vereinfachung hat Christoph Stöttner ein Shellskript dafür geschrieben:

./create_cacerts.sh -h dc01.internal -p 636 -f ldap_ssl.jks

Es legt den mit -f angegebenen Store an, sofern er nicht existiert. Entsprechend muss dort das gleiche Passwort gesetzt werden, wie zuvor in solution.properties angegeben. Nachdem mit yes bestätigt wurde dem Zertifikat zu vertrauen, läuft der TDI mit SSL. Ein Aufruf von ./collect_dns.sh sollte eben so funktionieren wie ./sync_all_dns.sh und ohne Timeout durchlaufen.

Leave a Reply