Se você é um administrador de sistema Windows, provavelmente já teve que lidar com certificados do Windows. Trabalhar com certificados no Windows é geralmente uma das tarefas extras que um administrador de sistema precisa assumir. Usando o Gerenciador de Certificados do Windows como uma ferramenta, você pode fazer isso!
Os certificados são notoriamente complexos e difíceis de entender, mas neste artigo você terá a chance de descobrir que os certificados não são tão assustadores no Windows!
Este artigo abordará principalmente o trabalho com certificados no Windows. Se você gostaria de aprender mais sobre como os certificados funcionam em geral, confira o artigo complementar deste tutorial sobre Certificado X.509.
Entendendo os Armazenamentos de Certificados
No Gerenciador de Certificados do Windows, todos os certificados existem em locais de armazenamento lógico chamados armazenamentos de certificados. Os armazenamentos de certificados são “recipientes” onde o Windows mantém todos os certificados que estão atualmente instalados, e um certificado pode estar em mais de um armazenamento.
Infelizmente, os armazenamentos de certificados não são o conceito mais intuitivo com o qual se trabalhar. Você lerá sobre como diferenciar esses armazenamentos e como trabalhar com eles abaixo.
Cada armazenamento está localizado no Registro do Windows e no sistema de arquivos. Consulte a tabela abaixo para obter detalhes. Ao trabalhar com um certificado em um armazenamento, você está interagindo com o armazenamento lógico, não modificando diretamente o registro ou o sistema de arquivos. Essa forma mais simples permite que você trabalhe com um único objeto, enquanto o Windows cuida de como representar esse objeto no disco.
Você verá às vezes as lojas de certificados referidas como lojas físicas ou lógicas. As lojas físicas fazem referência à localização real no sistema de arquivos ou no registro onde a(s) chave(s) do registro e/ou arquivo(s) são armazenados. As lojas lógicas são referências dinâmicas que referenciam uma ou mais lojas físicas. As lojas lógicas são muito mais fáceis de trabalhar do que as lojas físicas na maioria dos casos de uso comuns.
O Windows armazena certificados em duas áreas diferentes – um contexto de usuário e um contexto de computador. Um certificado é colocado em um desses dois contextos dependendo se o certificado deve ser usado por um único usuário, vários usuários ou pelo próprio computador. Para o restante deste artigo, um certificado em um contexto de usuário e computador será informalmente chamado de certificados de usuário e certificados de computador.
Certificados de Usuário
Se você pretende que um certificado seja usado por um único usuário, então uma loja de certificados de usuário dentro do gerenciador de certificados do Windows é ideal. Este é o caso de uso comum para processos de autenticação baseados em certificado, como wired IEEE 802.1x.
Certificados de usuário estão localizados dentro do perfil do usuário atual e são mapeados apenas logicamente dentro do contexto desse usuário. Certificados de usuário são “mapeados” e são únicos para cada usuário, mesmo nos mesmos sistemas.
Certificados de Computador
Se um certificado será usado por todos os usuários em um computador ou em um processo do sistema, ele deve ser colocado dentro de uma loja no contexto do computador. Por exemplo, se um certificado será usado em um servidor web para criptografar a comunicação para todos os clientes, colocar um certificado em uma loja no contexto do computador seria ideal.
Você verá que a loja de certificados de um computador é logicamente mapeada para todos os contextos de usuário. Isso permite que certificados em uma loja de certificados de computador sejam usados por todos os usuários, dependendo das permissões configuradas para a chave privada.
Para obter mais informações sobre chaves privadas, certifique-se de verificar o artigo Tutorial de Certificados X.509: Um Guia para Administradores de Sistema.
Os certificados de computador estão localizados no registro Local Machine e na pasta Program Data. Os certificados de usuário estão localizados nos registros Current User e na pasta App Data. Abaixo você pode ver uma divisão de onde cada tipo de loja está localizado no registro e no sistema de arquivos.
Context | Registry Path | Explanation |
---|---|---|
User | HKCU:\SOFTWARE\Microsoft\SystemCertificates\ | Physical store for user-specific public keys |
User | HKCU:\SOFTWARE\Policies\Microsoft\SystemCertificates\ | Physical store for user-specific public keys installed by Active Directory (AD) Group Policy Objects (GPOs) |
Computer | HKLM:\SOFTWARE\Microsoft\SystemCertificates\ | Physical store for machine-wide public keys |
Computer | HKLM:\SOFTWARE\Microsoft\Cryptography\Services\ | Physical store for keys associated with a specific service |
Computer | HKLM:\SOFTWARE\Policies\Microsoft\SystemCertificates\ | Physical store for machine-wide public keys installed by GPOs |
Computer | HKLM:\SOFTWARE\Microsoft\EnterpriseCertificates\ | Physical store for machine-wide public keys installed by the Enterprise PKI Containers within an AD domain |
Context | File Location | Explanation |
---|---|---|
User | $env:APPDATA\Microsoft\SystemCertificates\ | Physical store for user-specific public keys and pointers to private keys |
User | $env:APPDATA\Microsoft\Crypto\ | Physical store for user-specific private key containers |
Computer | $env:ProgramData\Microsoft\Crypto\ | Physical store for machine-wide private key containers |
Pré-requisitos
Ao longo do restante deste artigo, você encontrará vários exemplos mostrando interações com as lojas de certificados do Windows. Para replicar esses exemplos, certifique-se de atender aos seguintes pré-requisitos:
- Windows Vista, Windows Server 2008 ou um sistema operacional mais recente. Os exemplos mostrados utilizam o Windows 10 Enterprise versão 1903.
- Familiaridade com o PowerShell. Embora não seja obrigatório, esta será a linguagem usada para referenciar certificados quando apropriado. Os exemplos mostrados foram todos criados com o Windows PowerShell 5.1.
- Você não precisará de certificados específicos instalados para acompanhar, mas o uso de um certificado autoassinado é benéfico.
Gerenciando Certificados no Windows
No Windows, existem três maneiras principais de gerenciar certificados:
- O snap-in Certificates do Microsoft Management Console (MMC) (certmgr.msc)
- O PowerShell
- A ferramenta de linha de comando
certutil
Neste artigo, você aprenderá como gerenciar certificados através do snap-in Certificates do MMC e do PowerShell. Se você quiser saber mais sobre como usar o certutil
, confira a Documentação da Microsoft.
PowerShell vs. Windows Security Certificate Manager
Já que os certificados podem ser gerenciados de algumas maneiras diferentes no Windows, qual você escolhe? Deve-se seguir a rota GUI (MMC) ou usar a linha de comando com o PowerShell?
Observação: Este artigo é relevante tanto para os snap-ins Windows 7 Certificate Manager quanto Windows 10 Certificate Manager do MMC.
Primeiro, considere o ciclo de vida de um certificado. Se você pretende instalar ou remover apenas um certificado uma vez, considere usar o MMC. Mas se você estiver gerenciando vários certificados ou se encontrar realizando a mesma tarefa repetidamente, pode ser melhor seguir a rota da linha de comando. Mesmo que você não saiba escrever scripts do PowerShell, valeria a pena aprender se tiver muitos certificados diferentes para gerenciar.
Vamos primeiro dar uma olhada em como descobrir os certificados instalados no Windows usando tanto o Gerenciador de Certificados quanto o PowerShell.
Usando o Gerenciador de Certificados do Windows (certmgr.msc)
Para visualizar certificados com o MMC, abra o Gerenciador de Certificados a partir do menu Iniciar digitando certmgr.msc. Isso abrirá o MMC de Certificados do Windows. Essa visualização inicial fornecerá uma visão geral de todas as lojas lógicas exibidas na janela esquerda.
Você pode ver na captura de tela abaixo que a loja lógica Autoridades de Certificação Raiz Confiáveis está selecionada.

