Ao usar certificados autoassinados ou certificados de uma Autoridade de Certificacao (CA) nao publica, os computadores clientes exibirao avisos de confianca porque nao reconhecem a CA emissora. Em vez de instalar manualmente o certificado em cada maquina, voce pode distribuir certificados raiz confiaveis automaticamente para todos os computadores ingressados no dominio usando Group Policy. Este guia abrange o metodo de Group Policy, a abordagem por linha de comando com certutil, o Active Directory Certificate Services e os fundamentos dos armazenamentos de certificados.
Entendendo os armazenamentos de certificados
O Windows organiza os certificados em armazenamentos com base em sua finalidade:
Armazenamentos de certificados da maquina
| Armazenamento | Finalidade |
|---|---|
| Trusted Root Certification Authorities | Certificados de CA raiz nos quais o computador confia inerentemente. Todas as cadeias de certificados devem terminar em um certificado neste armazenamento. |
| Intermediate Certification Authorities | Certificados de CAs subordinadas a uma raiz confiavel. Usados para completar cadeias de certificados. |
| Personal | Certificados emitidos para o computador (como certificados SSL para IIS). |
| Trusted Publishers | Certificados de assinatura de codigo de editores de software confiaveis. |
Armazenamentos de certificados do usuario
Os armazenamentos de certificados do usuario tem a mesma estrutura, mas se aplicam ao usuario atual em vez da maquina. Os certificados no armazenamento da maquina se aplicam a todos os usuarios naquele computador.
Visualizando armazenamentos de certificados
Abra o gerenciador de certificados:
# Machine certificates (requires admin)
certlm.msc
# Current user certificates
certmgr.msc
Ou pela linha de comando:
# List certificates in the Trusted Root store
certutil -store Root
# List certificates in the machine personal store
certutil -store My
Metodo 1: Distribuicao via Group Policy (Recomendado)
O Group Policy e a maneira mais confiavel e escalavel de distribuir certificados para computadores do dominio.
Passo 1: Exportar o certificado
Se voce ainda nao exportou o certificado da CA raiz, faca isso a partir do servidor da CA ou de qualquer maquina que o tenha 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)
Passo 2: Criar ou editar um Group Policy Object
- Abra o Group Policy Management (
gpmc.msc) - Crie um novo GPO ou edite um existente
- Vincule o GPO ao dominio (para todos os computadores) ou a uma OU especifica (para distribuicao direcionada)
Passo 3: Importar o certificado
- No Editor de GPO, navegue ate:
Computer Configuration > Policies > Windows Settings > Security Settings > Public Key Policies > Trusted Root Certification Authorities - Clique com o botao direito em Trusted Root Certification Authorities e selecione Import…
- Navegue ate o arquivo de certificado (
.cer,.crtou.p7b) - Complete o assistente de importacao, garantindo que o armazenamento esteja definido como Trusted Root Certification Authorities
Passo 4: Distribuir certificados intermediarios (se necessario)
Se a cadeia da CA inclui certificados intermediarios, importe-os separadamente:
- Navegue ate:
Computer Configuration > Policies > Windows Settings > Security Settings > Public Key Policies > Intermediate Certification Authorities - Importe o(s) certificado(s) da CA intermediaria
Passo 5: Verificar a distribuicao
Apos a atualizacao do Group Policy (ate 90 minutos, ou force imediatamente):
# 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 a linha de comando certutil
Para instalacoes pontuais ou scripts sem Group Policy:
Adicionar um certificado ao armazenamento de raiz confiavel
# 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
Remover um certificado
# Remove from Trusted Root store by serial number
certutil -delstore Root "SerialNumberHere"
Script para multiplas maquinas
Combine com o PowerShell remoting para implantacao em massa:
$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)
Se sua organizacao possui sua propria PKI, o Active Directory Certificate Services fornece confianca automatica para todos os membros do dominio.
Confianca automatica da CA Empresarial
Quando voce instala uma CA Empresarial (integrada ao Active Directory):
- O certificado da CA raiz e publicado automaticamente no AD
- Todos os computadores ingressados no dominio confiam na CA automaticamente atraves do armazenamento NTAuth
- Nenhuma configuracao manual de GPO e necessaria para o certificado da CA empresarial
Instalando o 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
Publicando certificados de terceiros no AD
Voce pode publicar certificados raiz externos no Active Directory para que todos os membros do dominio confiem neles:
# 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
Isso publica o certificado no container CN=Public Key Services,CN=Services,CN=Configuration,DC=corp,DC=example,DC=com no AD.
Verificar certificados publicados no 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 confiaveis vs. CAs intermediarias
Entender a cadeia de certificados e essencial para a distribuicao adequada:
Estrutura da cadeia 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)
O que vai onde
- Certificados de CA raiz vao no armazenamento Trusted Root Certification Authorities
- Certificados de CA intermediaria vao no armazenamento Intermediate Certification Authorities
- Certificados de servidor vao no armazenamento Personal (My) no servidor
Erro comum: Certificados intermediarios ausentes
Um problema comum e que a CA raiz e confiavel, mas a intermediaria esta ausente. O cliente nao consegue construir a cadeia completa, resultando em erros de confianca. Sempre distribua tanto os certificados raiz quanto os intermediarios.
Gerenciamento de certificados com 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 e pesquisar 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*"
}
Remover certificados
# Remove by thumbprint
Get-ChildItem Cert:\LocalMachine\Root\AB1234567890ABCDEF | Remove-Item
Melhores praticas
- Use Group Policy para ambientes de dominio — E o metodo mais confiavel, auditavel e escalavel.
- Implante uma CA Empresarial com AD CS para necessidades internas de certificados em vez de depender de certificados autoassinados.
- Distribua tanto certificados raiz quanto intermediarios para evitar erros de cadeia incompleta.
- Monitore a expiracao dos certificados — CAs raiz normalmente tem longa duracao (10-20 anos), mas acompanhe-os para evitar expiracoes inesperadas.
- Limite o que voce adiciona ao armazenamento de raiz confiavel — Cada certificado neste armazenamento e totalmente confiavel. Adicione apenas CAs nas quais voce realmente confia.
- Teste em uma OU de homologacao primeiro — Antes de implantar certificados em todo o dominio, teste o GPO em um subconjunto de computadores.
Resumo
Distribuir certificados raiz confiaveis em um dominio elimina a necessidade de instalacao manual em cada computador. O Group Policy e a abordagem recomendada para ambientes Active Directory — importe o certificado na politica apropriada e deixe o GP envia-lo para todas as maquinas de destino. Para organizacoes com necessidades internas de PKI, o AD CS fornece distribuicao automatica de confianca para CAs empresariais. Sempre distribua a cadeia completa de certificados (CAs raiz e intermediarias) e verifique a implantacao com certutil ou PowerShell.