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, qui sont traitées dans cet article.
- Get-Location
- Set-Location
- Get-Item
- Get-ChildItem
- Invoke-Item
- Move-Item
- New-Item
- Remove-Item
- Get-ItemProperty
- Set-ItemProperty
- Clear-ItemProperty
- Get-AuthenticodeSignature
- Set-AuthenticodeSignature
Types exposés par ce fournisseur
Le lecteur certificate expose les types suivants.
- Emplacements du magasin (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 etLocalMachine
(tous les utilisateurs). - Magasins de certificats (System.Security.Cryptography.X509Certificates.X509Store), qui sont des magasins physiques dans lesquels les certificats sont enregistrés et gérés.
- Certificats X.509 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.
Navigation dans le lecteur de certificat
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-Object
de .
$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 des certificats qui expireront 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
.
Get-ChildItem -Path cert:\LocalMachine\My, cert:\LocalMachine\WebHosting `
-SSLServerAuthentication
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é.
Invoke-Command -ComputerName Srv01, Srv02 {Get-ChildItem -Path cert:\* `
-Recurse -ExpiringInDays 0}
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 DNSClient 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)
Get-ChildItem -Path cert:\* -Recurse -DNSName "*fabrikam*" `
-EKU "*Client Authentication*" | 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 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
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 déplace pas les magasins de certificats et ne déplace pas les certificats vers un autre emplacement de magasin, comme le déplacement d’un certificat de LocalMachine
vers CurrentUser
. L’applet Move-Item
de commande déplace les certificats, 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
Maintenant, 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 { Remove-Item `
-Path cert:\LocalMachine\My\D2D38EBA60CAA1C12055A2E1C83B15AD450110C2 `
-DeleteKey
}
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 { New-Item -Path cert:\LocalMachine\CustomStore } `
-ComputerName Server01
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.
$cred = Get-Credential
New-Item -Path WSMan:\localhost\ClientCertificate `
-Issuer 1b3fd224d66c6413fe20d21e38b304226d192dfe `
-URI wmicimv2/* -Credential $cred
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 { Remove-Item -Path cert:\LocalMachine\TestStore -Recurse } `
-ComputerName S1, S2
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 vous permet de spécifier le type d’élément créé par New-Item
.
Dans un Certificate
lecteur, les valeurs suivantes sont autorisées :
Certificate Provider
Certificate
Store
StoreLocation
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 du 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 de 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 les 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 pour spécifier un lecteur de système de Get-Help
fichiers.
Get-Help Get-ChildItem
Get-Help Get-ChildItem -Path cert: