Anteriormente demostré cómo configurar TLS en OpenLDAP empleando la configuración estática (en el archivo slapd.conf). Ahora voy a demostrar cómo hacerlo cuando se está utilizando la configuración dinámica cn=config (directorio slapd.d)



Luego de instalar OpenLDAP en Linux, la configuración por defecto no incluye el soporte para TLS a pesar de que el puerto 636 se encuentra abierto y aceptando peticiones. Es posible verificar que TLS no funciona haciendo una consulta con ldapsearch:

root@ldap:~# ldapsearch -x -H ldaps://localhost:636 -W -D "cn=root,dc=linuxito,dc=com" -b "dc=linuxito,dc=com" "(objectClass=organization)"
Enter LDAP Password: 
ldap_sasl_bind(SIMPLE): Can't contact LDAP server (-1)

Antes de comenzar es necesario disponer de los certificados SSL (del servidor y autoridad certificante intermedia, en caso de ser necesario) junto con la clave privada. Si no se dispone de un certificado es posible crear un certificado autofirmado para pruebas.

Copiar los certificados y clave privada en un directorio ssl dentro de la configuración de OpenLDAP:

# cd /usr/local/etc/openldap/
# mkdir ssl
# mv /home/admin/server* ssl/

Setear los permisos adecuados para los certificados y clave. El usuario ldap debe poder leer los certificados y la clave privada, sino el demonio no inicia:

# chown -R root:ldap .
# chmod 0400 *
# chmod 0550 .

Deben quedar como se observa a continuación:

root@ldap:/usr/local/etc/openldap# ls -l ssl/server*
-r--r----- 1 root ldap 2199 jun 23 09:51 ssl/server-ca.crt
-r--r----- 1 root ldap 1704 jun 23 09:51 ssl/server.crt
-r--r----- 1 root ldap 4135 jun 23 09:51 ssl/server.key

Habiendo comprobado que slapd no funciona sobre TLS, será necesario configurarlo. Cuando se utiliza la configuración dinámica (OLC), se debe crear un archivo ldiff para insertar con ldapadd o ldapmodify:

# nano tls_config.ldiff

Agregar el siguiente contenido:

# cn=config base (global section)

dn: cn=config
changetype: modify
# Security - TLS section
replace: olcTLSCertificateFile
olcTLSCertificateFile: /usr/local/etc/openldap/ssl/server.crt
-
replace: olcTLSCertificateKeyFile
olcTLSCertificateKeyFile: /usr/local/etc/openldap/ssl/server.key
-
replace: olcTLSCACertificateFile
olcTLSCACertificateFile: /usr/local/etc/openldap/ssl/server-ca.crt
-
# the following directive is the default but 
# is explicitly included for visibility reasons
replace: olcTLSVerifyClient
olcTLSVerifyClient: never

Las variables olcTLSCertificateFile, olcTLSCertificateKeyFile y olcTLSCACertificateFile configuran las rutas al certificado, clave privada y certificado de la autoridad certificante intermedia respectivamente.

Agregar la configuración en el ldiff con ldapadd:

root@ldap:/usr/local/etc/openldap# ldapadd -f tls_config.ldiff -x -D "cn=admin,cn=config" -W
Enter LDAP Password: 
modifying entry "cn=config"


Luego es necesario reiniciar el servicio:

# service slapd restart

Finalmente, verificar el funcionamiento haciendo una consulta sobre TLS:

root@ldap:/usr/local/etc/openldap# ldapsearch -x -H ldaps://localhost:636 -W -D "cn=root,dc=linuxito,dc=com" -b "dc=linuxito,dc=com" "(objectClass=organization)"
Enter LDAP Password: 
# extended LDIF
#
# LDAPv3
# base <dc=linuxito,dc=com> with scope subtree
# filter: (objectClass=organization)
# requesting: ALL
#

# linuxito.com
dn: dc=linuxito,dc=com
objectClass: dcObject
objectClass: organization
dc: linuxito
o: Linuxito
description: El mejor blog sobre GNU/Linux de habla hispana

# search result
search: 2
result: 0 Success

# numResponses: 2
# numEntries: 1

Para más información, consultar las referencias a continuación.

Referencias


Tal vez pueda interesarte


Compartí este artículo