Este é o processo que eu usei no Windows 2012 R2 e superior. Todo o código do PowerShell foi executado a partir de um prompt elevado do PowerShell. A automação completa é deixada como um exercício para o usuário.
Pré-requisito
Verifique se você possui um modelo no servidor de certificados com o botão de opção "Fornecer na solicitação" selecionado na guia Assunto. Como esta não é uma máquina AD, o servidor de certificação não pode consultar adequadamente o Active Directory para obter informações.
Exportar a raiz
Exporte o Certificado da Autoridade de Certificação Raiz Confiável no servidor de certificados e copie esse arquivo de certificado para o servidor de destino
certutil --% -ca.cert <name of certificate file>
Confie na raiz
Importe esse certificado para a Autoridade de Certificação Raiz Confiável no 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" }
Fornecedor de Políticas do Active Directory
Determinar a URL para o provedor de diretivas do 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 Inscrição
Adicione a política de inscrição ao servidor de destino (isso funciona apenas no Windows 2012 e superior. Para obter instruções da GUI, veja abaixo). Verifique se a Política foi adicionada depois de criar o modelo que não é de domínio, caso contrário, ela não aparecerá, pois a política não será atualizada.
$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
Obter o certificado
Agora você deve conseguir se inscrever para um certificado usando o modelo desejado
$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 Inscrição Pré-Windows 2012 R2
- Abra os certificados MMC
- Faça uma busca detalhada no armazenamento de certificados pessoais
- Clique com o botão direito do mouse em "Certificados" e selecione Todas as tarefas / Operações avançadas / Gerenciar
- Políticas de inscrição no menu de contexto
- Clique no botão "Adicionar"
- Cole o URL da política de inscrição
- Selecione Nome de usuário / senha como o tipo de autenticação
- Clique no botão "Validar servidor" e insira suas credenciais de domínio, incluindo o domínio
- Supondo que você tenha conseguido validar com êxito, clique no botão "Adicionar"
- Selecione a política de inscrição e clique no botão "Propriedades"
- Verifique se a caixa "Ativar inscrição e renovação automática" está marcada
- Nunca marquei a opção "Exigir validação forte durante a inscrição" para não saber o que faz