Share via


about_Certificate_Provider

Nom du fournisseur

Certificat

Lecteurs

Cert:

Fonctionnalités

ShouldProcess

Description courte

Fournit l’accès aux magasins de certificats X.509 et aux certificats dans PowerShell.

Description détaillée

Ces informations s’appliquent uniquement à PowerShell exécuté sur Windows.

Le fournisseur de certificats PowerShell vous permet d’obtenir, d’ajouter, de modifier, d’effacer et de supprimer des certificats et des magasins de certificats dans PowerShell.

Le lecteur de certificat est un espace de noms hiérarchique contenant les magasins de certificats et les certificats sur votre ordinateur.

Le fournisseur de certificats prend en charge les applets de commande suivantes.

Types exposés par ce fournisseur

Le lecteur certificate expose les types suivants.

  • Microsoft.PowerShell.Commands.X509StoreLocation, qui sont des conteneurs de haut niveau qui regroupent les certificats de l’utilisateur actuel et de tous les utilisateurs. Chaque système a un CurrentUser emplacement de magasin et LocalMachine (tous les utilisateurs).
  • System.Security.Cryptography.X509Certificates.X509Store, qui sont des magasins physiques où les certificats sont enregistrés et gérés.
  • System.Security.Cryptography.X509Certificates.X509Certificate2, chacun représentant un certificat X.509 sur l’ordinateur. Les certificats sont identifiés par leurs empreintes numériques.

Le fournisseur de certificat expose l’espace de noms de certificat en tant que Cert: lecteur dans PowerShell. Cette commande utilise la Set-Location commande pour remplacer l’emplacement actuel par le magasin de Root certificats dans l’emplacement du LocalMachine magasin. Utilisez une barre oblique inverse (\) ou une barre oblique (/) pour indiquer un niveau du Cert: lecteur.

Set-Location Cert:

Vous pouvez également utiliser le fournisseur de certificats à partir de n’importe quel autre lecteur PowerShell. Pour référencer un alias à partir d’un autre emplacement, utilisez le nom du Cert: lecteur dans le chemin d’accès.

PS Cert:\> Set-Location -Path LocalMachine\Root

Pour revenir à un lecteur du système de fichiers, tapez le nom du lecteur. Par exemple, entrez :

Set-Location C:

Notes

PowerShell utilise des alias pour vous permettre d’utiliser les chemins d’accès du fournisseur. Les commandes telles que dir et ls sont désormais des alias pour Get-ChildItem, cd est un alias pour Set-Location et pwd est un alias pour Get-Location.

Affichage du contenu du lecteur Cert :

Cette commande utilise l’applet Get-ChildItem de commande pour afficher les magasins de certificats à l’emplacement du magasin de CurrentUser certificats.

Si vous n’êtes pas dans le Cert: lecteur, utilisez un chemin absolu.

PS Cert:\CurrentUser\> Get-ChildItem

Affichage des propriétés de certificat dans le lecteur Cert :

Cet exemple obtient un certificat avec Get-Item et le stocke dans une variable. L’exemple montre les nouvelles propriétés de script de certificat (DnsNameList, EnhancedKeyUsageList, SendAsTrustedIssuer) à l’aide Select-Objectde .

$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

Rechercher tous les certificats CodeSigning

Cette commande utilise les paramètres CodeSigningCert et Recurse de l’applet Get-ChildItem de commande pour obtenir tous les certificats sur l’ordinateur qui disposent de l’autorité de signature de code.

Get-ChildItem -Path cert: -CodeSigningCert -Recurse

Rechercher les certificats expirés

Cette commande utilise le paramètre ExpiringInDays de l’applet Get-ChildItem de commande pour obtenir les certificats qui expirent dans les 30 prochains jours.

Get-ChildItem -Path cert:\LocalMachine\WebHosting -ExpiringInDays 30

Rechercher des certificats SSL de serveur

Cette commande utilise le paramètre SSLServerAuthentication de l’applet Get-ChildItem de commande pour obtenir tous les certificats SSL de serveur dans les My magasins et WebHosting .

