Já há algum tempo vimos como se instala um servidor ldap, neste artigo.
Agora vamos estudar a forma de encriptar estas ligações.
Uma vez que vamos ter dados sensíveis no servidor, convém encriptar todas as conversações com o mesmo. Isto faz-se configurando as opções de TLS (Transport layer Security). É necessário também criar um certificado digital que vai ser alojado no nosso servidor.
Para facilitar este trabalho, a distribuição do OpenSSL instala o script CA.pl. No Debian, este script é instalado em /usr/lib/ssl/misc/CA.pl, noutras distribuições poderá estar noutros caminhos. Vamos invocar este script com o argumento -newcert:
# /usr/lib/ssl/misc/CA.pl -newcert Generating a 1024 bit RSA private key .....++++++ ..............++++++ writing new private key to 'newkey.pem' Enter PEM pass phrase: Verifying - Enter PEM pass phrase: ----- You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter '.', the field will be left blank. ----- Country Name (2 letter code) [AU]:PT State or Province Name (full name) [Some-State]:. Locality Name (eg, city) []:Lisboa Organization Name (eg, company) [Internet Widgits Pty Ltd]:Gato Pardo Incorporated Organizational Unit Name (eg, section) []:TI Common Name (eg, YOUR name) []:Helder Guerreiro Email Address []:helder@example.com Certificate is in newcert.pem, private key is in newkey.pem
Foram criados dois ficheiros na directoria actual:
# ll new* -rw-r--r-- 1 root root 1289 2007-06-04 13:26 newcert.pem -rw-r--r-- 1 root root 963 2007-06-04 13:26 newkey.pem
O ficheiro newcert.pem contém o certificado auto assinado. O ficheiro newkey.pem contém a chave (protegida por palavra passe usada para assinar este certificado). Para mantermos alguma sanidade neste processo convém mudar os nomes destes ficheiros para alguma coisa que faça sentido, por exemplo:
# mv newcert.pem slapd-cert.pem # mv newkey.pem slapd-key.pem
É de extrema importância que estes ficheiros não seja vistos por terceiros. Assim deveremos mudar-lhes a permissões para 0600:
# chmod 600 slapd-*.pem
Temos agora:
-rw------- 1 root root 1289 2007-06-04 13:26 slapd-cert.pem -rw------- 1 root root 963 2007-06-04 13:26 slapd-key.pem
Temos aqui um pequeno problema. A chave criada é protegida por palavra passe, cada vez que iniciarmos o servidor vai-nos ser pedida esta palavra passe. Se quisermos que o servidor inicie automaticamente, sem ser necessário digitar a palavra passe, deve-se criar uma chave, sem palavra passe:
# openssl rsa -in slapd-key.pem -out nova_chave.pem
Devemos agora optar por usar a chave slapd-key.pem ou nova_chave.pem.
Finalmente, em relação à chave e ao certificado, devem-se mover para um sitio adequado no servidor, por exemplo:
# mv slapd-*.pem /etc/ldap # chown openldap:openldap slapd-*.pem
As linhas que se deverão acrescentar ao ficheiro /etc/ldap/slapd.conf são:
# Opções de TLS: TLSCipherSuite HIGH TLSCertificateFile /etc/ldap/slapd-cert.pem TLSCertificateKeyFile /etc/ldap/slapd-key.pem
Notas importantes: este certificado não é assinado por uma autoridade certificadora, assim não podemos estabelecer a corrente de confiança em relação ao certificado, quando estamos a ligar de redes inseguras. Antes de confiarmos nos processos de encriptação, convém tentar compreende-los da melhor forma possível, caso contrário, podemos pensar que temos uma configuração bastante segura, quando de facto não a temos. Assim, se houverem dúvidas, mais vale não utilizar encriptação, pelo menos temos a certeza de estarmos a estabelecer ligações inseguras!