Beim Versuch, ldaps-Verbindungen zu meinem Novel eDirectory 8.8-Server herzustellen, muss ich manchmal die TLS_REQCERT never
Datei ldap.conf des Client-Servers eingeben. Offensichtlich ist das eine schlechte Idee.
Der Befehl, den ich ausführe, ist ungefähr so, mit Anmeldeinformationen, die tatsächlich funktionieren ...
ldapsearch -x -H ldaps://ldapserver -b 'ou=active,ou=people,dc=example,dc=org' -D 'cn=admin,dc=example,dc=org' -W "cn=username"
Unter Ubuntu 13.10 funktioniert es einwandfrei.
Auf SLES funktioniert es gut.
Unter CentOS 6.5 gibt es Folgendes zurück:
ldap_sasl_bind(SIMPLE): Can't contact LDAP server (-1)
Nun ist das von mir importierte Zertifikat ein Wildcard-Zertifikat, das von DigiCert gekauft wurde. Mein Kollege hat einige Berichte gefunden, die darauf hinweisen, dass einige Systeme Probleme mit Platzhaltern haben.
Also, ist die Wildcard-Zertifizierung schuld? Wenn ja, wie behebe ich das?
Wenn es nicht das Wildcard-Zertifikat ist, was ist es dann?
Auf Anregung von Andrew Schulman habe ich -d1
meinen Befehl ldapsearch erweitert. Hier ist, was ich am Ende hatte:
ldap_url_parse_ext(ldaps://ldap.example.org)
ldap_create
ldap_url_parse_ext(ldaps://ldap.example.org:636/??base)
Enter LDAP Password:
ldap_sasl_bind
ldap_send_initial_request
ldap_new_connection 1 1 0
ldap_int_open_connection
ldap_connect_to_host: TCP ldap.example.org:636
ldap_new_socket: 3
ldap_prepare_socket: 3
ldap_connect_to_host: Trying 10.225.0.24:636
ldap_pvt_connect: fd: 3 tm: -1 async: 0
TLS: certdb config: configDir='/etc/openldap' tokenDescription='ldap(0)' certPrefix='cacerts' keyPrefix='cacerts' flags=readOnly
TLS: cannot open certdb '/etc/openldap', error -8018:Unknown PKCS #11 error.
TLS: could not get info about the CA certificate directory /etc/openldap/cacerts - error -5950:File not found.
TLS: certificate [CN=DigiCert High Assurance EV Root CA,OU=www.digicert.com,O=DigiCert Inc,C=US] is not valid - error -8172:Peer's certificate issuer has been marked as not trusted by the user..
TLS: error: connect - force handshake failure: errno 2 - moznss error -8172
TLS: can't connect: TLS error -8172:Peer's certificate issuer has been marked as not trusted by the user..
ldap_err2string
ldap_sasl_bind(SIMPLE): Can't contact LDAP server (-1)
Nach alledem vertraut CentOS DigiCert nicht? Oder hat CentOS keine Liste vertrauenswürdiger Emittenten?
quelle
telnet ldapserver ldaps
oderopenssl s_client -connect ldapserver:636
.Antworten:
ldapsearch sucht in / etc / openldap / cacerts nach dem Speicher für vertrauenswürdige CA-Zertifikate, der anscheinend nicht eingerichtet ist, und lehnt das Zertifikat daher ab, da keine Vertrauenskette für das Zertifikat erstellt werden kann. Wenn ldapsearch OpenSSL verwenden würde, würde es eine "hashdir" -Formatsammlung benötigen, wie sie beispielsweise vom Red Hat "authconfig" -Programm erstellt wird, oder eine einzelne Datei mit einer einfachen Liste vertrauenswürdiger Zertifikate. Der Verweis auf "moznss" deutet darauf hin, dass diese ldapsearch auf Mozilla NSS basiert. In diesem Fall müssen Sie "certutil" verwenden, um die cert db zu erstellen (oder, falls vorhanden, auf den System-NSS-Zertifikatspeicher verweisen). .
Auf den Systemen, auf denen es funktioniert, muss ldapsearch über einen funktionierenden Zertifikatspeicher verfügen, möglicherweise, weil diese OpenLDAP-Pakete stattdessen für OpenSSL erstellt wurden (oder möglicherweise ist dort ein funktionsfähiger Speicher im NSS-Stil verfügbar).
quelle
/etc/openldap/certs
ist, wo der Zertifizierungsspeicher ist. Keine Cacerts. In /etc/openldap/ldap.conf änderte ichTLS_CACERTDIR /etc/openldap/cacerts
zuTLS_CACERTDIR /etc/openldap/certs
und mein ldapsearch Befehl fing an zu arbeiten. Vielen Dank!ldapsearch sagt "LDAP-Server kann nicht kontaktiert werden", wenn das TLS-Zertifikat nicht verifiziert werden kann. Fügen
-d1
Sie den Befehl ldapsearch hinzu und überprüfen Sie die Ausgabezeilen, die mit "TLS:" beginnen, um weitere Informationen darüber zu erhalten, ob und warum die TLS-Verbindung fehlschlägt.quelle
Die Lösung hängt von Ihrer Installation ab:
Wenn Sie ein ungültiges Zertifikat verwenden , können Sie die Konfiguration
/etc/openldap/ldap.conf
mit erzwingenoder
Wenn Sie ein gültiges Zertifikat verwenden, weiß Ihre ldap- Installation wahrscheinlich nicht, wo sich der Speicher vertrauenswürdiger CA-Zertifikate befindet (wahrscheinlich abhängig von Ihrer OpenSSL-Installation). Anschließend können Sie versuchen, den Speicherort festzulegen, und die Konfiguration
/etc/openldap/ldap.conf
mit erzwingen/etc/openldap/cacert
kann dies sein oder sich in einem beliebigen Pfad befinden. Es muss die Zertifikatskette Ihrer Zertifizierungsstelle enthalten. Es kann sich um eine einzelne Datei mit einer einfachen Liste vertrauenswürdiger Zertifikate handeln.Hinweispfade hängen vom LDAP-Anbieter ab. Es könnte sein ,
/etc/ldap
oder/etc/openldap
so.quelle