Se você é um administrador de sistema Windows, talvez tenha sido obrigado a trabalhar com certificados do Windows. Trabalhar com certificados no Windows é geralmente uma daquelas 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 oportunidade 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 artigo, o Tutorial de Certificado X.509.
Entendendo os Armazenamentos de Certificados
Dentro do gerenciador de certificados do Windows, todos os certificados existem em locais de armazenamento lógicos 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ê aprenderá 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ê às vezes verá os repositórios de certificados referidos como repositórios físicos ou lógicos. Os repositórios físicos se referem ao local real do sistema de arquivos ou registro onde a(s) chave(s) de registro e/ou arquivo(s) são armazenados. Os repositórios lógicos são referências dinâmicas que apontam para um ou mais repositórios físicos. Os repositórios lógicos são muito mais fáceis de trabalhar do que os repositórios físicos 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 um repositório de certificados de usuário dentro do gerenciador de certificados do Windows é ideal. Esse é o caso de uso comum para processos de autenticação baseados em certificados, como IEEE 802.1x com fio.
Os certificados de usuário estão localizados dentro do perfil do usuário atual e são mapeados apenas de forma lógica dentro do contexto desse usuário. Os certificados de usuário são “mapeados” e são exclusivos para cada usuário, mesmo em sistemas diferentes.
Certificados de Computador
Se um certificado for usado por todos os usuários em um computador ou por um processo do sistema, ele deve ser colocado dentro de uma loja no contexto do computador. Por exemplo, se um certificado for 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 é mapeada logicamente 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 Sistemas.
Os certificados de computador estão localizados nos registros das colmeias Local Machine e na pasta Program Data. Os certificados de usuário estão localizados nos registros das colmeias 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:
- Sistema operacional Windows Vista, Windows Server 2008 ou mais recente. Os exemplos mostrados usam o Windows 10 Enterprise versão 1903.
- Familiaridade com o PowerShell. Embora não seja obrigatório, esta será a linguagem usada para fazer referência a 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 Microsoft Management Console (MMC) (certmgr.msc)
- O PowerShell
- A ferramenta de linha de comando
certutil
Neste artigo, você aprenderá como gerenciar certificados por meio do Certificates MMC snap-in e do PowerShell. Se você deseja saber mais sobre como usar o certutil
, confira a Microsoft Docs.
PowerShell vs. Windows Security Certificate Manager
Já que os certificados podem ser gerenciados de várias maneiras no Windows, qual você escolhe? Você deve seguir a rota da GUI (MMC) ou usar o PowerShell na linha de comando?
Observação: Este artigo é relevante tanto para o Windows 7 Certificate Manager quanto para o Windows 10 Certificate Manager MMC snap-ins.
Primeiro, considere o ciclo de vida de um certificado. Se você pretende apenas instalar ou remover um único certificado uma vez, considere usar o MMC. Mas se você estiver gerenciando vários certificados ou se encontrar executando a mesma tarefa repetidamente, a rota da linha de comando pode ser a melhor opção. Mesmo que você não saiba como 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 no menu Iniciar e digite 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 depois em Opções. Você verá então opções para escolher para 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 fazer isso é fazendo referência ao 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 abrindo-o no MMC, como mostrado abaixo.

Um recurso importante a ser destacado é a existência de chaves privadas embutidas. Certificados no Windows também podem ter uma chave privada correspondente. Essas chaves privadas são armazenadas em arquivos criptografados em lojas físicas correspondentes.
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 parecer apenas um pedaço de papel com uma fita, não há chave privada correspondente. Se um certificado tiver uma chave privada, você verá um ícone de chave no 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 suas lojas físicas (registro e sistema de arquivos).
Por Loja Física
Usando o cmdlet do PowerShell Get-ChildItem
, você pode enumerar todas as chaves e valores dentro do caminho da chave do registro 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á à impressão digital do certificado para uma AC confiável e seu certificado correspondente na propriedade correspondente. Você pode ver um exemplo de saída disso abaixo.

