about_Certificate_Provider

Nom du fournisseur

Certificat

Lecteurs

Cert:

Fonctionnalités

ShouldProcess

Description courte

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

Description détaillée

Ces informations s’appliquent uniquement à PowerShell s’exécutant 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 de certificat expose les types suivants.

  • Microsoft.PowerShell.Commands.X509StoreLocation, qui sont des conteneurs de haut niveau qui regroupent les certificats pour l’utilisateur actuel et pour tous les utilisateurs. Chaque système dispose d’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.

Le fournisseur de certificats 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 Root magasin de certificats à l’emplacement du magasin.LocalMachine 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 Cert: nom du 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:

Remarque

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

Affichage du contenu du certificat : lecteur

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 disposant d’une autorité de signature de code.

Get-ChildItem -Path cert: -CodeSigningCert -Recurse

Rechercher des certificats expirés

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

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

Rechercher des certificats SSL serveur

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

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

Rechercher des certificats expirés sur des 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 dans l’emplacement du LocalMachine magasin qui ont les attributs suivants :

  • fabrikam dans leur nom DNS
  • Client Authentication dans leur référence EKU
  • valeur de $true la propriété SendAsTrustedIssuer
  • n’expirez 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 d’accès que vous spécifiez. Pour les certificats, l’application par défaut est le composant logiciel enfichable Certificats MMC.

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

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

Copie de certificats

La copie de certificats n’est pas prise en charge par le fournisseur de certificats . Lorsque vous tentez 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 de certificats vers un autre emplacement de magasin, par exemple le déplacement d’un certificat LocalMachine vers CurrentUser. L’applet Move-Item de commande peut déplacer des certificats dans un magasin, mais elle ne déplace pas de 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 redirigés vers l’applet Move-Item de commande, ce qui déplace les certificats 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 du magasin de certificats d’autorité de certification, mais laisse la clé privée associée intacte.

Dans le Cert: lecteur, l’applet Remove-Item de 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 carte s dans le nom DNS

Cette commande supprime tous les certificats qui ont un nom DNS qui contient Fabrikam. Il utilise le paramètre DNSName de l’applet Get-ChildItem de commande pour obtenir les certificats et l’applet Remove-Item de 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 dans 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 Invoke-Command de 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 les certificats expirés

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

La variable contenant les certificats retournés est redirigée vers l’applet Remove-Item de 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 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 lecteur, l’applet Cert:New-Item de 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

Créer un 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 Invoke-Command de 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 en tant que ClientCertificate_1234567890. Tous les paramètres sont obligatoires. L’émetteur doit être l’empreinte numérique du certificat de l’émetteur.

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

Suppression des magasins de certificats

Supprimer un magasin de certificats d’un ordinateur distant

Cette commande utilise l’applet Invoke-Command de 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 sont efficaces uniquement sur les certificats.

Remarque

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éintroduis dans PowerShell 7.1.

  • DNSName
  • DocumentEncryptionCert
  • EKU
  • Expiration deInDays
  • SSLServerAuthentication

CodeSigningCert <System.Management.Automation.SwitchParameter>

Applets de commande prises en charge

Ce paramètre obtient des 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 les risques de sécurité avant d’utiliser Remove-Item avec et délégation Invoke-Command d’informations d’identification.

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

DnsName <Microsoft.PowerShell.Commands.DnsNameRepresentation>

Applets de commande prises en charge

Ce paramètre obtient des 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 carte (*) sont autorisés.

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

DocumentEncryptionCert <System.Management.Automation.SwitchParameter>

Applets de commande prises en charge

Ce paramètre obtient des 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 des 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 carte (*) sont autorisés. La propriété EnhancedKeyUsageList contient le nom convivial et les champs OID de la référence EKU.

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

Expiration de System.Int32 <>

Applets de commande prises en charge

Ce paramètre obtient des certificats arrivant à expiration ou avant le nombre de jours spécifié. La valeur zéro (0) obtient les certificats qui ont expiré.

Ce paramètre a été réintroduite 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 des certificats qui ont Server Authentication dans leur valeur de propriété EnhancedKeyUsageList .

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

Propriétés de 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 certificats 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 certificats 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 certificats copie la propriété SendAsTrustedIssuer à partir du certificat. Pour plus d’informations, consultez Gestion des émetteurs approuvés pour l’authentification du client.

Ces nouvelles fonctionnalités vous permettent de rechercher des certificats en fonction de leurs noms DNS et dates d’expiration, et de distinguer les certificats d’authentification client et serveur par la valeur de leurs propriétés EKU (Enhanced Key Usage).

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 du 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

À compter 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 spécification d’un lecteur de système de Get-Help fichiers.

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

Voir aussi