ldap_result: Não é possível contatar o servidor LDAP (-1)

4

G'day, Eu configurei a máquina openldap-server que está rodando na porta 636. Eu também posso fazer telnet para esta porta a partir de outra máquina openldap-client. Para proteger a conexão, criei um certificado autoassinado no servidor usando este link insira a descrição do link aqui e copiou o arquivo de certificado para o cliente.

Eu tenho certeza que o SELinux é desabilitado em ambas as máquinas e também o arquivo cliente /etc/openldap/ldap.conf tem a opção TLS_REQCERT allow

A configuração detalhada da máquina do cliente é:

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

e o arquivo nslcd:

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

Se eu não usar SSL, o cliente ldap terá acesso a todos os usuários do ldap. Mas, quando eu mudo a configuração para usar TLS via authconfig-tui, ldaps: //ad.xx.dev: 636, então ele falha.

Os logs dizem que o cliente se conecta com sucesso ao servidor, mas, em seguida, o servidor descarta a conexão, conforme mostrado aqui:

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

A execução de openssl mostra que o cliente não pode encontrar nenhum certificado no servidor, o que não é razoável, porque tenho tudo corrigido:

# 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 O authconfg-tui gera seu novo CACERTDIR toda vez que sobrescreve a configuração anterior. Portanto, eu também coloquei o arquivo de certificado na pasta / etc / openldap / cacerts.

Minha máquina cliente é o CentOS7 e o servidor é a instância do Redhat ec2.

Alguém pode me dar algumas dicas para solucionar isso?

    
por user388145 29.11.2016 / 16:09

2 respostas

4

STARTTLS significa "TLS explícito" onde a conexão é estabelecida na porta regular e, em seguida, o comando STARTTLS é enviado para iniciar SSL aperto de mão e mude para o modo de proteção.

Para se conectar, tente adicionar -Z ou -ZZ alternar para ldapsearch :

ldapsearch -x -d 1 -ZZ

é fazer com que o cliente use starttls

Eu tenho medo que o OpenSSL não suporte starttls para o protocolo LDAP agora (veja página de manual man s_client about -starttls parameter)

    
por 05.12.2016 / 07:29
1

Para deixar claro: você configurou o uso de TLS no servidor OpenLDAP?

Você ainda precisa definir alguns parâmetros. Para referência, verifique o link

Pelo que entendi, seu cliente se conecta à máquina LDAP, mas a máquina LDAP não sabe qual certificado deve ser entregue ao cliente.

Poderia, por favor, verificar ou falsificar o meu palpite?

    
por 01.12.2016 / 22:18