Проблемы доверия сертификата CentOS openLDAP

Xen отбрасывается в пользу kvm. Centos всегда следует за Redhat, который является их вещью.

По моему скромному мнению, kvm является намного лучшим решением для виртуализации в целом.

12
задан 12 October 2012 в 01:51
5 ответов

На самом деле RHEL не предоставляет ничего, что можно было бы использовать в качестве «каталога сертификатов» для целей доверия CA. Для OpenSSL каталог сертификатов - «CApath» - это каталог, содержащий отдельные файлы сертификатов (в формате PEM или расширенном формате «доверенный сертификат» OpenSSL) с именами в определенном формате на основе хэша имени субъекта сертификата. Обычно это достигается помещением файлов с удобочитаемыми именами и расширениями .pem в каталог и запуском в нем c_rehash (см. man c_rehash ). Для GnuTLS, начиная с версии 3.3.6 (до этого в GnuTLS не было поддержки каталогов), это просто каталог с файлами PEM в нем; GnuTLS попытается загрузить каждый файл в каталоге и преуспеет во всем, что касается PEM (он не может обрабатывать формат «доверенного сертификата» OpenSSL). Я не совсем уверен, может ли NSS действительно использовать каталог, полный отдельных файлов сертификатов, в качестве доверенного корня, но документация OpenLDAP, похоже, предполагает, что это возможно (но если каталог также содержит базу данных NSS, он предоставит этот приоритет). Тем не менее, в RHEL нет ничего похожего на каталог, полный отдельных файлов сертификатов CA.

Debian и его производные предоставляют / etc / ssl / certs в этом формате; / etc / ssl / certs - это каноническое расположение хранилища доверенных сертификатов в Debian, и ИМО все, что его предоставляет, должно в основном располагаться как в Debian, поскольку в Debian этот каталог был расположен более или менее таким же образом, поскольку как и 1999. RHEL имеет каталог / etc / ssl / certs , но он находится не в этом формате - он вообще не содержит каких-либо отдельных файлов сертификатов. Вы не можете использовать его как CApath. Честно говоря, в RHEL (и Fedora, и производных) этот каталог в основном является ловушкой. Не используйте это. (См. https://bugzilla.redhat.com/show_bug.cgi?id=572725 и https://bugzilla.redhat.com/show_bug.cgi?id=1053882 для некоторая предыстория о том, почему он вообще существует, и как я пытаюсь его исправить). Так что я думаю, что вы правы в том, что происходит, но ошибаетесь в отношении причины. OpenLDAP не делает ничего плохого и не дает сбоев, потому что «ca-bundle.trust.crt ... это база данных сертификатов / ключей Mozilla NSS» (они называются cert8 / 9.db и key3 / 4.db , а общесистемные на RHEL находятся в / etc / pki / nssdb ), это просто не удается, потому что / etc / ssl / certs вообще не может использоваться как «каталог сертификатов».

RHEL также не предоставляет ничего, что можно было бы использовать в качестве хранилища доверенных сертификатов в стиле CApath где-либо еще. Хранилище доверенных сертификатов системы RHEL предоставляется в виде одного файла пакета PEM («CAfile» в терминах OpenSSL), который можно найти по адресу /etc/pki/tls/certs/ca-bundle.crt и ] /etc/pki/tls/cert.pem . Его также можно найти по адресу /etc/ssl/certs/ca-bundle.crt , поскольку / etc / ssl / certs на самом деле просто символическая ссылка на / etc / pki / tls / certs , но это расположение не является каноническим и действительно не должно использоваться ничем. RHEL также предоставляет пакет в формате «доверенного сертификата» OpenSSL как /etc/pki/tls/certs/ca-bundle.trust.crt .

Правильное решение, как вы поняли, - использовать файл пакета, который предоставляет система. Ваш ответ будет работать, но по причинам, указанным выше, я настоятельно рекомендую TLS_CACERT = / etc / pki / tls / certs / ca-bundle.crt или TLS_CACERT = / etc / pki / tls /cert.pem вместо TLS_CACERT = / etc / ssl / certs / ca-bundle.crt .

(Между прочим, нет ничего отдаленно нового в этом, но путаница в переплетениях есть RH и его производные никогда не предоставляли каталог, полный сертификатов. Они предоставляют файл пакета с 2000 года. Он был перемещен из / usr / share / ssl в / etc / pki / tls в 2005 году. В Debian были как / etc / ssl / certs в качестве каталога в стиле CApath, так и /etc/ssl/certs/ca-certificates.crt как файл пакета более или менее с тех пор, как каменный век.)

17
ответ дан 2 December 2019 в 21:32

