FusionDirectory: OpenLDAP com SSL ou TLS

1

Eu olhei em volta e encontrei muitas informações on-line sobre como configurar o TLS para o OpenLDAP. A idéia básica é adicionar os itens olcTLS para incluir cert, key, cacert em cn=config .

No entanto, com FusionDirectory , tentar usar ldapmodify me diz que cn=config não existe e quando tento criar cn=config , ele me diz (logado como administrador do LDAP) que eu não tenho direitos para criá-lo. Eu estava seguindo as estas instruções.

Então, recorri a editar o arquivo /etc/ldap/slapd.d/cn=config.ldif para adicionar os seguintes itens:

olcTLSCACertificate: /etc/ssl/certs/ca.cert
olcTLSCertificateFile: /etc/ssl/certs/fd.cert
olcTLSCertificateKeyFile: /etc/ssl/private/fd.key
olcTLSCipherSuite: SECURE256
olcTLSVerifyClient: try

Eu também editei /etc/default/slapd para incluir SLAPD_SERVICES="ldap:/// ldapi:/// ldaps:///"

  • Eu adicionei o usuário openldap ao grupo ssl-cert.
  • eu reiniciei o slapd.
  • Usando o ldapvi, cn=config não pode ser encontrado.
  • Mas slapcat -n0 | grep -i tls mostra as entradas olcTLS * que eu forçosamente adicionei ao arquivo.
  • Usando o Wireshark, posso ver que quando o cliente solicita START_TLS, o servidor diz que está tudo bem e mostra as cifras compatíveis. O cliente inicia um SSL Hello e o servidor responde com TCP FIN.
  • nmap mostra que as portas 389 & 636 estão abertos e também mostra as informações do certificado (Emissor: commonName = MyServer / organizationName = Teste), tipo de chave pública: rsa, bits de chave pública: 4096 e os hashes MD5 e SHA1 do certificado. Então é capaz de ler o cert & chave, as permissões são boas.

No entanto, as conexões SSL (636) e TLS (389) falham. Conexões 389 não criptografadas funcionam muito bem, exceto que no Wireshark eu vejo muita informação e isso me deixa desconfortável.

Então, qual é o negócio aqui?

  • o sistema operacional é o Debian Jessie 8.7
  • FusionDirectory 1.0.20
  • OpenLDAP 2.4.40
  • Certs criados com gnomint com extensões TLS.

Editar 15 de maio de 2017:

Eu corri openssl s_client -connect host.local -showcerts e mostrei o certificado, cifras negociadas, etc.

Client Certificate Types: RSA sign, DSA sign, ECDSA sign
Requested Signature Algorithms: 
RSA+SHA384:ECDSA+SHA384:RSA+SHA512:ECDSA+SHA512
Shared Requested Signature Algorithms: 
RSA+SHA384:ECDSA+SHA384:RSA+SHA512:ECDSA+SHA512
Peer signing digest: SHA512
Server Temp Key: ECDH, P-521, 521 bits
---
SSL handshake has read 4512 bytes and written 511 bytes
---
New, TLSv1/SSLv3, Cipher is ECDHE-RSA-AES256-GCM-SHA384
Server public key is 5120 bit
Secure Renegotiation IS supported
Compression: NONE
Expansion: NONE
No ALPN negotiated
SSL-Session:
    Protocol  : TLSv1.2
    Cipher    : ECDHE-RSA-AES256-GCM-SHA384
    Session-ID: 37EAADA00459F296BE972FB57B4A5....
    Session-ID-ctx: 
    Master-Key: 0F865CBEDA755F84E783.....
    Key-Arg   : None
    PSK identity: None
    PSK identity hint: None
    SRP username: None
    Start Time: 1494883911
    Timeout   : 300 (sec)
    Verify return code: 19 (self signed certificate in certificate chain)
---

No entanto, ldapsearch não funciona:

# ldapsearch -H ldaps://host.local:636 -xLL -v
ldap_initialize( ldaps://host.local:636/??base )
ldap_sasl_bind(SIMPLE): Can't contact LDAP server (-1)

A parte SSL funciona, mas não o resto.

    
por Richard Żak 04.05.2017 / 18:44

0 respostas