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

ArmazenamentoFinalidade
Trusted Root Certification AuthoritiesCertificados de CA raiz nos quais o computador confia inerentemente. Todas as cadeias de certificados devem terminar em um certificado neste armazenamento.
Intermediate Certification AuthoritiesCertificados de CAs subordinadas a uma raiz confiavel. Usados para completar cadeias de certificados.
PersonalCertificados emitidos para o computador (como certificados SSL para IIS).
Trusted PublishersCertificados 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

  1. Abra o Group Policy Management (gpmc.msc)
  2. Crie um novo GPO ou edite um existente
  3. Vincule o GPO ao dominio (para todos os computadores) ou a uma OU especifica (para distribuicao direcionada)

Passo 3: Importar o certificado

  1. No Editor de GPO, navegue ate:
    Computer Configuration > Policies > Windows Settings > Security Settings > Public Key Policies > Trusted Root Certification Authorities
  2. Clique com o botao direito em Trusted Root Certification Authorities e selecione Import…
  3. Navegue ate o arquivo de certificado (.cer, .crt ou .p7b)
  4. 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:

  1. Navegue ate:
    Computer Configuration > Policies > Windows Settings > Security Settings > Public Key Policies > Intermediate Certification Authorities
  2. 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):

  1. O certificado da CA raiz e publicado automaticamente no AD
  2. Todos os computadores ingressados no dominio confiam na CA automaticamente atraves do armazenamento NTAuth
  3. 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.