Cuando se usan certificados autofirmados o certificados de una Autoridad de Certificacion (CA) no publica, los equipos cliente mostraran advertencias de confianza porque no reconocen la CA emisora. En lugar de instalar manualmente el certificado en cada maquina, puedes distribuir certificados raiz de confianza automaticamente a todos los equipos unidos al dominio usando Directivas de Grupo. Esta guia cubre el metodo de Directivas de Grupo, el enfoque por linea de comandos con certutil, Active Directory Certificate Services y los fundamentos de los almacenes de certificados.
Entendiendo los almacenes de certificados
Windows organiza los certificados en almacenes segun su proposito:
Almacenes de certificados de maquina
| Almacen | Proposito |
|---|---|
| Trusted Root Certification Authorities | Certificados de CA raiz en los que el equipo confia inherentemente. Todas las cadenas de certificados deben terminar en un certificado de este almacen. |
| Intermediate Certification Authorities | Certificados de CAs que son subordinadas a una raiz de confianza. Usados para completar cadenas de certificados. |
| Personal | Certificados emitidos al equipo (como certificados SSL para IIS). |
| Trusted Publishers | Certificados de firma de codigo de editores de software de confianza. |
Almacenes de certificados de usuario
Los almacenes de certificados de usuario tienen la misma estructura pero se aplican al usuario actual en lugar de la maquina. Los certificados en el almacen de maquina se aplican a todos los usuarios en ese equipo.
Ver los almacenes de certificados
Abre el administrador de certificados:
# Machine certificates (requires admin)
certlm.msc
# Current user certificates
certmgr.msc
O desde la linea de comandos:
# List certificates in the Trusted Root store
certutil -store Root
# List certificates in the machine personal store
certutil -store My
Metodo 1: Distribucion por Directivas de Grupo (Recomendado)
Las Directivas de Grupo son la forma mas confiable y escalable de distribuir certificados a equipos del dominio.
Paso 1: Exportar el certificado
Si aun no has exportado el certificado de la CA raiz, hazlo desde el servidor de la CA o desde cualquier maquina que lo tenga instalado:
# Export from the certificate store
certutil -store Root "CA Name" C:\certs\rootca.cer
# Or export from a certificate file
# Open certlm.msc, find the certificate, right-click > All Tasks > Export
# Choose DER encoded binary X.509 (.CER) or Base-64 encoded X.509 (.CER)
Paso 2: Crear o editar un objeto de Directiva de Grupo
- Abre Group Policy Management (
gpmc.msc) - Crea un nuevo GPO o edita uno existente
- Vincula el GPO al dominio (para todos los equipos) o a una OU especifica (para distribucion dirigida)
Paso 3: Importar el certificado
- En el Editor de GPO, navega a:
Computer Configuration > Policies > Windows Settings > Security Settings > Public Key Policies > Trusted Root Certification Authorities - Haz clic derecho en Trusted Root Certification Authorities y selecciona Import…
- Busca el archivo del certificado (
.cer,.crto.p7b) - Completa el asistente de importacion, asegurandote de que el almacen este establecido en Trusted Root Certification Authorities
Paso 4: Distribuir certificados intermedios (si es necesario)
Si la cadena de la CA incluye certificados intermedios, importalos por separado:
- Navega a:
Computer Configuration > Policies > Windows Settings > Security Settings > Public Key Policies > Intermediate Certification Authorities - Importa el o los certificados de la CA intermedia
Paso 5: Verificar la distribucion
Despues de que las Directivas de Grupo se actualicen (hasta 90 minutos, o fuerzalo inmediatamente):
# Force Group Policy update
gpupdate /force
# Verify the certificate is in the store
certutil -store Root "Your CA Name"
# Or check via PowerShell
Get-ChildItem Cert:\LocalMachine\Root | Where-Object { $_.Subject -like "*Your CA*" }
Metodo 2: Usando la linea de comandos certutil
Para instalaciones puntuales o scripting sin Directivas de Grupo:
Agregar un certificado al almacen raiz de confianza
# Add to machine Trusted Root store (requires admin)
certutil -addstore Root C:\certs\rootca.cer
# Add to machine Intermediate store
certutil -addstore CA C:\certs\intermediate.cer
# Add to current user's Trusted Root store
certutil -user -addstore Root C:\certs\rootca.cer
Eliminar un certificado
# Remove from Trusted Root store by serial number
certutil -delstore Root "SerialNumberHere"
Script para multiples maquinas
Combina con PowerShell remoting para despliegue masivo:
$computers = Get-ADComputer -Filter * -SearchBase "OU=Workstations,DC=corp,DC=example,DC=com"
$certPath = "\\fileserver\share\certs\rootca.cer"
foreach ($computer in $computers) {
Invoke-Command -ComputerName $computer.Name -ScriptBlock {
param($cert)
certutil -addstore Root $cert
} -ArgumentList $certPath
}
Metodo 3: Active Directory Certificate Services (AD CS)
Si tu organizacion administra su propia PKI, Active Directory Certificate Services proporciona confianza automatica para todos los miembros del dominio.
Confianza automatica de CA Enterprise
Cuando instalas una CA Enterprise (integrada con Active Directory):
- El certificado de la CA raiz se publica automaticamente en AD
- Todos los equipos unidos al dominio confian automaticamente en la CA a traves del almacen NTAuth
- No se necesita configuracion manual de GPO para el certificado de la CA Enterprise
Instalacion de AD CS
# Install the AD CS role
Install-WindowsFeature AD-Certificate -IncludeManagementTools
# Configure as an Enterprise Root CA
Install-AdcsCertificationAuthority -CAType EnterpriseRootCa `
-CryptoProviderName "RSA#Microsoft Software Key Storage Provider" `
-KeyLength 4096 `
-HashAlgorithmName SHA256 `
-ValidityPeriod Years `
-ValidityPeriodUnits 10
Publicar certificados de terceros en AD
Puedes publicar certificados raiz externos en Active Directory para que todos los miembros del dominio confien en ellos:
# Publish to AD's NTAuth store
certutil -dspublish -f C:\certs\external-root.cer RootCA
# Publish an intermediate CA
certutil -dspublish -f C:\certs\external-intermediate.cer SubCA
Esto publica el certificado en el contenedor CN=Public Key Services,CN=Services,CN=Configuration,DC=corp,DC=example,DC=com en AD.
Verificar certificados publicados en AD
# View certificates published in AD
certutil -viewstore "ldap:///CN=Certification Authorities,CN=Public Key Services,CN=Services,CN=Configuration,DC=corp,DC=example,DC=com"
CAs raiz de confianza vs. CAs intermedias
Entender la cadena de certificados es esencial para una distribucion adecuada:
Estructura de la cadena de certificados
Root CA Certificate (Self-signed, in Trusted Root store)
└── Intermediate CA Certificate (Signed by Root, in Intermediate store)
└── Server/Client Certificate (Signed by Intermediate, in Personal store)
Que va donde
- Los certificados de CA raiz van en el almacen de Trusted Root Certification Authorities
- Los certificados de CA intermedia van en el almacen de Intermediate Certification Authorities
- Los certificados de servidor van en el almacen Personal (My) en el servidor
Error comun: Certificados intermedios faltantes
Un problema comun es que la CA raiz es de confianza pero la intermedia falta. El cliente no puede construir la cadena completa, lo que resulta en errores de confianza. Siempre distribuye tanto los certificados raiz como los intermedios.
Gestion de certificados con PowerShell
Importar certificados via PowerShell
# Import to machine Trusted Root store
Import-Certificate -FilePath "C:\certs\rootca.cer" `
-CertStoreLocation Cert:\LocalMachine\Root
# Import to machine Intermediate store
Import-Certificate -FilePath "C:\certs\intermediate.cer" `
-CertStoreLocation Cert:\LocalMachine\CA
# Import a PFX (certificate with private key)
Import-PfxCertificate -FilePath "C:\certs\server.pfx" `
-CertStoreLocation Cert:\LocalMachine\My `
-Password (ConvertTo-SecureString "password" -AsPlainText -Force)
Listar y buscar certificados
# List all trusted root certificates
Get-ChildItem Cert:\LocalMachine\Root
# Find certificates expiring within 30 days
Get-ChildItem Cert:\LocalMachine\Root | Where-Object {
$_.NotAfter -lt (Get-Date).AddDays(30)
}
# Find certificates by subject
Get-ChildItem Cert:\LocalMachine\Root | Where-Object {
$_.Subject -like "*Corp Root CA*"
}
Eliminar certificados
# Remove by thumbprint
Get-ChildItem Cert:\LocalMachine\Root\AB1234567890ABCDEF | Remove-Item
Mejores practicas
- Usa Directivas de Grupo para entornos de dominio — Es el metodo mas confiable, auditable y escalable.
- Implementa una CA Enterprise con AD CS para necesidades internas de certificados en lugar de depender de certificados autofirmados.
- Distribuye tanto los certificados raiz como los intermedios para evitar errores de cadena incompleta.
- Monitorea la expiracion de certificados — Las CAs raiz tipicamente tienen vidas largas (10-20 anos), pero haz seguimiento para evitar expiraciones sorpresa.
- Limita lo que agregas al almacen raiz de confianza — Cada certificado en este almacen es completamente de confianza. Solo agrega CAs en las que genuinamente confies.
- Prueba primero en una OU de staging — Antes de implementar certificados en todo el dominio, prueba el GPO en un subconjunto de equipos.
Resumen
Distribuir certificados raiz de confianza en un dominio elimina la necesidad de instalacion manual en cada equipo. Las Directivas de Grupo son el enfoque recomendado para entornos de Active Directory — importa el certificado en la politica apropiada y deja que GP lo distribuya a todas las maquinas objetivo. Para organizaciones con necesidades internas de PKI, AD CS proporciona distribucion automatica de confianza para CAs Enterprise. Siempre distribuye la cadena completa de certificados (CAs raiz e intermedias) y verifica la implementacion con certutil o PowerShell.