ldap_result: Не удается связаться с сервером LDAP (-1)

Доброго времени суток, Я настроил машину openldap-server, которая работает на порту 636. Я также могу подключиться к этому порту через telnet с другой машины openldap-client. Чтобы защитить соединение, я создал самоподписанный сертификат на сервере по этой ссылке введите описание ссылки здесь а затем скопировал файл сертификата на клиент.

Я убедился, что SELinux отключен на обеих машинах, а также в клиентском файле /etc/openldap/ldap.conf есть опция TLS_REQCERT allow

Подробная конфигурация клиентской машины:

# cat ldap.conf
URI ldap://ad.dfsi.dev:636
BASE dc=dfsi,dc=dev
TLS_CACERTDIR /etc/openldap/cacerts
TLS_REQCERT allow

и файл nslcd :

# cat /etc/nslcd.conf
tls_reqcert allow
ssl start_tls
tls_cacertdir /etc/openldap/cacerts
tls_reqcert allow

Если я не использую SSL, то клиент ldap получает доступ ко всем пользователям ldap. Но когда я изменяю конфигурацию для использования TLS через authconfig-tui, ldaps: //ad.xx.dev: 636, он терпит неудачу.

Журналы говорят, что клиент успешно подключается к серверу, но затем сервер разрывает соединение, как показано здесь:

ldapsearch -x -d 1
ldap_create
ldap_sasl_bind
ldap_send_initial_request
ldap_new_connection 1 1 0
ldap_int_open_connection
ldap_connect_to_host: TCP ad.dfsi.dev:636
ldap_new_socket: 3
ldap_prepare_socket: 3
ldap_connect_to_host: Trying xx.xx.xx.xx:636
ldap_pvt_connect: fd: 3 tm: -1 async: 0
attempting to connect: 
connect success
ldap_open_defconn: successful
ldap_send_server_request
ber_scanf fmt ({it) ber:
ber_scanf fmt ({i) ber:
ber_flush2: 14 bytes to sd 3
ldap_result ld 0x7f8f75e1d150 msgid 1
wait4msg ld 0x7f8f75e1d150 msgid 1 (infinite timeout)
wait4msg continue ld 0x7f8f75e1d150 msgid 1 all 1
** ld 0x7f8f75e1d150 Connections:
* host: ad.dfsi.dev  port: 636  (default)
  refcnt: 2  status: Connected
  last used: Tue Nov 29 15:01:28 2016


** ld 0x7f8f75e1d150 Outstanding Requests:
 * msgid 1,  origid 1, status InProgress
   outstanding referrals 0, parent count 0
  ld 0x7f8f75e1d150 request count 1 (abandoned 0)
** ld 0x7f8f75e1d150 Response Queue:
   Empty
  ld 0x7f8f75e1d150 response count 0
ldap_chkResponseList ld 0x7f8f75e1d150 msgid 1 all 1
ldap_chkResponseList returns ld 0x7f8f75e1d150 NULL
ldap_int_select
read1msg: ld 0x7f8f75e1d150 msgid 1 all 1
ber_get_next
ldap_err2string
ldap_result: Can't contact LDAP server (-1)
ldap_free_request (origid 1, msgid 1)
ldap_free_connection 1 1
ldap_free_connection: actually freed

Запуск openssl показывает, что клиент не может найти никаких сертификатов на сервере, что неразумно, потому что у меня там все исправлено:

# openssl s_client -showcerts -connect ad.dfsi.dev:636 
CONNECTED(00000003)
140330386184096:error:140790E5:SSL routines:SSL23_WRITE:ssl handshake failure:s23_lib.c:184:
---
no peer certificate available
---
No client certificate CA names sent
---
SSL handshake has read 0 bytes and written 247 bytes
---
New, (NONE), Cipher is (NONE)
Secure Renegotiation IS NOT supported
Compression: NONE
Expansion: NONE
---

nss-pam authconfg-tui каждый раз генерирует новый CACERTDIR который имеет приоритет перед предыдущей конфигурацией. Поэтому я также поместил файл сертификата в папку / etc / openldap / cacerts.

Моя клиентская машина - CentOS7, а сервер - экземпляр Redhat ec2.

Кто-нибудь может дать мне несколько советов по устранению этой проблемы?

5
задан 29 November 2016 в 17:09
3 ответа

STARTTLS означает «явный TLS», когда соединение устанавливается на обычном порту , а затем отправляется команда STARTTLS для инициирования подтверждения связи SSL и переключения на защиту режим.

Чтобы подключиться, попробуйте добавить -Z или -ZZ переключить на ldapsearch :

ldapsearch -x -d 1 -ZZ

- заставить клиента использовать starttls

Боюсь, что OpenSSL сейчас не поддерживает starttls для протокола LDAP (см. Справочную страницу man s_client о параметре -starttls )

5
ответ дан 3 December 2019 в 01:43

Чтобы прояснить это: вы настроили использование TLS на сервере OpenLDAP?

Вам все еще нужно установить несколько параметров. Для справки см. http://www.openldap.org/doc/admin24/tls.html#Server%20Configuration

Насколько я понимаю, ваш клиент подключается к машине LDAP, но машина LDAP не знает какой сертификат доставить клиенту.

Не могли бы вы проверить или опровергнуть мое предположение?

1
ответ дан 3 December 2019 в 01:43

вам, вероятно, следовало поместить ldaps: в свой URL-адрес, а не только ldap:

-2
ответ дан 3 December 2019 в 01:43

Теги

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