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:///"
cn=config
não pode ser encontrado. slapcat -n0 | grep -i tls
mostra as entradas olcTLS * que eu forçosamente adicionei ao arquivo. 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?
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.