RHEL ne fournit en fait rien qui puisse être utilisé comme «répertoire de certificats» à des fins d'approbation par l'autorité de certification. Pour OpenSSL, un répertoire de certificats - un `` CApath '' - est un répertoire contenant des fichiers de certificats individuels (au format PEM ou au format étendu de `` certificat de confiance '' d'OpenSSL), avec des noms dans un format spécifique basé sur un hachage du nom de sujet du certificat. Habituellement, cela est réalisé en plaçant des fichiers avec des noms et des .pem
extensions lisibles par l'homme dans un répertoire et en les exécutant c_rehash
(voirman c_rehash
). Pour GnuTLS depuis la 3.3.6 (avant cela, GnuTLS n'avait pas de support de répertoire), c'est juste un répertoire contenant des fichiers PEM; GnuTLS essaiera de charger chaque fichier dans le répertoire et réussira sur tout ce qui est PEM (il ne peut pas gérer le format de «certificat de confiance» d'OpenSSL). Je ne suis pas honnêtement sûr si NSS peut réellement utiliser un répertoire plein de fichiers de certificats individuels comme racine de confiance, mais la documentation d'OpenLDAP semble suggérer que cela peut (mais si le répertoire contient également une base de données NSS, il donnera cette priorité). Quoi qu'il en soit, RHEL n'a rien de tel qu'un répertoire rempli de fichiers de certificats d'autorité de certification individuels.
Debian et ses dérivés fournissent /etc/ssl/certs
dans ce format; /etc/ssl/certs
est l'emplacement canonique du magasin de confiance sur Debian, et IMO tout ce qui le fournit devrait essentiellement le présenter comme Debian, car Debian avait ce répertoire disposé plus ou moins de la même manière depuis 1999. RHEL a un /etc/ssl/certs
répertoire, mais il est dans pas dans ce format - il ne contient aucun fichier de certificat individuel. Vous ne pouvez pas l'utiliser comme CApath. Honnêtement, sur RHEL (et Fedora et dérivés), ce répertoire est fondamentalement un piège. Ne l'utilisez pas. (Voir https://bugzilla.redhat.com/show_bug.cgi?id=572725 et https://bugzilla.redhat.com/show_bug.cgi?id=1053882pour quelques informations sur pourquoi il existe en premier lieu et comment j'essaye de le réparer). Je pense donc que vous avez raison sur ce qui se passe, mais que vous avez tort sur la raison. OpenLDAP ne fait rien de mal, et il n'échoue pas car "ca-bundle.trust.crt ... est une base de données de clés / certificats Mozilla NSS" (celles-ci sont appelées cert8/9.db
et key3/4.db
, et celles du système sur RHEL en direct /etc/pki/nssdb
) , il échoue simplement car il /etc/ssl/certs
n'est pas du tout utilisable comme «répertoire de certificats».
RHEL ne fournit rien non plus utilisable comme magasin de confiance de style CApath ailleurs. Le magasin de confiance système de RHEL est fourni sous la forme d'un fichier de bundle PEM unique (un «fichier CA» en termes OpenSSL), qui peut être trouvé sur /etc/pki/tls/certs/ca-bundle.crt
et /etc/pki/tls/cert.pem
. Il peut également être trouvé sur /etc/ssl/certs/ca-bundle.crt
as /etc/ssl/certs
is en fait juste un lien symbolique vers /etc/pki/tls/certs
, mais cet emplacement n'est pas canonique et ne devrait vraiment être utilisé par rien. RHEL fournit également un bundle au format «certificat de confiance» d'OpenSSL /etc/pki/tls/certs/ca-bundle.trust.crt
.
La bonne chose à faire, comme vous l'avez compris, est d'utiliser le fichier de bundle fourni par le système. Votre réponse fonctionnera, mais pour les raisons mentionnées ci-dessus, je recommanderais fortement TLS_CACERT=/etc/pki/tls/certs/ca-bundle.crt
ou TLS_CACERT=/etc/pki/tls/cert.pem
plus TLS_CACERT=/etc/ssl/certs/ca-bundle.crt
.
(Il n'y a rien de nouveau à distance dans tout cela, btw, mais la confusion sur les interwebs est répandue. RH et dérivés n'ont jamais fourni un répertoire complet de certificats, jamais. Ils ont fourni un fichier de paquet depuis l'an 2000. Il était déplacé de / usr / share / ssl vers / etc / pki / tls en 2005. Debian a eu à la fois /etc/ssl/certs
un répertoire de style CApath et /etc/ssl/certs/ca-certificates.crt
un fichier de bundle plus ou moins depuis l'âge de pierre.)
/etc/ssl/certs/
contient/etc/ssl/certs/ca-bundle.trust.crt
dans le cadre deca-certificates-2010.63-3.el6_1.5.noarch
, qui est une base de données de certificats / clés Mozilla NSS. L'inclusion de ce fichier dansTLS_CACERTDIR
entraîne l'ignorance de tous les autres fichiers.Cependant,
openldap-2.4.23-26.el6_3.2.i686
ne semble pas gérer cela correctement.Utilisation à réponse courte
LDAPTLS_CACERT=/etc/ssl/certs/ca-bundle.crt
(fichier de configuration
TLS_CACERT=/etc/ssl/certs/ca-bundle.crt
)Ce fichier est également fourni par
ca-certificates-2010.63-3.el6_1.5.noarch
.la source
N'importe qui d'autre se heurte à cela; c'est ce qui a fonctionné pour moi sur centos 6 openldap et sssd:
notes: a. Un "type intelligent" a décidé de faire en sorte que sssd nécessite TLS / SSL; changement de comportement de centos5; c'est génial pour les systèmes externes; mais lorsque vous avez plus de 300 nœuds sur l'appliance interne avec un réseau interne inaccessible au cluster de machines; c'est une fonction de sécurité extrêmement inutile.
b. De plus, les certificats auto-interprétés ne semblent plus fonctionner; continuera d'essayer
c. Évitez NSLCD à tout prix; a été en proie à des problèmes non-stop lorsque j'ai défini le drapeau hérité et utilisé à la place de sssd (netgroups; blocage de syslog, etc.).
Pour être opérationnel avec sssd;
sssd.conf
slapd.conf
ldap.conf
la source
sssd
par exemple.C'est un problème très courant, ne vous inquiétez pas, j'ai une réponse pour vous.
Premières RHEL Clones ont avoir deux
ldap.conf
fichiers,/etc/ldap.conf
ou RHEL6 est est obsolète mais vous pouvez utiliser/etc/nslcd.conf
pour l' authentification maintenant/etc/openldap/ldap.conf
est seulement pour les requêtes , doncldapsearch
,ldapmodify
,ldapremove
, ce qui est vraiment votre profil afin que vous ne devez pas avoir une chaîne méchante longue chaque fois que vous voulez pour exécuter une commande ldap.Maintenant, avec cela à l'écart, vous avez deux paramètres,
tls_cacertfile
- définir explicitement le ca cert et vous devriez être prêt à partirtls_cacertdir
- déposez le certificat CA dans le répertoire mais cela ne fonctionnera pas, car il doit être haché ...utiliser
openssl x509 -hash -noout -in $file , ln -s $file $file.0
, votre certificat CA fonctionnera.Notez également que si le fichier de configuration est en CAPS, vous travaillez dans /etc/openldap/ldap.conf, ce sont des fichiers très différents.
Espérons que cela arrange les choses.
la source
Selon chaque page de manuel que j'ai vue (mais je ne suis pas un utilisateur CentOS), il n'y a rien de tel
LDAPTLS_CACERTDIR
. La variable correcte à définir estTLS_CACERTDIR
. Vous devez le définir de manière permanente dans/etc/openldap/ldap.conf
ou partout où CentOS conserve le fichier de configuration de la bibliothèque LDAP. En outre, vous devrez peut-être configurer pam-ldap lui-même pour rechercher les certificats CA. Dans CentOS/etc/pam_ldap.conf
, c'est , je pense, et la variable à définir esttls_cacertdir
.la source
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
et n'en ai trouvé aucune, j'ai donc supposé que vous aviez mélangé vos variables. Pardon.