Outro repositório comum é o pessoal. Seus certificados para este repositório estão localizados no sistema de arquivos em vez do registro. Nos comandos a seguir, mostraremos esses diferentes caminhos físicos e seus propósitos.
Cada arquivo no diretório retornado pelo comando abaixo corresponde a um certificado instalado no repositório pessoal do usuário atual.
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 de Assunto do certificado. Cada chave privada que você instalar 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á 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 a Cert:
PSDrive. O PSDrive Cert:
mapeia certificados para as lojas físicas, assim como o MMC faz.
Infelizmente, o MMC e o PSDrive Cert
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 PSDrive Cert
.
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
Ao trabalhar com certificados, você precisará de uma maneira de filtrar e selecionar certificados para realizar operações específicas. Na maioria das vezes, você irá 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 da AC 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 Emissor, são úteis para encontrar o certificado que você está procurando. As extensões fornecem informações sobre o certificado, como para quem foi emitido, para que pode ser usado e quaisquer restrições sobre ele.
Em casos de uso mais complexos, você desejará encontrar certificados por outras extensões, como o modelo de certificado utilizado. A dificuldade está nos valores dessas extensões, que são retornados como um array de números inteiros. Esses números inteiros correspondem a conteúdo codificado em ASN.1.
As ScriptProperties existentes disponíveis no objeto mostram exemplos de interação com essas extensões. No comando abaixo, você extrairá manualmente os Usos de Chave para visualizar essa relação.
A nova parte que introduzimos 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 de uma única linha ou de várias linhas.
Você utilizará o valor de Impressão Digital (Thumbprint) do certificado na Figura 7 no comando abaixo. O valor de Impressão Digital é 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 Certificadora (CA).
Agora vamos criar um certificado autoassinado nas lojas do Usuário Atual e da Máquina Local para usar como 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 tudo nas 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 padronizadas de compartilhar certificados de forma eficaz. Igualmente importante é a segurança das suas chaves privadas. Armazenar chaves privadas em mídias inacessíveis ou com materiais de recuperação de desastres é uma prática comum para certas chaves privadas.
Ambos os casos 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 utilizem formatos de arquivo amplamente aceitos. A importação permite trazer 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 depois 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ê precisará 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 deve 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 apenas com uma chave pública. Quando exportado, você deve agora ter a opção de selecionar Sim, exportar a chave privada como mostrado abaixo.

Ao exportar uma chave privada no Windows, você só pode salvar o arquivo como PFX. Esses tipos de arquivo e formatos de codificação são detalhados em este post.
Para as demais configurações mostradas no assistente de exportação, você pode usar os valores padrão. A tabela abaixo é um resumo rápido de cada uma.
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 é se o arquivo inclui 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.

Quando você usa o Assistente de Importação de Certificados para um PFX, você precisará fornecer a senha usada para criptografar a chave privada. Aqui está mais 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 deve ter cuidado. Provavelmente, você terá 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, é usado o Usuário Atual, 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 sujeito.
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 ver como exportar também a chave privada. Abaixo, você está verificando se o certificado selecionado tem uma chave privada; se isso não retornar true, então o comando Get-Item
provavelmente selecionou o certificado errado.
Abaixo, você vai definir uma senha para criptografar a chave privada. Em seguida, exporte o certificado selecionado em um arquivo PFX e use a senha que você digitou anteriormente para criptografar o arquivo.
Da mesma forma que a 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.
Digamos que você queira instalar também 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\), você precisará executar o comando a partir de 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. A configuração padrão é não ser exportável. Chaves privadas exportáveis são outra consideração de segurança e merecem mais atenção em relação à forma como você as protege.
Também existem 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 de impressão digital (thumbprint).
Da mesma forma que acima, no comando abaixo selecionamos um certificado autoassinado da loja pessoal do usuário atual.
Abaixo, é possível ver as propriedades de 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 cautela. Ao passar o objeto $certificate
através do pipeline para o cmdlet Remove-Item
no comando abaixo, você irá excluir todo o conteúdo do certificado sem qualquer 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/