Visualizando Lojas Físicas
Por padrão, o gerenciador de certificados do Windows não mostrará as lojas físicas reais. Para mostrar as lojas, clique em Exibir e, em seguida, em Opções. Você verá opções para escolher mostrar as lojas físicas de certificados. Habilitar essa opção facilita a identificação dos caminhos específicos dentro do Windows.

Agora você pode ver que contêineres adicionais são mostrados sob a loja lógica de exemplo Autoridades de Certificação Raiz Confiáveis mostrada anteriormente. Os certificados ainda estão agrupados em relação às suas lojas lógicas, mas agora você pode ver a loja física “Registro”.

Inspecionando Atributos no Gerenciador de Certificados do Windows
Há muitos atributos de um certificado que você pode ver ao visualizá-los com o MMC. Por exemplo, você provavelmente desejará selecionar certificados específicos.
A maneira mais fácil de realizar isso é referenciar o valor da extensão Número de Série ou Thumbprint do certificado. Se o certificado foi assinado por uma autoridade de certificação (CA), ele terá um número de série quando emitido. O Thumbprint é calculado toda vez que o certificado é visualizado.
Você pode ver alguns dos atributos de um certificado ao abri-lo no MMC, como mostrado abaixo.

Uma característica importante a ser destacada são as chaves privadas incorporadas. Os certificados no Windows também podem ter uma chave privada correspondente. Essas chaves privadas são armazenadas em locais físicos correspondentes como arquivos criptografados.
Para distinguir rapidamente um certificado com e sem uma chave privada correspondente, observe o ícone do certificado. No gerenciador de certificados do Windows, se o ícone simplesmente parecer um pedaço de papel com uma fita, não há chave privada correspondente. Se um certificado tiver uma chave privada, você verá uma chave no ícone do MMC e verá uma chave na parte inferior da guia Geral ao abrir o certificado.

