Деякі системи не можуть підключитися до ldap через ldaps, але інші можуть, це cerc-скрипт?


15

Коли я намагаюся встановити з'єднання ldaps до мого сервера Novel eDirectory 8.8, іноді мені доводиться розміщувати TLS_REQCERT neverу файлі ldap.conf клієнтських серверів. Очевидно, це погана ідея.

Команда, яку я виконую, - це щось подібне з обліковими записами, які насправді працюють ...

ldapsearch -x -H ldaps://ldapserver -b 'ou=active,ou=people,dc=example,dc=org' -D 'cn=admin,dc=example,dc=org' -W "cn=username"

На Ubuntu 13.10 він працює чудово.

На SLES це чудово працює.

На CentOS 6.5 він повертає:

ldap_sasl_bind(SIMPLE): Can't contact LDAP server (-1)

Тепер, серт, який я імпортував, - це сертифікат, що купується у DigiCert. Мій колега знайшов кілька звітів, які вказують на те, що в деяких системах є проблеми із символами.

Отож, чи винен вигідний сертифікат? Якщо так, як це виправити?

Якщо це не wildc cert, то що це таке?

За пропозицією Ендрю Шульмана я додав -d1до своєї команди ldapsearch. Ось що я закінчив:

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)

З того, що це говорить, CentOS не довіряє DigiCert? Або у CentOS немає списку надійних емітентів?


1
"Не вдається зв’язатися з сервером LDAP" звучить більше, як сервер просто недоступний з цього клієнтського апарату. Ви спочатку перевірили, що можете насправді підключитися до нього? Наприклад , telnet ldapserver ldapsчи openssl s_client -connect ldapserver:636.
Річард Е. Сільверман

Так, я підтвердив, що він може підключитися до сервера. Зрештою, він ніколи б не працював, якби взагалі не міг підключитися.
Девід Р.

Ви згадали про трьох різних хост-клієнтів. Той, хто не працює, може не зміг підключитися через проблему з мережею, а інші могли.
Річард Е. Сільверман

Я вважав, що мій пост був досить зрозумілим, що я редагував файл ldap.conf на всіх хостах. Як і коли я додав рядок у файл, він працював, але без рядка не обійшлося. Таким чином, не проблема з підключенням.
Девід Р.

Мені це було не ясно, коли я читав твій пост спочатку, хоча я бачу, що ти маєш на увазі зараз. У будь-якому випадку інформація про налагодження TLS, яку ви додали, показує проблему; Я додав відповідь для подальшого контролю.
Річард Е. Сільверман

Відповіді:


9

ldapsearch шукає в / etc / openldap / cacerts для свого магазину довірених сертифікатів ЦС, і це, мабуть, не налаштовано, а значить, відхиляє сертифікат, оскільки не може створити для нього ланцюжок довіри. Якщо ldapsearch використовував OpenSSL, йому знадобиться колекція формату "hashdir", створена, наприклад, програмою Red Hat "authconfig", або єдиний файл з плоским списком довірених сертифікатів. Посилання на "moznss" говорить про те, що цей ldapsearch побудований проти Mozilla NSS, і в цьому випадку вам потрібно використовувати "certutil", щоб зробити cert db (або, краще, вказати його на сховищі сертифікатів системи NSS, якщо такий є) .

У системах, де він працює, ldapsearch повинен мати робочий сховище сертифікатів, можливо тому, що ці пакети OpenLDAP створені замість OpenSSL (або, можливо, там доступний робочий магазин у стилі NSS).


2
Ага. /etc/openldap/certsде знаходиться магазин церта. Не катери. У /etc/openldap/ldap.conf я змінив , TLS_CACERTDIR /etc/openldap/cacertsщоб TLS_CACERTDIR /etc/openldap/certsі моя команда ldapsearch почала працювати. Спасибі!
Девід Р.

У мене встановлено ldapsearch на Ubuntu 16.04, і немає каталогу / etc / openldap.
vcardillo

13

ldapsearch скаже "Неможливо зв’язатися з сервером LDAP", якщо він не може перевірити сертифікат TLS. Додайте -d1до команди ldapsearch і перевірте вихідні рядки, які починаються з "TLS:", щоб отримати більше інформації про те, чи не працює з’єднання TLS і чому.


Я редагував своє запитання у відповідь на вашу пропозицію. Спасибі!
Девід Р.

8

Рішення залежить від вашої установки:

  • Якщо ви використовуєте не повний сертифікат , ви можете змусити його прийняти настройки /etc/openldap/ldap.confз

    TLS_REQCERT allow
    

    або

    TLS_REQCERT never
    
  • Якщо ви використовуєте дійсний cert, можливо, ваша установка ldap не знає, де зберігається надійні сертифікати CA (можливо, це залежить від вашої установки OpenSSL). Тоді ви можете спробувати встановити його місцезнаходження і сила перевірки конфігурації /etc/openldap/ldap.confз

    TLS_CACERT /etc/openldap/cacert
    TLS_REQCERT demand
    

    /etc/openldap/cacertможе бути цим або розташовуватися на будь-якому шляху. Він повинен містити ланцюжок сертифікатів вашої організації. Це може бути один файл із плоским списком довірених сертифікатів.

Шлях до нотатки залежить від постачальника послуг ldap. Це може бути /etc/ldapабо /etc/openldapабо так.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.