Erro “Não é possível contatar o servidor LDAP (-1)” para LDAPS no servidor 2012

1

Ao tentar se conectar ao Active Directory no Window Server 2012 (possivelmente R2) sobre LDAPS , o ldapsearch produz um dos seguintes erros (no final de uma saída mais longa ):

$ ldapsearch -H ldaps://my.ad.com -v -b "dc=my,dc=ad,dc=com"
...
ldap_sasl_interactive_bind_s: Can't contact LDAP server (-1)
    additional info: A TLS packet with unexpected length was received.

ou

$ ldapsearch -H ldaps://my.ad.com -v -b "dc=my,dc=ad,dc=com" -D "[email protected]"
...
ldap_sasl_bind(SIMPLE): Can't contact LDAP server (-1)

ou

$ ldapsearch -H ldaps://my.ad.com -d 1 -v -b "dc=my,dc=ad,dc=com" -D "[email protected]" -W
...
TLS: can't connect: A TLS packet with unexpected length was received..
ldap_err2string
ldap_sasl_bind(SIMPLE): Can't contact LDAP server (-1)

O certificado SSL foi instalado e verificado usando s_client, por exemplo:

openssl s_client -connect my.ad.com:636 -CApath /etc/ssl/certs/

... que gera uma saída válida que termina em algo como:

New, TLSv1/SSLv3, Cipher is ECDHE-RSA-AES256-SHA384
Server public key is 2048 bit
Secure Renegotiation IS supported
Compression: NONE
Expansion: NONE
SSL-Session:
    Protocol  : TLSv1.2
    Cipher    : ECDHE-RSA-AES256-SHA384
    Session-ID: 2938000006304A580F4FA7C47F3C0C64FCF43B83B666D24B247775E24DC6B5B1
    Session-ID-ctx:
    Master-Key: C835DACE990D164C2F97F594B1D6989179735CE38AD822165F7C20C99C826DEE7E91816693AA72B08ADD85EDB6493578
    Key-Arg   : None
    PSK identity: None
    PSK identity hint: None
    SRP username: None
    Start Time: 1490979674
    Timeout   : 300 (sec)
    Verify return code: 0 (ok)
---
    
por claytond 31.03.2017 / 22:51

1 resposta

1

Esse problema pode ocorrer porque a implementação do TLS 1.2 no Windows 2012 é incompatível com algumas versões de bibliotecas do Linux, como gnutls .

Se este é o seu problema, desabilitar o TLS 1.2 irá restaurar a funcionalidade. As seguintes opções podem estar disponíveis para você:

No Linux CLI (talvez seja necessário escapar do ponto de exclamação, encontrado aqui ):

export LDAPTLS_CIPHER_SUITE=NORMAL:!VERS-TLS1.2

Em PHP no Linux (encontrado aqui e aqui ):

putenv(‘LDAPTLS_CIPHER_SUITE=NORMAL:!VERS-TLS1.2’);

No Windows Server 2012, não consigo encontrar instruções concisas, mas estas são as entradas de registro . Editar diretamente o registro pode ser perigoso, portanto, use com cuidado.

    
por 31.03.2017 / 22:51