Usando o PowerShell
Assim como no MMC, você também pode visualizar e gerenciar certificados com o PowerShell. Vamos primeiro inspecionar certificados em seus locais físicos (registro e sistema de arquivos).
Por Local Físico
Usando o cmdlet Get-ChildItem
do PowerShell, você pode enumerar todas as chaves e valores dentro do caminho da chave de registro pai HKCU:\Software\Microsoft\SystemCertificates\CA\Certificates\.
O comando abaixo enumerará todos os certificados do usuário atualmente conectado no repositório lógico Autoridades de Certificação Intermediárias.
Cada entrada no registro do sistema corresponderá ao Thumbprint do certificado para uma AC confiável e seu certificado correspondente na propriedade correspondente. Você pode ver um exemplo de saída abaixo.

Outro repositório comum é o repositório Pessoal. Seus certificados para este repositório estão localizados no sistema de arquivos, em vez do registro. Nos comandos a seguir, mostraremos esses caminhos físicos diferentes e seus propósitos.
Cada arquivo no diretório retornado pelo comando abaixo corresponde a um certificado instalado no repositório do usuário atual Pessoal.
Cada arquivo retornado no comando abaixo é uma referência ao objeto de uma chave privada criada pelo Provedor de Armazenamento de Chaves (KSP). O nome do arquivo corresponde ao Identificador de Chave do Sujeito do certificado. Cada chave privada que você instala terá um arquivo correspondente adicionado.
Cada arquivo no diretório retornado pelo comando abaixo é o contêiner único para a chave privada criptografada criada pelo KSP. Não há uma relação direta entre o nome do arquivo e o certificado, mas o arquivo é o alvo do ponteiro no comando anterior.
Por Repositório Lógico
Uma vez que trabalhar com certificados em seus caminhos físicos é incomum, você estará trabalhando com as lojas lógicas para o restante dos exemplos.
O PowerShell pode acessar as lojas lógicas do Windows usando o Cert:
PSDrive. O Cert:
PSDrive mapeia os certificados para as lojas físicas, assim como o MMC faz.
Infelizmente, o MMC e o Cert
PSDrive não rotulam as lojas lógicas da mesma forma. Abaixo você pode ver uma tabela de comparação das lojas comuns e seus nomes tanto no MMC quanto no Cert
PSDrive.
Cert: | Certificates MMC |
---|---|
My | Personal |
Remote Desktop | Remote Desktop |
Root | Trusted Root Certification Authorities |
CA | Intermediate Certification Authorities |
AuthRoot | Third-Party Root Certification Authorities |
TrustedPublisher | Trusted Publishers |
Trust | Enterprise Trust |
UserDS | Active Directory User Object |
Selecionando Certificados
Quando você está trabalhando com certificados, você precisará de uma maneira de filtrar e selecionar certificados para realizar operações específicas. Na maioria das vezes, você filtrará e selecionará certificados com base no valor de uma extensão específica.
Para os exemplos a seguir, você precisa começar listando todos os certificados instalados na loja CA raiz.
Os objetos retornados serão objetos de certificado que você pode usar nos exemplos a seguir.
As extensões comuns já estão disponíveis como propriedades dos objetos de certificado. No exemplo abaixo, você está usando Get-Member
para listar todas as propriedades dos objetos retornados.

