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, и все, что обеспечивает его в IMO, должно, в основном, планировать его так же, как и в 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 года. с 2005 года перенесен из / usr / share / ssl в / etc / pki / tls. Debian более или менее использовался /etc/ssl/certs
как каталог в стиле CApath и как пакетный /etc/ssl/certs/ca-certificates.crt
файл с каменного века.)
/etc/ssl/certs/
содержит/etc/ssl/certs/ca-bundle.trust.crt
как частьca-certificates-2010.63-3.el6_1.5.noarch
, которая является базой данных сертификатов / ключей Mozilla NSS. Включение этого файлаTLS_CACERTDIR
приводит к тому, что все остальные файлы игнорируются.Тем
openldap-2.4.23-26.el6_3.2.i686
не менее, похоже, не справиться с этим должным образом.Краткий ответ
Использование
LDAPTLS_CACERT=/etc/ssl/certs/ca-bundle.crt
(файл конфигурации
TLS_CACERT=/etc/ssl/certs/ca-bundle.crt
)Этот файл также включен
ca-certificates-2010.63-3.el6_1.5.noarch
.источник
Любой другой сталкивается с этим; это то, что у меня работает на Centos 6 OpenLADAP и SSSD:
примечания: а. Какой-то «умник» решил заставить sssd требовать TLS / SSL; изменение поведения от centos5; это отлично подходит для внешних систем; но если у вас есть более 300 узлов на внутреннем устройстве с недоступной внутренней сетью для кластера компьютеров; это крайне бесполезная функция безопасности.
б. Кроме того, самостоятельные сертификаты больше не работают; будем продолжать пытаться
с. Избегайте NSLCD любой ценой; из-за постоянных проблем меня преследовали, когда я установил устаревший флаг и использовал вместо sssd (netgroups; тупиковый системный журнал и т. д.).
Чтобы начать работать с sssd;
sssd.conf
slapd.conf
ldap.conf
источник
sssd
например.Это очень распространенная проблема, не волнуйтесь, у меня есть ответ для вас.
Первый RHEL Клоны имеют два
ldap.conf
файла,/etc/ldap.conf
или в RHEL6 является устаревшим , но вы можете использовать/etc/nslcd.conf
для проверки подлинности в настоящее время/etc/openldap/ldap.conf
только для запросов , такldapsearch
,ldapmodify
,ldapremove
, это действительно ваш профиль , так что вы не должны иметь неприятную длинную строку каждый раз , когда вы хотите запустить команду ldap.Теперь с этим у вас есть два параметра,
tls_cacertfile
- четко определите сертификат, и вы должны хорошо идтиtls_cacertdir
- поместите сертификат в каталог, но он не будет работать, потому что его нужно хешировать ...используйте
openssl x509 -hash -noout -in $file , ln -s $file $file.0
, тогда ваш сертификат CA будет работать.Также обратите внимание, что если файл конфигурации находится в CAPS, вы работаете в /etc/openldap/ldap.conf, это очень разные файлы.
Надеюсь, это прояснит ситуацию.
источник
Согласно каждой странице справки, которую я видел (но я не пользователь CentOS), такого понятия не существует
LDAPTLS_CACERTDIR
. Правильная переменная множестваTLS_CACERTDIR
. Вы должны установить его постоянно/etc/openldap/ldap.conf
или там, где CentOS хранит файл конфигурации библиотеки LDAP. Также вам может потребоваться настроить сам pam-ldap для поиска сертификатов CA./etc/pam_ldap.conf
Я думаю, что в CentOS это и переменная для установкиtls_cacertdir
.источник
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
и не нашел ничего, поэтому предположил, что вы перепутали свои переменные. Сожалею.