Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Nome do provedor
Certificado
Unidades
Cert:
Capacidades
Processo Deve
Descrição curta
Fornece acesso a repositórios de certificados X.509 e certificados no PowerShell.
Descrição detalhada
Essas informações se aplicam apenas ao PowerShell em execução no Windows.
O provedor de de Certificado do PowerShell
A unidade de Certificado
O provedor de certificados dá suporte aos cmdlets a seguir, que são abordados neste artigo.
- Obter localização
- Definir localização
- Obter Item
- Get-ChildItem
- Invocar item
- Mover Item
- Novo item
- Remover Item
- Get-ItemProperty
- Propriedade de item definido
- Propriedade de item claro
- Get-AuthenticodeSignature
- Set-AuthenticodeSignature
Tipos expostos por esse provedor
A unidade Certificate expõe os seguintes tipos.
- Locais de armazenamento (Microsoft.PowerShell.Commands.X509StoreLocation), que são contêineres de alto nível que agrupam os certificados para o usuário atual e para todos os usuários. Cada sistema tem um local de repositório
CurrentUsereLocalMachine(todos os usuários). - Repositórios de certificados (System.Security.Cryptography.X509Certificates.X509Store), que são repositórios físicos nos quais os certificados são salvos e gerenciados.
- Certificados X.509 System.Security.Cryptography.X509Certificates.X509Certificate2 , cada um dos quais representa um certificado X.509 no computador. Os certificados são identificados por suas impressões digitais.
Navegando na unidade de certificado
O provedor de de Certificado Set-Location para alterar o local atual para o repositório de certificados Root no local do repositório LocalMachine. Use uma barra invertida (\) ou uma barra (/) para indicar um nível da unidade Cert:.
Set-Location Cert:
Você também pode trabalhar com o provedor de certificados de qualquer outra unidade do PowerShell.
Para fazer referência a um alias de outro local, use o nome de unidade Cert: no caminho.
PS Cert:\> Set-Location -Path LocalMachine\Root
Para retornar a uma unidade do sistema de arquivos, digite o nome da unidade. Por exemplo, digite:
Set-Location C:
Observação
O PowerShell usa aliases para permitir uma maneira familiar de trabalhar com caminhos de provedores. Comandos como dir e ls agora são aliases para Get-ChildItem, cd é um alias para set-location. e pwd é um apelido para Get-Location.
Exibindo o conteúdo do Cert: unidade
Esse comando usa o cmdlet Get-ChildItem para exibir os repositórios de certificados no local do repositório de certificados CurrentUser.
Se você não estiver na Cert: unidade, use um caminho absoluto.
PS Cert:\CurrentUser\> Get-ChildItem
Exibindo propriedades de certificado dentro da unidade Cert:
Este exemplo obtém um certificado com Get-Item e o armazena em uma variável. O exemplo mostra as novas propriedades de script de certificado (DnsNameList, EnhancedKeyUsageList, SendAsTrustedIssuer) usando Select-Object.
$c = Get-Item cert:\LocalMachine\My\52A149D0393CE8A8D4AF0B172ED667A9E3A1F44E
$c | Format-List DnsNameList, EnhancedKeyUsageList, SendAsTrustedIssuer
DnsNameList : {SERVER01.contoso.com}
EnhancedKeyUsageList : {WiFi-Machine (1.3.6.1.4.1.311.42.2.6),
Client Authentication (1.3.6.1.5.5.7.3.2)}
SendAsTrustedIssuer : False
Localizar todos os certificados codeSigning
Esse comando usa os parâmetros CodeSigningCert e Recurse do Get-ChildItem cmdlet para obter todos os certificados no computador que têm autoridade de assinatura de código.
Get-ChildItem -Path cert: -CodeSigningCert -Recurse
Localizar certificados expirados
Esse comando usa o parâmetro ExpiringInDays do Get-ChildItem cmdlet para obter certificados que expirarão nos próximos 30 dias.
Get-ChildItem -Path cert:\LocalMachine\WebHosting -ExpiringInDays 30
Localizar certificados SSL do servidor
Esse comando usa o parâmetro SSLServerAuthentication do cmdlet Get-ChildItem para obter todos os Certificados SSL do Servidor nos repositórios My e WebHosting.
Get-ChildItem -Path cert:\LocalMachine\My, cert:\LocalMachine\WebHosting `
-SSLServerAuthentication
Localizar certificados expirados em computadores remotos
Esse comando usa o cmdlet Invoke-Command para executar um comando Get-ChildItem nos computadores Srv01 e Srv02. Um valor zero (
Invoke-Command -ComputerName Srv01, Srv02 {Get-ChildItem -Path cert:\* `
-Recurse -ExpiringInDays 0}
Combinando filtros para localizar um conjunto específico de certificados
Esse comando obtém todos os certificados no local do repositório LocalMachine que têm os seguintes atributos:
-
fabrikamem seu nome DNS -
Client Authenticationem sua EKU - um valor de
$truepara a propriedade SendAsTrustedIssuer - não expiram nos próximos 30 dias.
A propriedade NotAfter armazena a data de validade do certificado.
[DateTime] $ValidThrough = (Get-Date) + (New-TimeSpan -Days 30)
Get-ChildItem -Path cert:\* -Recurse -DNSName "*fabrikam*" `
-EKU "*Client Authentication*" | Where-Object {
$_.SendAsTrustedIssuer -and `
$_.NotAfter -gt $ValidThrough
}
Abrindo o snap-in MMC de certificados
O Invoke-Item cmdlet usará o aplicativo padrão para abrir um caminho especificado. Para certificados, o aplicativo padrão é o snap-in MMC de certificados.
Esse comando abre o snap-in MMC de certificados para gerenciar o certificado especificado.
Invoke-Item cert:\CurrentUser\my\6B8223358119BB08840DEE50FD8AF9EA776CE66B
Copiando certificados
Não há suporte para a cópia de certificados pelo provedor de certificados . Ao tentar copiar um certificado, você verá esse erro.
$path = "Cert:\LocalMachine\Root\E2C0F6662D3C569705B4B31FE2CBF3434094B254"
PS Cert:\LocalMachine\> Copy-Item -Path $path -Destination .\CA\
Copy-Item : Provider operation stopped because the provider does not support
this operation.
At line:1 char:1
+ Copy-Item -Path $path -Destination .\CA\
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotImplemented: (:) [Copy-Item],
PSNotSupportedException
+ FullyQualifiedErrorId : NotSupported,
Microsoft.PowerShell.Commands.CopyItemCommand
Movendo certificados
Mover todos os certificados de autenticação do SSL Server para o repositório WebHosting
Esse comando usa o cmdlet Move-Item para mover um certificado do repositório My para o repositório WebHosting.
Move-Itemnão moverá os armazenamentos de certificados e não moverá os certificados para um local de armazenamento diferente, como mover um certificado de LocalMachine para .CurrentUser O Move-Item cmdlet move certificados, mas não move chaves privadas.
Esse comando usa o parâmetro
Os certificados retornados são canalizados para o cmdlet Move-Item, que move os certificados para o repositório WebHosting.
Get-ChildItem cert:\LocalMachine\My -SSLServerAuthentication | Move-Item `
-Destination cert:\LocalMachine\WebHosting
Excluindo certificados e chaves privadas
O Remove-Item cmdlet removerá os certificados que você especificar. O parâmetro dinâmico DeleteKey exclui a chave privada.
Excluir um certificado do repositório de AC
Esse comando exclui um certificado do repositório de certificados de autoridade de certificação, mas deixa a chave privada associada intacta.
Na unidade de Cert:, o cmdlet Remove-Item dá suporte apenas aos parâmetros DeleteKey, Path, WhatIfe Confirm. Todos os outros parâmetros são ignorados.
Remove-Item cert:\LocalMachine\CA\5DDC44652E62BF9AA1116DC41DE44AB47C87BDD0
Excluir um certificado usando um curinga no nome DNS
Esse comando exclui todos os certificados que têm um nome DNS que contém Fabrikam. Ele usa o parâmetro DNSName do cmdlet Get-ChildItem para obter os certificados e o cmdlet Remove-Item para excluí-los.
Get-ChildItem -Path cert:\LocalMachine -DnsName *Fabrikam* | Remove-Item
Excluir chaves privadas de um computador remoto
Essa série de comandos habilita a delegação e, em seguida, exclui o certificado e a chave privada associada em um computador remoto. Para excluir uma chave privada em um computador remoto, você deve usar credenciais delegadas.
Use o cmdlet Enable-WSManCredSSP para habilitar a autenticação credSSP (Provedor de Serviços de Segurança de Credencial) em um cliente no computador remoto S1.
O CredSSP permite a autenticação delegada.
Enable-WSManCredSSP -Role Client -DelegateComputer S1
Use o cmdlet Connect-WSMan para conectar o computador S1 ao serviço WinRM no computador local. Quando esse comando é concluído, o computador S1 aparece na unidade de WSMan: local no PowerShell.
Connect-WSMan -ComputerName S1 -Credential Domain01\Admin01
Agora, você pode usar o cmdlet Set-Item na unidade WSMan: para habilitar o atributo CredSSP para o serviço WinRM.
Set-Item -Path WSMan:\S1\Service\Auth\CredSSP -Value $true
Inicie uma sessão remota no computador S1 usando o cmdlet New-PSSession e especifique a autenticação credSSP. Salva a sessão na variável $s.
$s = New-PSSession S1 -Authentication CredSSP -Credential Domain01\Admin01
Por fim, use o cmdlet Invoke-Command para executar um comando Remove-Item na sessão na variável $s. O comando Remove-Item usa o parâmetro DeleteKey para remover a chave privada junto com o certificado especificado.
Invoke-Command -Session $s { Remove-Item `
-Path cert:\LocalMachine\My\D2D38EBA60CAA1C12055A2E1C83B15AD450110C2 `
-DeleteKey
}
Excluir certificados expirados
Esse comando usa o parâmetro
A variável que contém os certificados retornados é canalizada para o cmdlet Remove-Item, que os exclui. O comando usa o parâmetro DeleteKey para excluir a chave privada junto com o certificado.
$expired = Get-ChildItem cert:\LocalMachine\WebHosting -ExpiringInDays 0
$expired | Remove-Item -DeleteKey
Criando certificados
O New-Item cmdlet não cria novos certificados no provedor de certificados . Use o cmdlet New-SelfSignedCertificate para criar um certificado para fins de teste.
Criando repositórios de certificados
Na unidade Cert:, o cmdlet New-Item cria repositórios de certificados no local do repositório LocalMachine. Ele dá suporte aos parâmetros Name, Path, WhatIfe Confirm. Todos os outros parâmetros são ignorados. O comando retorna um
Esse comando cria um novo repositório de certificados chamado CustomStore no local do repositório LocalMachine.
New-Item -Path cert:\LocalMachine\CustomStore
Criar um novo repositório de certificados em um computador remoto
Esse comando cria um novo repositório de certificados chamado HostingStore no local do repositório LocalMachine no computador Server01.
O comando usa o cmdlet Invoke-Command para executar um comando New-Item no computador Server01. O comando retorna um
Invoke-Command { New-Item -Path cert:\LocalMachine\CustomStore } `
-ComputerName Server01
Criando certificados de cliente para WS-Man
Esse comando cria ClientCertificate_1234567890. Todos os parâmetros são obrigatórios. O emissor precisa ser a impressão digital do certificado do emissor.
$cred = Get-Credential
New-Item -Path WSMan:\localhost\ClientCertificate `
-Issuer 1b3fd224d66c6413fe20d21e38b304226d192dfe `
-URI wmicimv2/* -Credential $cred
Excluindo repositórios de certificados
Excluir um repositório de certificados de um computador remoto
Esse comando usa o cmdlet Invoke-Command para executar um comando Remove-Item nos computadores S1 e S2. O comando Remove-Item inclui o parâmetro Recurse, que exclui os certificados no repositório antes de excluir o repositório.
Invoke-Command { Remove-Item -Path cert:\LocalMachine\TestStore -Recurse } `
-ComputerName S1, S2
Parâmetros dinâmicos
Parâmetros dinâmicos são parâmetros de cmdlet que são adicionados por um provedor do PowerShell e estão disponíveis somente quando o cmdlet está sendo usado na unidade habilitada para provedor. Esses parâmetros são válidos em todos os subdiretórios do provedor Certificate, mas são eficazes apenas em certificados.
Observação
Os parâmetros que executam a filtragem na propriedade EnhancedKeyUsageList também retornam itens com um valor de propriedade EnhancedKeyUsageList vazio. Certificados que têm um EnhancedKeyUsageList vazios podem ser usados para todas as finalidades.
Os seguintes parâmetros do provedor de certificados foram reintroduzidos no PowerShell 7.1.
- DNSName
- DocumentEncryptionCert
- de EKU
- ExpiringInDays
- SSLServerAuthentication
CodeSigningCert <System.Management.Automation.SwitchParameter>
Cmdlets suportados
Esse parâmetro obtém certificados que têm Code Signing em seu valor de propriedade EnhancedKeyUsageList.
DeleteKey <> System.Management.Automation.SwitchParameter
Cmdlets suportados
Esse parâmetro exclui a chave privada associada quando exclui o certificado.
Importante
Para excluir uma chave privada associada a Cert:\CurrentUser um certificado de usuário no repositório em um computador remoto, você deve usar credenciais delegadas. O cmdlet Remove-Item com Invoke-Command e delegação de credenciais.
Esse parâmetro foi reintroduzido no PowerShell 7.1
DnsName <Microsoft.PowerShell.Commands.DnsNameRepresentation>
Cmdlets suportados
Esse parâmetro obtém certificados que têm o nome de domínio especificado ou o padrão de nome na propriedade DNSNameList do certificado. O valor desse parâmetro pode ser Unicode ou ASCII. Os valores de Punycode são convertidos em Unicode. Caracteres curinga (*) são permitidos.
Esse parâmetro foi reintroduzido no PowerShell 7.1
DocumentEncryptionCert <System.Management.Automation.SwitchParameter>
Cmdlets suportados
Esse parâmetro obtém certificados que têm Document Encryption em seu valor de propriedade EnhancedKeyUsageList.
< System.String >de EKU
Cmdlets suportados
Esse parâmetro obtém certificados que têm o padrão de texto ou texto especificado na propriedade EnhancedKeyUsageList do certificado. Caracteres curinga (*) são permitidos. A propriedade EnhancedKeyUsageList contém o nome amigável e os campos OID do EKU.
Esse parâmetro foi reintroduzido no PowerShell 7.1
< >System.Int32 do ExpiringInDays
Cmdlets suportados
Esse parâmetro obtém certificados que estão expirando dentro ou antes do número especificado de dias. Um valor zero (0) obtém certificados que expiraram.
Esse parâmetro foi reintroduzido no PowerShell 7.1
< >System.String do ItemType
Esse parâmetro permite que você especifique o tipo de item criado pelo New-Item.
Em uma unidade Certificate, os seguintes valores são permitidos:
Certificate ProviderCertificateStoreStoreLocation
Cmdlets com suporte
SSLServerAuthentication <System.Management.Automation.SwitchParameter>
Cmdlets suportados
Obtém apenas certificados de servidor para hospedagem da Web SSL. Esse parâmetro obtém certificados que têm Server Authentication em seu valor de propriedade EnhancedKeyUsageList.
Esse parâmetro foi reintroduzido no PowerShell 7.1
Propriedades de script
Novas propriedades de script foram adicionadas ao objeto x509Certificate2 que representa os certificados para facilitar a pesquisa e o gerenciamento dos certificados.
- DnsNameList: para preencher a propriedade DnsNameList, o provedor de certificados copia o conteúdo da entrada DNSName na extensão SubjectAlternativeName (SAN). Se a extensão SAN estiver vazia, a propriedade será preenchida com o conteúdo do campo Assunto do certificado.
EnhancedKeyUsageList : para preencher a propriedadeEnhancedKeyUsageList, o provedor de certificado copia as propriedades OID do campo EKU (EnhancedKeyUsage) no certificado e cria um nome amigável para ele. sendAsTrustedIssuer : para preencher a propriedade SendAsTrustedIssuer, o provedor de certificado copia a propriedade SendAsTrustedIssuer do certificado. Para obter mais informações, consulte Gerenciamento de emissores confiáveis parade autenticação de cliente.
Esses novos recursos permitem que você pesquise certificados com base em seus nomes DNS e datas de validade e distingue certificados de autenticação de cliente e servidor pelo valor de suas propriedades de EKU (Uso Avançado de Chave).
Usar o pipeline
Os cmdlets do provedor aceitam entrada de pipeline. Você pode usar o pipeline para simplificar tarefas enviando dados do provedor de um cmdlet para outro cmdlet do provedor. Para saber mais sobre como usar o pipeline com cmdlets de provedor, consulte as referências de cmdlet fornecidas ao longo deste artigo.
Obtendo ajuda
A partir do PowerShell 3.0, você pode obter tópicos de ajuda personalizados para cmdlets de provedor que explicam como esses cmdlets se comportam em uma unidade do sistema de arquivos.
Para obter os tópicos de ajuda personalizados para a unidade do sistema de arquivos, execute um comando Get-Help em uma unidade do sistema de arquivos ou use o parâmetro -Path de Get-Help para especificar uma unidade do sistema de arquivos.
Get-Help Get-ChildItem
Get-Help Get-ChildItem -Path cert: