RHEL bietet in der Tat nichts an, was als "Zertifikatverzeichnis" für CA-Vertrauenszwecke verwendet werden könnte. Bei OpenSSL ist ein Zertifikatverzeichnis - ein "CApath" - ein Verzeichnis, das einzelne Zertifikatdateien (im PEM-Format oder im erweiterten "Trusted Certificate" -Format von OpenSSL) mit Namen in einem bestimmten Format enthält, das auf einem Hash des Antragstellernamens des Zertifikats basiert. In der Regel wird dies erreicht, indem Dateien mit lesbaren Namen und .pem
Erweiterungen in ein Verzeichnis gestellt und darauf ausgeführt werden c_rehash
(sieheman c_rehash
). Bei GnuTLS seit 3.3.6 (GnuTLS hatte zuvor keine Verzeichnisunterstützung) handelt es sich lediglich um ein Verzeichnis mit PEM-Dateien. GnuTLS wird versuchen, jede Datei im Verzeichnis zu laden und auf PEMs erfolgreich zu sein (es kann nicht mit OpenSSLs 'Trusted Certificate'-Format umgehen). Ich bin mir ehrlich gesagt nicht sicher, ob NSS tatsächlich ein Verzeichnis mit einzelnen Zertifikatdateien als Vertrauensstamm verwenden kann, aber die OpenLDAP-Dokumentation scheint dies zu empfehlen (aber wenn das Verzeichnis auch eine NSS-Datenbank enthält, wird diese Priorität zugewiesen). Unabhängig davon verfügt RHEL nicht über ein Verzeichnis mit einzelnen CA-Zertifikatdateien.
Debian und Derivate liefern /etc/ssl/certs
in diesem Format; /etc/ssl/certs
ist der kanonische Vertrauensspeicherort auf Debian, und alles, was IMO anbietet, sollte im Grunde genommen so aussehen wie Debian, da Debian dieses Verzeichnis seit 1999 mehr oder weniger auf die gleiche Weise angelegt hat. RHEL hat ein /etc/ssl/certs
Verzeichnis, aber es befindet sich in nicht in diesem Format - es enthält überhaupt keine einzelnen Zertifikatdateien. Sie können es nicht als CApath verwenden. Ehrlich gesagt ist dieses Verzeichnis bei RHEL (und Fedora und Derivaten) im Grunde genommen eine Falle. Benutze es nicht. (Siehe https://bugzilla.redhat.com/show_bug.cgi?id=572725 und https://bugzilla.redhat.com/show_bug.cgi?id=1053882für einige Hintergrundinformationen darüber, warum es überhaupt existiert und wie ich versuche, es zu reparieren). Ich denke, Sie haben Recht mit dem, was vor sich geht, aber Sie haben Unrecht mit dem Grund, warum. OpenLDAP macht nichts falsch und es schlägt auch nicht fehl, weil "ca-bundle.trust.crt ... eine Mozilla NSS-Zertifikats- / Schlüsseldatenbank" ist (diese heißen cert8/9.db
und key3/4.db
und die systemweiten auf RHEL leben in /etc/pki/nssdb
). , es scheitert nur daran, dass /etc/ssl/certs
es überhaupt nicht als 'Zertifikatsverzeichnis' verwendet werden kann.
RHEL bietet auch sonst nirgendwo etwas, das als CApath-artiger Truststore verwendet werden kann. Der System Trust Store von RHEL wird als einzelne PEM-Bundle-Datei (eine 'CA-Datei' in OpenSSL-Begriffen) bereitgestellt, die unter /etc/pki/tls/certs/ca-bundle.crt
und abgerufen werden kann /etc/pki/tls/cert.pem
. Es kann auch unter gefunden werden, /etc/ssl/certs/ca-bundle.crt
da /etc/ssl/certs
es eigentlich nur ein Symlink zu ist /etc/pki/tls/certs
, aber dieser Ort ist nicht kanonisch und sollte wirklich nie von irgendetwas benutzt werden. RHEL bietet auch ein Paket im OpenSSL-Format 'Trusted Certificate' als an /etc/pki/tls/certs/ca-bundle.trust.crt
.
Wie Sie herausgefunden haben, müssen Sie die Bundle-Datei verwenden, die das System zur Verfügung stellt. Ihre Antwort wird funktionieren, aber aus den oben genannten Gründen würde ich dringend empfehlen TLS_CACERT=/etc/pki/tls/certs/ca-bundle.crt
oder TLS_CACERT=/etc/pki/tls/cert.pem
über TLS_CACERT=/etc/ssl/certs/ca-bundle.crt
.
(Übrigens gibt es in alledem nichts Neues, aber Verwirrung in den Interwebs ist weit verbreitet. RH und Derivate haben noch nie ein Verzeichnis voller Zertifikate bereitgestellt. Sie haben seit dem Jahr 2000 eine Bundle-Datei bereitgestellt. Dies war es bewegt von / usr / share / ssl / etc / pki / tls 2005 Debian beide hatte /etc/ssl/certs
als capath-style - Verzeichnis und /etc/ssl/certs/ca-certificates.crt
als Bundle - Datei mehr oder weniger seit der Steinzeit.)
/etc/ssl/certs/
enthält/etc/ssl/certs/ca-bundle.trust.crt
als Teil vonca-certificates-2010.63-3.el6_1.5.noarch
, welches eine Mozilla NSS Zertifikat / Schlüsseldatenbank ist. Das Einschließen dieser Datei inTLS_CACERTDIR
bewirkt, dass alle anderen Dateien ignoriert werden.Scheint
openldap-2.4.23-26.el6_3.2.i686
jedoch nicht richtig damit umzugehen.Short Answer
Use
LDAPTLS_CACERT=/etc/ssl/certs/ca-bundle.crt
(Konfigurationsdatei
TLS_CACERT=/etc/ssl/certs/ca-bundle.crt
)Diese Datei wird auch von bereitgestellt
ca-certificates-2010.63-3.el6_1.5.noarch
.quelle
Jeder andere stößt darauf; Das hat bei mir auf Centos 6 Openldap und SSD funktioniert:
Anmerkungen: a. Einige "kluge Kerl" beschlossen, sssd TLS / SSL erfordern zu machen; Verhaltensänderung von Centos5; Das ist großartig für externe Systeme. aber wenn Sie über 300 Knoten in einer internen Appliance mit einem nicht erreichbaren internen Netzwerk für den Maschinencluster haben; Dies ist ein äußerst nutzloses Sicherheitsmerkmal.
b. Darüber hinaus scheinen selbst gesungene Zertifikate nicht mehr zu funktionieren; werde es weiter versuchen
c. Vermeiden Sie NSLCD um jeden Preis; wurde mit ununterbrochenen Ausgaben geplagt, als ich das Vermächtnisflag einstellte und anstelle von sssd verwendete (netgroups; Deadlocking Syslog, etc.).
Um mit sssd loszulegen;
sssd.conf
slapd.conf
ldap.conf
quelle
sssd
zum Beispiel zu arbeiten.Dies ist ein sehr häufiges Problem, keine Sorge, ich habe eine Antwort für Sie.
Erste RHEL Klone zwei haben haben
ldap.conf
Dateien,/etc/ldap.conf
oder in RHEL6 ist veraltet, aber Sie verwenden können ,/etc/nslcd.conf
für die Authentifizierung jetzt/etc/openldap/ldap.conf
ist nur für Abfragen , soldapsearch
,ldapmodify
,ldapremove
, es ist wirklich Ihr Profil , so dass Sie haben müssen , um eine böse lange Zeichenfolge jedes Mal , wenn Sie nicht wollen , einen ldap-Befehl ausführen.Damit stehen Ihnen zwei Parameter zur Verfügung:
tls_cacertfile
- Definieren Sie das Zertifikat explizit und Sie sollten einsatzbereit seintls_cacertdir
- in der ca cert in das Verzeichnis fallen , aber es wird nicht funktionieren, weil es muss gehasht werden ...verwenden
openssl x509 -hash -noout -in $file , ln -s $file $file.0
, dann funktioniert Ihr CA-Zertifikat.Auch beachten Sie, wenn die Konfigurationsdatei in CAPS ist, können Sie in /etc/openldap/ldap.conf arbeiten, sind sie sehr unterschiedliche Dateien.
Hoffe das klärt die Dinge auf.
quelle
Laut jeder Manpage, die ich gesehen habe (aber ich bin kein CentOS-Benutzer), gibt es keine
LDAPTLS_CACERTDIR
. Die richtige Variable istTLS_CACERTDIR
. Sie sollten es dauerhaft in/etc/openldap/ldap.conf
oder überall dort einstellen, wo CentOS die LDAP-Bibliothekskonfigurationsdatei aufbewahrt. Möglicherweise müssen Sie pam-ldap auch selbst konfigurieren, um nach CA-Zertifikaten zu suchen. In CentOS ist dies/etc/pam_ldap.conf
, denke ich, und die zu setzende Variable isttls_cacertdir
.quelle
Environmental variables may also be used to augment the file based defaults. The name of the variable is the option name with an added prefix of LDAP. For example, to define BASE via the environment, set the variable LDAPBASE to the desired value.
LDAPTLS_CACERTDIR
und keine gefunden, also bin ich davon ausgegangen, dass Sie Ihre Variablen vertauscht haben. Es tut uns leid.