Como você pode ver na Figura 9, algumas dessas extensões, como Emitente, são úteis para encontrar o certificado que você está procurando. As extensões fornecem informações sobre o certificado, como para quem ele foi emitido, para que pode ser usado e quaisquer restrições que possua.
Em casos de uso mais complexos, você desejará encontrar certificados por outras extensões, como o modelo de certificado utilizado. A dificuldade é que os valores dessas extensões são retornados como um array de inteiros. Esses inteiros correspondem a conteúdo codificado em ASN.1.
As ScriptProperties existentes disponíveis no objeto mostram exemplos de como interagir com eles. No comando abaixo, você irá extrair manualmente as utilizações da chave para ver essa relação.
A nova parte introduzida no comando acima é o método format, que realiza a decodificação ASN.1. Você passa um valor booleano (por exemplo, $true) acima para identificar se deseja que o objeto retornado seja em uma única linha ou várias linhas.
Você usará o valor Thumbprint do certificado na Figura 7 no comando abaixo. O valor Thumbprint é definido como uma variável do PowerShell e usado para selecionar o certificado específico nos comandos abaixo.
Criando Certificados Autoassinados com o PowerShell
O PowerShell pode criar certificados autoassinados usando o cmdlet New-SelfSignedCertificate
. Certificados autoassinados são úteis para testes, pois permitem gerar um par de chaves pública e privada sem o uso de uma Autoridade de Certificação (CA).
Vamos agora criar um certificado autoassinado nas Lojas do Usuário Atual e da Máquina Local para usar em exemplos nos próximos passos.
No exemplo abaixo, o PowerShell está gerando um par de chaves pública e privada, um certificado autoassinado e instalando-os em todas as lojas de certificados apropriadas.
O uso de certificados autoassinados para serviços de produção não é encorajado, pois todos os mecanismos baseados em confiança não existem.
Importação/Exportação de Certificados
A criptografia de chave pública é fundamentalmente baseada na ampla acessibilidade da chave pública. Dado esse princípio, é necessário ter maneiras padrão de compartilhar certificados de forma eficaz. Igualmente importante é a segurança das suas chaves privadas. Armazenar as chaves privadas em mídias inacessíveis ou com materiais de recuperação de desastres é uma prática comum para certas chaves privadas.
Ambas as situações requerem maneiras de armazenar esses objetos criptográficos em formatos padrão. A exportação fornece as funções para realizar o armazenamento desses objetos e garantir que eles usem formatos de arquivo amplamente aceitos. A importação permite que você traga os objetos criptográficos para sistemas operacionais Windows.
Usando o Gerenciador de Certificados do Windows (certmgr.msc)
A exportação de certificados pelo MMC é relativamente simples. Para exportar um certificado sem uma chave privada, clique no certificado no MMC, clique no menu Todas as Tarefas e, em seguida, em Exportar.
Durante a exportação, será solicitado um formato de arquivo, como mostrado abaixo. As opções mais comuns são DER ou Codificado em Base-64.

Exportação de Chaves Privadas
Para exportar um certificado com uma chave privada associada, você terá que atender a dois critérios; a conta logada deve ter permissão para a chave privada (apenas para certificados de computador) e a chave privada precisa estar marcada como exportável.
Para verificar as permissões das chaves privadas de um computador local, você pode selecionar um certificado com uma chave privada, escolher Todas as Tarefas e Gerenciar Chaves Privadas dentro do MMC de Certificados. A caixa de diálogo que se abre mostra as entradas de controle de acesso para as chaves privadas.

Quando esses dois ou três pré-requisitos forem atendidos, você pode selecionar um certificado, clicar em Todas as Tarefas e depois em Exportar, assim como faria com um certificado que possui apenas uma chave pública. Quando exportado, você deve agora ter a opção de selecionar Sim, exportar a chave privada, conforme mostrado abaixo.