$getChildItemSplat = @{
    Path = 'cert:\LocalMachine\My', 'cert:\LocalMachine\WebHosting'
    SSLServerAuthentication = $true
}
Get-ChildItem @getChildItemSplat

Rechercher les certificats expirés sur les ordinateurs distants

Cette commande utilise l’applet Invoke-Command de commande pour exécuter une Get-ChildItem commande sur les ordinateurs Srv01 et Srv02. La valeur zéro (0) dans le paramètre ExpiringInDays obtient des certificats sur les ordinateurs Srv01 et Srv02 qui ont expiré.

$invokeCommandSplat = @{
    ComputerName = 'Srv01', 'Srv02'
    ScriptBlock = {
        Get-ChildItem -Path cert:\* -Recurse -ExpiringInDays 0
    }
}
Invoke-Command @invokeCommandSplat

Combinaison de filtres pour rechercher un ensemble spécifique de certificats

Cette commande obtient tous les certificats à l’emplacement du LocalMachine magasin qui ont les attributs suivants :

  • fabrikam dans leur nom DNS
  • Client Authentication dans leur EKU
  • valeur de $true pour la propriété SendAsTrustedIssuer
  • n’expirent pas dans les 30 prochains jours.

La propriété NotAfter stocke la date d’expiration du certificat.

[DateTime] $ValidThrough = (Get-Date) + (New-TimeSpan -Days 30)
$getChildItemSplat = @{
    Path = 'cert:\*'
    Recurse = $true
    DnsName = "*fabrikam*"
    Eku = "*Client Authentication*"
}
Get-ChildItem @getChildItemSplat |
    Where-Object {$_.SendAsTrustedIssuer -and $_.NotAfter -gt $ValidThrough }

Ouverture du composant logiciel enfichable MMC Certificats

L’applet Invoke-Item de commande utilise l’application par défaut pour ouvrir un chemin que vous spécifiez. Pour les certificats, l’application par défaut est le composant logiciel enfichable MMC Certificats.

Cette commande ouvre le composant logiciel enfichable MMC Certificats pour gérer le certificat spécifié.

Invoke-Item cert:\CurrentUser\my\6B8223358119BB08840DEE50FD8AF9EA776CE66B

Copie des certificats

La copie de certificats n’est pas prise en charge par le fournisseur de certificats . Lorsque vous essayez de copier un certificat, cette erreur s’affiche.

$path = "Cert:\LocalMachine\Root\E2C0F6662D3C569705B4B31FE2CBF3434094B254"
PS Cert:\LocalMachine\> Copy-Item -Path $path -Destination .\CA\
Copy-Item : Provider operation stopped because the provider doesn't 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

Déplacement de certificats

Déplacer tous les certificats d’authentification du serveur SSL vers le magasin WebHosting

Cette commande utilise l’applet Move-Item de commande pour déplacer un certificat du My magasin vers le WebHosting magasin.

Move-Item ne peut pas déplacer de magasins de certificats et il ne peut pas déplacer les certificats vers un autre emplacement de magasin, par exemple déplacer un certificat de LocalMachine vers CurrentUser. L’applet Move-Item de commande peut déplacer des certificats dans un magasin, mais elle ne déplace pas les clés privées.

Cette commande utilise le paramètre SSLServerAuthentication de l’applet Get-ChildItem de commande pour obtenir des certificats d’authentification de serveur SSL dans le magasin de My certificats.

Les certificats retournés sont dirigés vers l’applet Move-Item de commande, qui les déplace vers le WebHosting magasin.

Get-ChildItem cert:\LocalMachine\My -SSLServerAuthentication |
    Move-Item -Destination cert:\LocalMachine\WebHosting

Suppression de certificats et de clés privées

L’applet Remove-Item de commande supprime les certificats que vous spécifiez. Le paramètre dynamique DeleteKey supprime la clé privée.

Supprimer un certificat du magasin d’autorité de certification

