BOMBOLOM.COM

(ldap) Configurar TLS no OpenLDAP

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!

20.09.2007 | Ler mais | Comentários | Tags , , ,

Voltar à Página principal | Made with PyBlosxom