Судя по каждой странице руководства, которую я видел (но я не пользователь CentOS), не существует такой вещи, как LDAPTLS_CACERTDIR . Правильная переменная для установки - TLS_CACERTDIR . Вы должны установить его навсегда в /etc/openldap/ldap.conf или в другом месте, где CentOS хранит файл конфигурации библиотеки LDAP. Кроме того, вам может потребоваться настроить сам pam-ldap для поиска сертификатов CA. В CentOS это /etc/pam_ldap.conf , я думаю, а устанавливаемая переменная - tls_cacertdir .

-1
ответ дан 2 December 2019 в 21:32

/etc/ssl/certs/ contains /etc/ssl/certs/ca-bundle.trust.crt as part of ca-certificates-2010.63-3.el6_1.5.noarch, which is a Mozilla NSS cert/key database. Inclusion of this file within TLS_CACERTDIR causes all other files to be ignored.

TLS_CACERTDIR
Specifies the path of a directory that contains Certificate Authority certificates in separate individual files. The TLS_CACERT is always used before TLS_CACERTDIR.` This parameter is ignored with GnuTLS.

When using Mozilla NSS, may contain a Mozilla NSS cert/key database. If contains a Mozilla NSS cert/key database and CA cert files, OpenLDAP will use the cert/key database and will ignore the CA cert files.`

However, openldap-2.4.23-26.el6_3.2.i686 doesn't seem to handle this properly.

Short Answer
Use LDAPTLS_CACERT=/etc/ssl/certs/ca-bundle.crt
(config file TLS_CACERT=/etc/ssl/certs/ca-bundle.crt)
This file is also included provided by ca-certificates-2010.63-3.el6_1.5.noarch.

10
ответ дан 2 December 2019 в 21:32

Это очень распространенная проблема, не волнуйтесь, у меня есть для вас ответ.

Первые клоны RHEL имеют два файла ldap.conf , /etc/ldap.conf или в RHEL6 устарел, но теперь вы можете использовать /etc/nslcd.conf для аутентификации /etc/openldap/ldap.conf предназначен только для запросов , поэтому ldapsearch , ldapmodify , ldapremove , это на самом деле ваш профиль, поэтому вам не нужно создавать неприятную длинную строку каждый раз, когда вы хотите запустить команду ldap.

Теперь, когда это решено, у вас есть два параметра,

  • tls_cacertfile - явно определите сертификат CA, и вы должны быть готовы пойти
  • tls_cacertdir - перетащите сертификат CA в каталог, но это не сработает, потому что требует хеширования ...

используйте openssl x509 -hash -noout -in $ file, ln -s $ file $ file.0 , тогда ваш сертификат CA будет работать.

Также примечание , если файл конфигурации находится в CAPS, вы работаете в /etc/openldap/ldap.conf, это очень разные файлы.

0
ответ дан 2 December 2019 в 21:32

Кто-нибудь еще сталкивается с этим; это то, что работало для меня на centos 6 openldap и sssd:

notes: a. Какой-то "умник" решил заставить sssd требовать TLS/SSL; поведение изменилось с centos5; это отлично подходит для внешних систем; но когда у вас 300+ узлов на внутреннем устройстве с недоступной внутренней сетью к машинному кластеру, это крайне бесполезная функция безопасности.

b. Более того, самораспеваемые сертификаты, похоже, больше не работают; продолжим попытки

c. Избегайте NSLCD любой ценой; был завален проблемами нон-стоп, когда я установил флаг наследия и использовал вместо sssd (netgroups; deadlocking syslog, и т.д...)

Чтобы начать работу с помощью sssd;

  1. sssd.conf

    .
    [domain/default]
    ldap_id_use_start_tls = истинно
    id_provider = ldap
    auth_provider = ldap
    chpass_provider = ldap
    cache_credentials = True
    ldap_search_base = dc=local
    перечислить = Верно
    ldap_uri = ldap://192.168.1.2/
    ldap_tls_cacertdir = /etc/openldap/cacerts
    ldap_tls_reqcert = разрешить
    ldap_schema = rfc2307bis
    
  2. slapd.conf

    TLSCACACertificateFile /etc/openldap/cacerts/ca-bundle.crt
    TLSCertificateFile /etc/openldap/cacerts/slapd.pem
    TLSCertificateKeyFile /etc/openldap/cacerts/slapd.pem
    TLSCipherSuite HIGH:MEDIUM:-SSLv2
    
  3. ldap.conf

    URI ldap://192.168.1.2/
    БАЗА dc=локальный
    
    TLS_CACERTDIR /etc/openldap/cacerts
    
1
ответ дан 2 December 2019 в 21:32

Теги

Похожие вопросы