Cette commande supprime un certificat dans le magasin de certificats d'autorité de certification, mais laisse la clé privée associée intacte.

Dans le Cert: lecteur, l’applet de Remove-Item commande prend uniquement en charge les paramètres DeleteKey, Path, WhatIf et Confirm . Tous les autres paramètres sont ignorés.

Remove-Item cert:\LocalMachine\CA\5DDC44652E62BF9AA1116DC41DE44AB47C87BDD0

Supprimer un certificat à l’aide d’un caractère générique dans le nom DNS

Cette commande supprime tous les certificats dont le nom DNS contient Fabrikam. Il utilise le paramètre DNSName de l’applet Get-ChildItem de commande pour obtenir les certificats et l’applet de Remove-Item commande pour les supprimer.

Get-ChildItem -Path cert:\LocalMachine -DnsName *Fabrikam* | Remove-Item

Supprimer des clés privées d’un ordinateur distant

Cette série de commandes active la délégation, puis supprime le certificat et la clé privée associée sur un ordinateur distant. Pour supprimer une clé privée sur un ordinateur distant, vous devez utiliser des informations d'identification déléguées.

Utilisez l’applet de commande pour activer l’authentification Enable-WSManCredSSP credSSP (Credential Security Service Provider) sur un client sur l’ordinateur distant S1. CredSSP autorise l'authentification déléguée.

Enable-WSManCredSSP -Role Client -DelegateComputer S1

Utilisez l’applet Connect-WSMan de commande pour connecter l’ordinateur S1 au service WinRM sur l’ordinateur local. Une fois cette commande terminée, l’ordinateur S1 apparaît sur le lecteur local WSMan: dans PowerShell.

Connect-WSMan -ComputerName S1 -Credential Domain01\Admin01

À présent, vous pouvez utiliser l’applet Set-Item de commande dans le WSMan: lecteur pour activer l’attribut CredSSP pour le service WinRM.

Set-Item -Path WSMan:\S1\Service\Auth\CredSSP -Value $true

Démarrez une session à distance sur l’ordinateur S1 à l’aide de l’applet New-PSSession de commande et spécifiez l’authentification CredSSP. Enregistre la session dans la $s variable.

$s  = New-PSSession S1 -Authentication CredSSP -Credential Domain01\Admin01

Enfin, utilisez l’applet de Invoke-Command commande pour exécuter une Remove-Item commande dans la session dans la $s variable . La Remove-Item commande utilise le paramètre DeleteKey pour supprimer la clé privée ainsi que le certificat spécifié.

Invoke-Command -Session $s {
    $removeItemSplat = @{
        Path = 'cert:\LocalMachine\My\D2D38EBA60CAA1C12055A2E1C83B15AD450110C2'
        DeleteKey = $true
    }
    Remove-Item @removeItemSplat
}

Supprimer des certificats expirés

Cette commande utilise le paramètre ExpiringInDays de l’applet Get-ChildItem de commande avec une valeur de 0 pour obtenir dans le WebHosting magasin les certificats qui ont expiré.

La variable contenant les certificats retournés est redirigée vers l’applet de Remove-Item commande, qui les supprime. La commande utilise le paramètre DeleteKey pour supprimer la clé privée ainsi que le certificat.

$expired = Get-ChildItem cert:\LocalMachine\WebHosting -ExpiringInDays 0
$expired | Remove-Item -DeleteKey

Création de certificats

L’applet New-Item de commande ne crée pas de nouveaux certificats dans le fournisseur de certificats . Utilisez l’applet de commande New-SelfSignedCertificate pour créer un certificat à des fins de test.

Création de magasins de certificats

Dans le Cert: lecteur, l’applet de New-Item commande crée des magasins de certificats à l’emplacement du LocalMachine magasin. Il prend en charge les paramètres Name, Path, WhatIf et Confirm . Tous les autres paramètres sont ignorés. La commande retourne un System.Security.Cryptography.X509Certificates.X509Store qui représente le nouveau magasin de certificats.

