Назад | Перейти на главную страницу

Настройка клиента Linux для OpenLDAP через SSL

Я пытаюсь настроить SSL с сервером, на котором запущен OpenLDAP (и использую OpenSSL, а не GnuTLS).

Сервер работает нормально: я могу пройти аутентификацию, используя ldap:// а также можно использовать ldaps:// из Apache Directory Studio. Я также могу использовать LDAPS из клиента, если у меня есть этот параметр в /etc/ldap.conf:

tls_checkpeer no

Как только я попробую использовать tls_checkpeer yes в SSL-соединении отказано.

У меня на сервере следующие настройки:

olcTLSCACertificateFile  /etc/ssl/certs/cacert.pem
olcTLSCertificateFile    /etc/ssl/private/newcert.pem
olcTLSCertificateKeyFile /etc/ssl/private/newreq.pem

У клиента есть эти связанные записи:

# ssl on
uri ldaps://192.168.1.15
tls_checkpeer no
# tls_cacertdir /etc/ssl/certs
# tls_cacertfile /etc/ssl/certs/cacert.pem

Файл /etc/ssl/certs/cacert.pem доступен пользователям для чтения. С приведенной выше конфигурацией это работает. Если я раскомментирую один из двух прокомментированных tls_* записи конфигурации и измените на tls_checkpeer yes это не удается.

Я пробовал использовать как cacert.pem, так и newcert.pem для сертификата (tls_cacertfile), и это не сработало. У cacert.pem есть -----BEGIN CERTIFICATE----- раздел, как и newcert.pem.

Однако у cacert.pem это под X509v3 extensions:

X509v3 Basic Constraints: 
    CA:TRUE

... и файл newcert.pem имеет это в том же разделе:

X509v3 Basic Constraints: 
    CA:FALSE
Netscape Comment: 
    OpenSSL Generated Certificate

В других сертификатах в / etc / ssl / certs нет ничего, кроме блока, отмеченного BEGIN CERTIFICATE.

Используя эту команду:

openssl s_client -connect 192.168.6.144:636 -showcerts

Я вижу, что содержимое cacert.pem и newcert.pem используется для сеанса.

Я не вносил изменений в /etc/ldap/ldap.conf ни на клиенте, ни на сервере.

К ошибкам клиента относятся:

Feb  8 14:32:24 foo nscd: nss_ldap: could not connect to any LDAP server as cn=admin,dc=example,dc=com - Can't contact LDAP server
Feb  8 14:32:24 foo nscd: nss_ldap: failed to bind to LDAP server ldaps://bar: Can't contact LDAP server
Feb  8 14:32:24 foo nscd: nss_ldap: could not search LDAP server - Server is unavailable

На сервере нет специальных записей в журнале. Клиент - Ubuntu Lucid Lynx 10.04, как и сервер. Все используют nscd.

Попытка воспроизвести проблему в системе Red Hat Enterprise Linux 5.7 терпит неудачу в обратном направлении: что-то, что, вероятно, должно было потерпеть неудачу, не дает: tls_checkpeer yes с пустым tls_cacertdir каталог. Мне нужен SSL для работы в обеих системах; у нас есть смесь Ubuntu и RHEL.

Я перезапускал nscd после каждого изменения конфигурации.

Вот мои актуальные вопросы:

Спасибо.

И на клиенте, и на сервере попробуйте добавить следующее в /etc/ldap/ldap.conf

TLS_REQCERT never

Кстати, похоже, что в openldap SSL устарел, и лучше использовать TLS. Видеть http://httpd.apache.org/docs/2.2/mod/mod_ldap.html найдите "OpenLDAP SDK". Конфигурация такая же, за исключением того, что вы будете использовать порт 389 и не будете использовать "ldaps: //" в uri.