Windows Server

Active Directory : configuración de LDAPS con certificado autofirmado

I. Introducción

En este tutorial, le mostraremos cómo cambiar de LDAP a LDAPS en un entorno Active Directory, utilizando un certificado autofirmado. Este método tiene la ventaja de no requerir una autoridad de certificación.

Para proteger los flujos LDAP en un entorno Microsoft, los administradores disponen de varias soluciones. La opción recomendada por Microsoft para asegurar los intercambios entre controladores de dominio y máquinas Windows es el uso de LDAPS Signing (tema de otro tutorial), o firma LDAP si lo prefiere. Otra opción disponible es la mencionada en este artículo: LDAPS (LDAP sobre SSL). Esto es particularmente útil para asegurar las conexiones entre ciertos servicios/aplicaciones y el Directorio Activo.

Independientemente del método utilizado, el objetivo es asegurar las comunicaciones LDAP entre el cliente y el servidor. En este caso, con LDAPS, se utilizará un certificado SSL/TLS autofirmado para cifrar los intercambios de datos, lo que ofrece una mayor protección contra determinados ataques, incluidos los ataques de intermediario.

Si utilizas equipos con Windows 10 y/o Windows 11, y quieres asegurar las conexiones LDAP, no necesitas implementar LDAPS. De hecho, es mejor forzar la activación de LDAP Signing.

He aquí un ejemplo concreto de cómo se puede utilizar LDAPS: estás ejecutando una aplicación y te gustaría implementar la autenticación LDAP para que los usuarios puedan iniciar sesión con su cuenta de Active Directory. En lugar de utilizar una simple conexión LDAP, puedes cambiar a LDAPS para añadir una importante capa de seguridad a esta conexión. En un futuro tutorial, tomaremos el ejemplo de la aplicación GLPI, ya que este es un caso de uso muy frecuente.

II. LDAPS con un certificado autofirmado: ¿Para quién? ¿Por qué?

En un entorno Active Directory, hay dos formas de implementar LDAPS:

  • Utilice un certificado TLS obtenido de una autoridad de certificación empresarial. Por ejemplo, con una autoridad de certificación de Active Directory gestionada mediante la función ADCS.
  • Utilice un certificado TLS creado en el servidor y autofirmado, es decir, no emitido por una autoridad de certificación.

La ventaja del método presentado en este artículo es que no requiere la implementación de una autoridad de certificación de Active Directory (también conocida como "PKI"). Así que, sin siquiera instalar ADCS (o un equivalente), puedes asegurar las conexiones LDAP cambiando a LDAPS.

Este método es ventajoso para las organizaciones que carecen de los recursos técnicos y humanos necesarios para implantar, administrar y mantener una autoridad de certificación.

Para el resto del tutorial, supondremos que ya dispone de un servidor Active Directory en funcionamiento, así como de un servidor o estación de trabajo que sea miembro del dominio para probar la conexión.

III. Creación de un certificado autofirmado para LDAPS

El primer paso es crear el certificado autofirmado. A lo largo de este procedimiento, priorizaremos el uso de PowerShell para una mayor eficiencia y configuración automatizada. La máquina desde la que se ejecutan los comandos debe tener instalado el módulo ActiveDirectory de PowerShell (es el caso de un controlador de dominio).

Nota : Te recomiendo que copies y pegues todas las líneas de código PowerShell y las insertes en el mismo script, para asegurarte de que se ejecuta sin problemas. Esto se debe a que se utilizan las mismas variables en todo el procedimiento, y existe un vínculo entre los distintos pasos. Además, ejecute estos comandos en un controlador de dominio, ya sea localmente o a través de una sesión PSRemoting.

Debe crear el certificado autofirmado con el nombre de dominio de Active Directory (nombre DNS) como "asunto" y los nombres DNS de los DC como "DnsName", además del nombre de dominio.

Los siguientes comandos realizarán esta acción, creando un certificado válido durante 1 año. No necesita modificar el código siguiente, recuperará automáticamente los valores correspondientes a su dominio.

# List of all DCs in the current domain and domain root
$ListOfDC = (Get-ADDomainController -Filter *).Hostname
$ListOfDC += $((Get-ADDomain).DNSroot)

# Certificate validity period (1 year)
$ExpirationDate = (Get-Date).AddYears(1)

# Creating a self-signed certificate
$MyLDAPSCert = New-SelfSignedCertificate -Subject $((Get-ADDomain).DNSroot) -DnsName $ListOfDC -CertStoreLocation cert:/LocalMachine/My -NotAfter $ExpirationDate
$MyLDAPSCertThumbprint = $MyLDAPSCert.Thumbprint

$MyLDAPSCert | Format-list

Después de ejecutar este bloque de código, deberías tener un certificado autofirmado listo para usar. La información sobre este certificado se mostrará al final del comando.

IV. Exportación del certificado autofirmado

El segundo paso es exportar el certificado autofirmado que acabamos de crear. ¿Para qué? Hay dos respuestas a esta pregunta:

  • Exportar el certificado, sin la clave privada (en formato CER), para poder importarlo en servidores donde haya un servicio o aplicación que necesite poder establecer conexiones LDAPS.
  • Exporte el certificado, junto con la clave privada (en formato PFX), para poder importarlo en otros controladores de dominio de Active Directory del dominio.

El siguiente código generará dos archivos de salida, en la raíz de"C:". Si lo desea, puede cambiar la ruta modificando el parámetro"-FilePath" de los programas"Export-Certificate" y "Exportar certificado Pfx".

# Export certificate (without private key)
Export-Certificate -Cert $MyLDAPSCert -FilePath "C:\Cert-LDAPS-$((Get-ADDomain).DNSroot)-Public.cer"
    
# Export certificate (PFX) for import on other DCs
# Password-protected export : $MotDePasse = ConvertTo-SecureString -String 'Password' -Force -AsPlainText
Export-PfxCertificate -Cert $MyLDAPSCert -FilePath "C:\Cert-LDAPS-$((Get-ADDomain).DNSroot).pfx" -ProtectTo $env:username

Tenga en cuenta que el certificado PFX (segundo comando) está protegido y la autorización está asociada a la cuenta utilizada para ejecutar el comando. Si lo prefiere, sustituya el parámetro "-ProtectTo" por "-Password" y especifique una contraseña mediante una cadena segura.

Al final, obtenemos dos archivos :

  • Cert-LDAPS-it-connect.local-Public.cer
  • Cert-LDAPS-it-connect.local.pfx

V. Copiar el certificado en el almacén de la CA de confianza

En el controlador de dominio, el certificado autofirmado que hemos creado se almacena en el almacén "Personal" del almacén de certificados. Para que la configuración funcione, es necesario copiar y pegar este certificado en el almacén "Entidades de certificación raíz de confianza".

Aunque esto se puede hacer con una simple operación de copiar y pegar utilizando la consola MMC de gestión de certificados, seguiremos con PowerShell.

Aquí está el código a ejecutar (no requiere adaptación):

# Copy the certificate from the "Personal" store to the "Root CA" store
$CertStoreCA = New-Object System.Security.Cryptography.X509Certificates.X509Store -ArgumentList "Root","LocalMachine"
$CertStoreCA.Open("ReadWrite")
$GetMyLDAPSCert = Get-ChildItem -Path "Cert:\LocalMachine\My" | Where-Object { $_.Thumbprint -eq $MyLDAPSCertThumbprint }
$CertStoreCA.Add($GetMyLDAPSCert)
$CertStoreCA.Close()

VI. Importación del certificado PFX en un controlador de dominio

Si su entorno tiene varios controladores de dominio AD, deberá importar el certificado en cada uno de estos servidores. Debe transferir el archivo"Cert-LDAPS-it-connect.local.pfx" a cada DC y ejecutar el siguiente comando (en este caso, el certificado se ha copiado en "C:"):

Import-PfxCertificate -CertStoreLocation Cert\:LocalMachine\my -FilePath "C:\Cert-LDAPS-it-connect.local.pfx"

Si utiliza la interfaz gráfica de usuario, simplemente haga doble clic en el archivo PFX y siga las instrucciones del asistente.

Importar certificado PFX LDAPS en DC

A partir de ahora, es posible intentar una conexión LDAPS entre dos controladores de dominio. Como alternativa, podríamos haber ejecutado la prueba localmente, en el primer DC.

VII. Prueba de la conexión LDAPS

¿Cómo probar la conexión LDAPS? Vamos a utilizar la herramienta "ldp.exe" presente por defecto en Windows Server. Si ejecutas una prueba de conexión LDAPS antes de instalar el certificado, obtendrás un error como el siguiente.

Recuerde : el certificado debe estar presente en el almacén de "Entidades de certificación raíz de confianza" del controlador de dominio, de lo contrario se rechazará la conexión.

Sólo tienes que buscar "ldp" o "ldp.exe" en el cuadro de búsqueda de tu servidor para abrir esta herramienta. A continuación, haga clic en "Conexión" y "Conectar". Rellene el formulario con el nombre DNS completo del servidor DC, indique el número de puerto "636" y marque la opción "SSL". Así:

Haga clic en "Aceptar" para ejecutar una prueba de conexión. Debería obtener un resultado similar al siguiente:

VIII. Conclusión

Siguiendo este tutorial, ahora tienes toda la información que necesitas para dejar de lado las conexiones LDAP en favor de las conexiones LDAPS, sin necesidad de implementar una autoridad de certificación. Otro artículo tratará sobre la obtención de un certificado para LDAPS con una autoridad de certificación ADCS.

author avatar
Florian Burnel Co-founder of IT-Connect
Systems and network engineer, co-founder of IT-Connect and Microsoft MVP "Cloud and Datacenter Management". I'd like to share my experience and discoveries through my articles. I'm a generalist with a particular interest in Microsoft solutions and scripting. Enjoy your reading.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.