Este es el proceso que he usado en Windows 2012 R2 y superior. Todo el código de PowerShell se ejecutó desde un indicador de PowerShell elevado. La automatización completa se deja como un ejercicio para el usuario.
Requisito previo
Asegúrese de tener una plantilla en su servidor de certificados que tenga seleccionado el botón de opción "Suministro en la solicitud" en la pestaña Asunto. Como no se trata de una máquina AD, el servidor de certificados no puede consultar adecuadamente la información en Active Directory.
Exportar la raíz
Exporte el Certificado de la Autoridad de certificación raíz de confianza en su Servidor de certificados y luego copie ese archivo de certificado en su Servidor de destino
certutil --% -ca.cert <name of certificate file>
Confía en la raíz
Importe ese certificado a la Autoridad de certificación raíz de confianza en su servidor de destino
$PathToCertificate=<name of certificate file>
$RootCertificate=Get-PfxCertificate -FilePath $PathToCertificate
$AlreadyExists=Get-ChildItem -Path "Cert:\LocalMachine\Root" | Where-Object { $_.Thumbprint -eq $RootCertificate.Thumbprint }
if ($AlreadyExists -eq $null) { Import-Certificate -CertStoreLocation "Cert:\LocalMachine\Root" -FilePath $PathToCertificate }
else { Write-Warning "Root certificate already installed" }
Proveedor de políticas de Active Directory
Determine la URL para el proveedor de políticas de Active Directory
# Get AD Configuration Context
$RootDSE=[System.DirectoryServices.DirectoryEntry]::new("LDAP://RootDSE")
$ConfigContext="CN=Enrollment Services,CN=Public Key Services,CN=Services,"+$RootDSE.configurationNamingContext
# Get name of Enterprise Root Certificate Autority server
$Server=Get-ADObject -SearchBase $ConfigContext -Filter "*"
if ($Server.Count -eq 1) { throw "No Enterprise Root Certificate Autority server exists" }
else { $Server=$Server[1].Name }
# Get Enrollment URL
$ConfigContext="CN=$Server,"+$ConfigContext
$EnrollmentURL=(Get-ADObject -SearchBase $ConfigContext -Filter "*" -Properties "msPKI-Enrollment-Servers" | Select-Object -ExpandProperty "msPKI-Enrollment-Servers").Split("`n") | Where-Object { $_ -like "http*" }
if ($EnrollmentURL -eq $null) { $EnrollmentURL="" }
# Get AD Enrollment Policy URL
$Server=$Server+$RootDSE.configurationNamingContext.Value.Replace("CN=Configuration","").Replace(",DC=",".")
$WMI=Get-WmiObject -ComputerName $Server -Namespace "root\WebAdministration" -Class Application | Where-Object { $_.Path -eq "/ADPolicyProvider_CEP_UsernamePassword" }
if ($WMI -ne $null) { $PolicyURL="https://"+$Server+$WMI.Path+"/service.svc/CEP" }
else { $PolicyURL="" }
Write-Output "Enrollment URL = $EnrollmentURL"
Write-Output "Policy URL = $PolicyURL"
Política de inscripción
Agregue la Política de inscripción al servidor de destino (esto solo funciona en Windows 2012 y versiones posteriores. Para obtener instrucciones de la GUI, consulte a continuación). Asegúrese de que la Política se agrega después de crear la plantilla que no es de dominio, de lo contrario no aparecerá ya que la política no se actualiza.
$User="<your domain name>\<your domain user name>"
$Pass="<Your domain password>"
$SecPass=ConvertTo-SecureString -String $Pass -AsPlainText -Force
$Cred=[System.Management.Automation.PSCredential]::new($User,$SecPass)
Add-CertificateEnrollmentPolicyServer -Url $PolicyURL -context Machine -NoClobber -AutoEnrollmentEnabled -Credential $Cred
Obtener el certificado
Ahora debería poder inscribirse para un certificado utilizando la plantilla deseada
$DNS="<FQDN of your server>"
$URL=Get-CertificateEnrollmentPolicyServer -Scope All -Context Machine | Select-Object -ExpandProperty Url | Select-Object -ExpandProperty AbsoluteUri
$Enrollment=Get-Certificate -Url $URL -Template "<Template name (not display name)>" -SubjectName "CN=$DNS" -DnsName $DNS -Credential $Cred -CertStoreLocation cert:\LocalMachine\My
$Enrollment.Certificate.FriendlyName=$DNS
Política de inscripción anterior a Windows 2012 R2
- Abra los certificados MMC
- Ir a la tienda de certificados personales
- Haga clic derecho en "Certificados" y seleccione Todas las tareas / Operaciones avanzadas / Administrar
- Políticas de inscripción desde el menú contextual
- Haga clic en el botón "Agregar"
- Pegue la URL de la política de inscripción.
- Seleccione Nombre de usuario / contraseña como el tipo de autenticación
- Haga clic en el botón "Validar servidor" e ingrese sus credenciales de dominio, incluido el dominio
- Suponiendo que haya podido validar con éxito, haga clic en el botón "Agregar"
- Seleccione la política de inscripción y haga clic en el botón "Propiedades"
- Asegúrese de que la casilla "Habilitar la inscripción y renovación automáticas" esté marcada
- Nunca he marcado "Requerir validación fuerte durante la inscripción", así que no sé lo que hace