Ao exportar uma chave privada no Windows, você só pode salvar o arquivo como um PFX. Esses tipos de arquivo e formatos de codificação são detalhados em esta postagem.
Para as configurações restantes mostradas no assistente de exportação, você pode usar as configurações padrão. A tabela abaixo apresenta um resumo rápido de cada uma delas.
Setting | Description |
---|---|
Including all certificates in the certification path if possible | Helps with portability of certificate issuers, and includes all pertinent public keys in the PFX |
Delete the private key if the export is successful | Removes the private key from the file and has few common use cases, but one example is to test access to private keys |
Export all extended properties | Will include any extensions within the current certificate, these relate to the certificates [specific settings]( |
Enable certificate privacy | Normally only the private key will be encrypted in the exported PFX file, this setting encrypts the entire contents of the PFX file |
Group or user names | You can use a group or user security principal from Active Directory for encrypting the contents of the PFX file, but a password is the most portable option across legacy systems or computers not joined to the same domain |
Importando Certificados
A função de importação é a mesma para todos os tipos de arquivo de certificado suportados. A única diferença é que, se o arquivo incluir uma chave privada, você pode “Marcar esta chave como exportável”, o que você lerá mais abaixo. O Windows usará o Assistente de Importação de Certificados.

Ao usar o Assistente de Importação de Certificados para um PFX, você precisará fornecer a senha usada para criptografar a chave privada. Aqui está um resumo das opções de importação.
Setting | Description |
---|---|
Enable strong private key protection | Requires a password for each access of a private key, be cautious of newer functions as they will not be supported in all software |
Mark this key as exportable | You should try to avoid using this setting on any end system, private keys should be treated similarly to storing passwords |
Protect private key using [virtualization-based security] | The setting provides more security functionality for protecting private keys from advanced malware attacks |
Include all extended properties | Relates to the same Windows-specific settings discussed as with exporting |
Os certificados de assinatura de código do PowerShell são um bom caso de uso para proteção forte da chave privada.
A colocação automática de certificados pode ser algo com o qual se ter cautela. Você provavelmente terá os melhores resultados selecionando manualmente a loja de certificados.
Usando o PowerShell
Agora, com o PowerShell, exporte um dos certificados autoassinados que você criou anteriormente. No exemplo, o Usuário Atual é usado, mas você pode usar qualquer um.
Abaixo, você está selecionando um certificado na loja lógica Pessoal do Usuário Atual que foi autoassinado, ou seja, onde o emissor corresponde ao assunto.
Agora que você selecionou um certificado, pode usar o comando Export-Certificate
para salvar um arquivo codificado em DER usando o comando abaixo.
Agora vamos analisar a exportação da chave privada também. Abaixo, você está verificando se o certificado que você selecionou tem uma chave privada, se isso não retornar verdadeiro, então o comando Get-Item
provavelmente selecionou o certificado errado.
Abaixo, você irá definir uma senha para usar na criptografia da chave privada. Em seguida, exporte o certificado selecionado para um arquivo PFX e use a senha que você inseriu anteriormente para criptografar o arquivo.
Da mesma forma que na exportação, existem dois comandos. Um comando para importar certificados e outro para importar arquivos PFX.
Abaixo o comando Import-Certificate
importa o arquivo codificado em DER que você exportou anteriormente para a Loja Pessoal do Usuário Atual.
Vamos dizer que você também queira instalar a chave privada desse certificado.
Lembre-se de que a senha precisa ser uma String Segura. Além disso, se você estiver importando para a Loja da Máquina Local (por exemplo, Cert:\LocalMachine\), será necessário executar o comando em um prompt de Administrador elevado.
No exemplo acima, você também usa o parâmetro Exportable com o comando, marcando a chave privada como exportável no futuro. O padrão é não ser exportável. Chaves privadas exportáveis são outra consideração de segurança e merecem uma atenção adicional sobre como você as protege.
Também há muitas outras coisas a fazer com certificados no Windows, então você deve explorar mais.
Removendo Certificados com o PowerShell
Ao remover certificados, você precisa ter em mente que não há Lixeira. Uma vez que você exclui um certificado, ele desaparece. Isso significa que é fundamental confirmar que você está excluindo o certificado correto, validando um identificador único, como o número de série ou o valor de extensão da impressão digital (Thumbprint).
Da mesma forma que acima, no comando abaixo selecionamos um certificado autoassinado da Loja Pessoal do Usuário Atual.
Abaixo você pode ver as propriedades Impressão Digital (Thumbprint), Número de Série e Assunto do certificado selecionado para garantir que seja o certificado que você pretende selecionar.
Verifique se você selecionou o certificado correto que pretende excluir.
O comando abaixo remove todos os objetos de certificado selecionados, por favor, use com cuidado. Ao passar o objeto $certificate
através do pipeline para o cmdlet Remove-Item
no comando abaixo, você excluirá todo o conteúdo do certificado sem nenhuma solicitação de validação.
Resumo
Ao longo deste artigo, você trabalhou com certificados no Windows, aprendendo como acessá-los e algumas ferramentas para usar ao trabalhar com eles. Há muito mais a explorar sobre o assunto, incluindo como associar certificados instalados a serviços específicos ou até mesmo como implementar uma Infraestrutura de Chave Pública (PKI) privada, implantando suas próprias Autoridades de Certificação (CA).
Leitura adicional
Source:
https://adamtheautomator.com/windows-certificate-manager/