Alguns sistemas não podem se conectar ao ldap via ldaps, mas outros podem, é o certificado curinga?

12

Ao tentar estabelecer conexões de ldaps com meu servidor Novel eDirectory 8.8, às vezes preciso colocar TLS_REQCERT never no arquivo ldap.conf dos servidores clientes. Obviamente, esta é uma má ideia.

O comando que eu executo é algo assim com credenciais que realmente funcionam ...

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

No Ubuntu 13.10, funciona bem.

No SLES, funciona bem.

No CentOS 6.5, ele retorna:

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

Agora, o certificado que importei é um certificado curinga adquirido da DigiCert. Meu colega de trabalho encontrou alguns relatórios indicando que alguns sistemas têm problemas com curingas.

Então, o certificado curinga é o culpado? Se sim, como faço para corrigir isso?

Se não for o certificado curinga, então o que é isso?

Seguindo a sugestão de Andrew Schulman, adicionei -d1 ao meu comando ldapsearch. Aqui está o que acabei com:

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)

Pelo que isso diz, o CentOS não confia no DigiCert? Ou o CentOS não tem uma lista de emissores confiáveis?

    
por David R. 01.03.2014 / 07:05

3 respostas

8

O ldapsearch está procurando em / etc / openldap / cacerts por seu armazenamento de certificados de CA confiáveis, e isso aparentemente não está configurado, e portanto está rejeitando o certificado, já que não pode construir uma cadeia de confiança para ele. Se o ldapsearch estivesse usando o OpenSSL, precisaria de uma coleção de formatos "hashdir" como produzida por, e. o programa "authconfig" da Red Hat, ou um único arquivo com uma lista simples de certificados confiáveis. A referência aqui para "moznss" sugere que esta ldapsearch é construída contra o Mozilla NSS, caso em que você precisa usar o "certutil" para fazer o db do certificado (ou melhor, apontá-lo no armazenamento de certificados do sistema NSS, se houver um) .

Nos sistemas em que ele está trabalhando, o ldapsearch deve ter um armazenamento de certificados em funcionamento, talvez porque os pacotes do OpenLDAP sejam construídos em vez do OpenSSL (ou talvez haja uma loja no estilo NSS disponível).

    
por 05.03.2014 / 03:57
12

O ldapsearch dirá "Não é possível contatar o servidor LDAP" se não puder verificar o certificado TLS. Adicione -d1 ao seu comando ldapsearch e verifique as linhas de saída que começam com "TLS:" para obter mais informações sobre se a conexão TLS está falhando e por quê.

    
por 01.03.2014 / 10:33
8

A solução depende da sua instalação:

  • Se você estiver usando um certificado não válido , poderá forçá-lo a aceitar a configuração de /etc/openldap/ldap.conf com

    TLS_REQCERT allow
    

    ou

    TLS_REQCERT never
    
  • Se você estiver usando um certificado válido provavelmente sua instalação do ldap não sabe onde armazenar certificados de CA confiáveis (provavelmente dependendo da instalação do OpenSSL). Em seguida, você pode tentar definir sua localização e forçar a verificação da configuração de /etc/openldap/ldap.conf com

    TLS_CACERT /etc/openldap/cacert
    TLS_REQCERT demand
    

    /etc/openldap/cacert pode ser isso ou estar localizado em qualquer caminho. Deve conter a cadeia de certificados da sua CA. Pode ser um único arquivo com uma lista simples de certificados confiáveis.

Os caminhos de notas dependem do provedor ldap. Pode ser /etc/ldap ou /etc/openldap ou mais.

    
por 09.01.2016 / 18:29