Cette commande crée un magasin de certificats nommé CustomStore à l’emplacement du LocalMachine magasin.

New-Item -Path cert:\LocalMachine\CustomStore

Create un nouveau magasin de certificats sur un ordinateur distant

Cette commande crée un magasin de certificats nommé HostingStore à l’emplacement du LocalMachine magasin sur l’ordinateur Server01.

La commande utilise l’applet de Invoke-Command commande pour exécuter une New-Item commande sur l’ordinateur Server01. La commande retourne un System.Security.Cryptography.X509Certificates.X509Store qui représente le nouveau magasin de certificats.

Invoke-Command -ComputerName Server01 -ScriptBlock {
    New-Item -Path cert:\LocalMachine\CustomStore
}

Création de certificats clients pour WS-Man

Cette commande crée une entrée ClientCertificate qui peut être utilisée par le client WS-Management . Le nouveau ClientCertificate s’affiche sous le répertoire ClientCertificate sous la forme ClientCertificate_1234567890. Tous les paramètres sont obligatoires. L’émetteur doit être une empreinte numérique du certificat de l’émetteur.

$newItemSplat = @{
    Path = 'WSMan:\localhost\ClientCertificate'
    Credential = Get-Credential
    Issuer = '1b3fd224d66c6413fe20d21e38b304226d192dfe'
    URI = 'wmicimv2/*'
}
New-Item @newItemSplat

Suppression de magasins de certificats

Supprimer un magasin de certificats d’un ordinateur distant

Cette commande utilise l’applet de Invoke-Command commande pour exécuter une Remove-Item commande sur les ordinateurs S1 et S2. La Remove-Item commande inclut le paramètre Recurse , qui supprime les certificats dans le magasin avant de supprimer le magasin.

Invoke-Command -ComputerName S1, S2 -ScriptBlock {
    Remove-Item -Path cert:\LocalMachine\TestStore -Recurse
}

Paramètres dynamiques

Les paramètres dynamiques sont des paramètres d’applet de commande qui sont ajoutés par un fournisseur PowerShell et sont disponibles uniquement lorsque l’applet de commande est utilisée dans le lecteur avec le fournisseur. Ces paramètres sont valides dans tous les sous-répertoires du fournisseur de certificats , mais ne sont effectifs que sur les certificats.

Notes

Les paramètres qui effectuent un filtrage par rapport à la propriété EnhancedKeyUsageList retournent également des éléments avec une valeur de propriété EnhancedKeyUsageList vide. Les certificats qui ont un enhancedKeyUsageList vide peuvent être utilisés à toutes fins.

Les paramètres de fournisseur de certificats suivants ont été réintroduits dans PowerShell 7.1.

  • DNSName
  • DocumentEncryptionCert
  • EKU
  • ExpiringInDays
  • SSLServerAuthentication

CodeSigningCert <System.Management.Automation.SwitchParameter>

Applets de commande prises en charge

Ce paramètre obtient les certificats qui ont Code Signing dans leur valeur de propriété EnhancedKeyUsageList .

DeleteKey <System.Management.Automation.SwitchParameter>

Applets de commande prises en charge

Ce paramètre supprime la clé privée associée lorsqu’il supprime le certificat.

Important

Pour supprimer une clé privée associée à un certificat utilisateur dans le Cert:\CurrentUser magasin sur un ordinateur distant, vous devez utiliser des informations d’identification déléguées. L’applet Invoke-Command de commande prend en charge la délégation d’informations d’identification à l’aide du paramètre CredSSP . Vous devez prendre en compte tous les risques de sécurité avant d’utiliser Remove-Item avec Invoke-Command et la délégation d’informations d’identification.

Ce paramètre a été réintroduit dans PowerShell 7.1

DnsName <Microsoft.PowerShell.Commands.DnsNameRepresentation>

Applets de commande prises en charge

Ce paramètre obtient les certificats qui ont le nom de domaine ou le modèle de nom spécifié dans la propriété DNSNameList du certificat. La valeur de ce paramètre peut être Unicode ou ASCII. Les valeurs Punycode sont converties en Unicode. Les caractères génériques (*) sont autorisés.

