about_Certificate_Provider
Nom du fournisseur
Certificat
Lecteurs
Cert:
Capabilities
ShouldProcess
Description courte
Fournit l’accès aux magasins et certificats X.509 dans PowerShell.
Description détaillée
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.
- 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 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 etLocalMachine
(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.
Navigation dans le lecteur de certificat
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-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 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 DNSClient 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 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é introduit dans PowerShell 3.0.
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 (*
) sont autorisés.
Ce paramètre a été introduit dans PowerShell 3.0.
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 (*
) 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é introduit dans PowerShell 3.0.
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é introduit dans PowerShell 3.0.
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: