# Certificados de controlador de dominio

{% hint style="info" %}
Esta función requiere la versión **1.6** o superior.
{% endhint %}

{% hint style="warning" %}
solo en SCEPman Enterprise Edition
{% endhint %}

Puedes usar SCEPman para emitir certificados de autenticación Kerberos a tus controladores de dominio. Esto permite que tus dispositivos unidos a AAD o híbridos se autentiquen sin problemas al acceder a recursos locales. Esto se puede usar para implementar la **confianza de clave híbrida para Windows Hello for Business**. SCEPman reemplazará la necesidad de una **infraestructura de clave pública**. Los detalles se pueden encontrar [aquí](https://docs.microsoft.com/en-us/windows/security/identity-protection/hello-for-business/hello-hybrid-key-trust-prereqs)

## CA raíz sin extensión de Uso Mejorado de Clave (EKU)

**Esta función tiene nuevos requisitos para la CA raíz.**\
Si estás actualizando desde una versión anterior como **1.6** debes generar una **nueva** CA raíz.\
Para admitir certificados de autenticación Kerberos, el certificado de la CA no debe contener ninguna extensión de Uso Mejorado de Clave (EKU) o debe incluir Autenticación Kerberos e Inicio de sesión con tarjeta inteligente.

Si estás comenzando con SCEPman **1.6** y generando la CA raíz con nuestro SCEPman, puedes omitir los siguientes pasos.\
De lo contrario, sigue esta guía para generar una nueva CA raíz.

{% hint style="warning" %}
Si generas un nuevo certificado de CA, debes actualizar tus directivas de Intune e implementar la nueva CA raíz y los nuevos certificados de usuario y dispositivo.
{% endhint %}

1. Ve a tu **Key Vault**
2. Comprueba si tu cuenta de usuario está agregada a las **Directivas de acceso** con todos los permisos de certificado
3. Ve a **Certificados**, selecciona tu certificado de CA y haz clic en **Eliminar**
4. Después de haber eliminado correctamente el certificado de CA, debes hacer clic en **Administrar certificados eliminados**
5. Selecciona tu certificado de CA, que eliminaste en el paso 3, y haz clic en **Purgar** (Ten en cuenta que después de purgar el certificado no podrás restaurarlo!)
6. Ahora reinicia tus App Services de SCEPman
7. Una vez reiniciados tus App Services, abre el Panel de SCEPman navegando a la URL de SCEPman
8. Puedes ver la sección **Problemas de configuración**, sigue los pasos de esta sección.
9. Después de haber generado el nuevo certificado de CA, puedes comprobar la idoneidad de la CA en el Panel de SCEPman.

Idoneidad de la CA en el Panel de SCEPman:

![](https://4115997120-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LoGejQeUQcw7lqnQ3WX%2Fuploads%2Fgit-blob-4998f1e56f64d240e4e8d23a9aa886cc8b49724b%2F2022-05-27%2011_09_46-Window.png?alt=media)

## Cambios de configuración en el servicio SCEPman

Para habilitar la función, debes agregar dos configuraciones de aplicación en tu servicio SCEPman. En la implementación actual, usamos una clave precompartida (contraseña) para las solicitudes de DC.\
**Genera una nueva clave/contraseña y guárdala en un lugar seguro.** (la necesitarás en los siguientes pasos y más adelante, en los controladores de dominio)

1. Navega a **App Services**
2. Luego elige tu aplicación SCEPman
3. Después, en **Configuración** haz clic en **Variables de entorno**
4. Selecciona Agregar
5. Escribe **AppConfig:DCValidation:Enabled** como Nombre (usa \_\_ en lugar de : para SCEPman basado en Linux)
6. Escribe **verdadero** como Valor
7. Confirma con **Aceptar**
8. Selecciona **Agregar** de nuevo
9. Escribe **AppConfig:DCValidation:RequestPassword** como Nombre (usa \_\_ en lugar de : para SCEPman basado en Linux)
10. Escribe tu **clave/contraseña**, que generaste anteriormente, como Valor
11. Confirma con **Aceptar**
12. Guarda la configuración de la aplicación

## Confiar en el certificado de CA en el dominio para la autenticación Kerberos

Los certificados usados para la autenticación Kerberos deben ser confiables dentro del dominio AD como certificados de CA de autenticación. Descarga el certificado de CA desde el Panel de SCEPman. Si guardaste el archivo como `scepman-root.cer`, puedes publicar el certificado de CA de SCEPman (ya sea una CA raíz o una CA intermedia) con el siguiente comando usando una cuenta con derechos de Administrador empresarial:

```
certutil -f -dsPublish scepman-root.cer NTAuthCA
```

De manera análoga, ejecuta el siguiente comando para enviar el certificado de CA raíz (es decir, el certificado de CA de SCEPman o, en caso de que SCEPman sea una CA intermedia, la CA raíz de la cadena de certificados de CA de SCEPman) al almacén de certificados de raíz de confianza para todas las máquinas del bosque AD:

```
certutil -f -dsPublish scepman-root.cer RootCA
```

Después, el certificado de CA generalmente es confiable en AD y, especialmente, confiable para la autenticación Kerberos. Sin embargo, lleva algo de tiempo (en la configuración predeterminada hasta 8 horas) hasta que todos los dispositivos reciban esta configuración. Puedes acelerar este proceso en cualquier máquina ejecutando `gpupdate /force`, por ejemplo, en los controladores de dominio.

Esto asegura que los certificados de DC sean confiables dentro del dominio. También son confiables en todos los dispositivos administrados por Intune dentro del ámbito de un perfil de certificado de confianza que distribuye el certificado de CA raíz. Puede ser necesario distribuir la CA raíz manualmente a otros servicios como dispositivos o servicios en la nube para que los certificados de DC sean confiables para todos los sistemas.

## Instalación en el cliente

Luego debes descargar nuestro software cliente SCEP de código abierto [SCEPClient](https://github.com/scepman/scepclient/releases). Las versiones con el sufijo *-framework* usan .NET Framework 4.6.2, que viene preinstalado en Windows Server 2016 y es compatible con versiones más nuevas. Otras versiones requieren que .NET Core Runtime esté instalado en los sistemas de destino.

Ejecuta el siguiente comando en un símbolo del sistema elevado en un controlador de dominio para recibir un certificado de controlador de dominio de SCEPman:

```
ScepClient.exe newdccert https://your-scepman-domain/dc RequestPassword
```

Debes agregar la URL de SCEPman en el comando anterior, pero mantén la ruta `/dc`. Reemplaza `RequestPassword` con la clave/contraseña segura que generaste anteriormente.

La contraseña de solicitud se cifra con el certificado de CA de SCEPman, por lo que solo SCEPman puede leerla. Los certificados de controlador de dominio solo se emiten con la contraseña de solicitud correcta.

### Renovación automática de certificados

{% hint style="warning" %}
El comando anterior solicita un nuevo certificado de DC, haya o no ya un certificado válido. Consulta la siguiente sección para aprender a renovar certificados solo si el certificado existente está a punto de expirar.
{% endhint %}

Para una renovación totalmente automatizada de certificados, deberías distribuir ScepClient a **todos** tus controladores de dominio, junto con el script de PowerShell [enroll-dc-certificate.ps1](https://github.com/scepman/scepclient/blob/Core31/enroll-dc-certificate.ps1). Agrega una tarea programada que ejecute el siguiente comando en un contexto SYSTEM (adapta la URL y la contraseña de solicitud):

```
powershell -ExecutionPolicy RemoteSigned -File c:\scepman\enroll-dc-certificate.ps1 -SCEPURL https://your-scepman-domain/dc -SCEPChallenge RequestPassword -LogToFile
```

Asegúrate de que el script de PowerShell se encuentre en el mismo directorio que SCEPClient.exe y sus dependencias adicionales.

![Configuración de la acción de ejecución en la tarea programada](https://4115997120-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LoGejQeUQcw7lqnQ3WX%2Fuploads%2Fgit-blob-732f9e212c1622579da03c12e497e2b1b632aaab%2Fimage%20\(17\).png?alt=media)

Esto comprueba si existen certificados de DC en el almacén de la máquina. Solo si no hay certificados adecuados con al menos 30 días de validez, usa ScepClient.exe para solicitar un nuevo certificado de DC a SCEPman. Si quieres modificar el umbral de 30 días, usa el parámetro -ValidityThresholdDays del script de PowerShell.

El script escribe un archivo de registro continuo en el directorio donde está almacenado. Si no quieres este archivo de registro, omite el `-LogToFile` parámetro. En su lugar, puedes redirigir los flujos de Información, Error y/o Depuración a archivos (por ejemplo `6>logfile.txt 2>&1`).

Para WHfB, todos los DC que ejecuten la versión 2016 o posterior necesitan un certificado de autenticación Kerberos. Los DC más antiguos reenvían las solicitudes de autenticación a DC más nuevos, por lo que no necesariamente requieren un certificado de autenticación Kerberos. Sin embargo, es una buena práctica proporcionárselos también.

### Retirada de una PKI interna existente

Asegúrate de que las PKI internas no inscriban certificados de DC (plantillas de certificado "Domain Controller", "Domain Controller Authentication" y "Kerberos Authentication") en paralelo con SCEPman. De lo contrario, los DC podrían usar el certificado de DC de la PKI interna, que se considera no confiable si, por ejemplo, el CDP no es accesible. El certificado de DC de SCEPman puede usarse para todos los fines para los que pueden usarse los certificados de las plantillas mencionadas anteriormente, por ejemplo, autenticación Kerberos y LDAPS.

La forma más sencilla de lograrlo es dejar de emitir certificados internos para las plantillas "Domain Controller", "Domain Controller Authentication" y "Kerberos Authentication". En el complemento MMC de la Autoridad de certificación, elimina estas plantillas de la lista de plantillas emitidas de cada CA interna. Luego, elimina los certificados ya emitidos por la CA interna de los almacenes "MY" de tus controladores de dominio (`certlm.msc` y navega a Personal). Incluso después de una `gpupdate /force`no debería aparecer ningún nuevo certificado de DC de la PKI interna en el almacén Personal del DC.