Ce paramètre a été réintroduit dans PowerShell 7.1

DocumentEncryptionCert <System.Management.Automation.SwitchParameter>

Applets de commande prises en charge

Ce paramètre obtient les certificats qui ont Document Encryption dans leur valeur de propriété EnhancedKeyUsageList .

EKU <System.String>

Applets de commande prises en charge

Ce paramètre obtient les certificats qui ont le modèle de texte ou de texte spécifié dans la propriété EnhancedKeyUsageList du certificat. Les caractères génériques (*) sont autorisés. La propriété EnhancedKeyUsageList contient le nom convivial et les champs OID de l’EKU.

Ce paramètre a été réintroduit dans PowerShell 7.1

ExpiringInDays <System.Int32>

Applets de commande prises en charge

Ce paramètre obtient les certificats qui expirent dans ou avant le nombre de jours spécifié. Une valeur de zéro (0) obtient les certificats qui ont expiré.

Ce paramètre a été réintroduit dans PowerShell 7.1

ItemType <System.String>

Ce paramètre est utilisé pour spécifier le type d’élément créé par New-Item. L’applet New-Item de commande prend uniquement en charge la valeur Store. New-Item L’applet de commande ne peut pas créer de certificats.

Applets de commande prises en charge

SSLServerAuthentication <System.Management.Automation.SwitchParameter>

Applets de commande prises en charge

Obtient seulement les certificats serveur pour l'hébergement web SSL. Ce paramètre obtient les certificats qui ont Server Authentication dans leur valeur de propriété EnhancedKeyUsageList .

Ce paramètre a été réintroduit dans PowerShell 7.1

Propriétés du script

De nouvelles propriétés de script ont été ajoutées à l’objet x509Certificate2 qui représente les certificats pour faciliter la recherche et la gestion des certificats.

  • DnsNameList : pour remplir la propriété DnsNameList , le fournisseur de certificat copie le contenu de l’entrée DNSName dans l’extension SubjectAlternativeName (SAN). Si l'extension SAN est vide, la propriété est affectée du contenu du champ Objet du certificat.
  • EnhancedKeyUsageList : pour remplir la propriété EnhancedKeyUsageList , le fournisseur de certificat copie les propriétés OID du champ EnhancedKeyUsage (EKU) dans le certificat et crée un nom convivial pour celui-ci.
  • SendAsTrustedIssuer : pour remplir la propriété SendAsTrustedIssuer , le fournisseur de certificat copie la propriété SendAsTrustedIssuer à partir du certificat. Pour plus d’informations, consultez Gestion des émetteurs approuvés pour l’authentification client.

Ces nouvelles fonctionnalités vous permettent de rechercher des certificats d'après leur nom DNS et leur date d'expiration, et de distinguer les certificats d'authentification client et serveur par la valeur de leurs propriétés d'utilisation améliorée de la clé (EKU).

Utilisation du pipeline

Les applets de commande du fournisseur acceptent l’entrée de pipeline. Vous pouvez utiliser le pipeline pour simplifier les tâches en envoyant des données de fournisseur d’une applet de commande à une autre applet de commande de fournisseur. Pour en savoir plus sur l’utilisation du pipeline avec des applets de commande de fournisseur, consultez les références d’applet de commande fournies dans cet article.

Obtenir de l’aide

À partir de PowerShell 3.0, vous pouvez obtenir des rubriques d’aide personnalisées pour les applets de commande de fournisseur qui expliquent comment ces applets de commande se comportent dans un lecteur de système de fichiers.

Pour obtenir les rubriques d’aide personnalisées pour le lecteur de système de fichiers, exécutez une commande Get-Help dans un lecteur de système de fichiers ou utilisez le -Path paramètre de pour spécifier un lecteur de système de Get-Help fichiers.

Get-Help Get-ChildItem
Get-Help Get-ChildItem -Path cert:

Voir aussi