Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Nom du fournisseur
Certificat
Lecteurs
Cert:
Capacités
ShouldProcess
Brève description
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.
PowerShell fournisseur de certificats vous permet d’obtenir, d’ajouter, de modifier, de supprimer et de supprimer des certificats et des magasins de certificats dans PowerShell.
Le lecteur certificat
Le fournisseur de certificats prend en charge les applets de commande suivantes, qui sont abordées dans cet article.
- Localisation d’obtention
- Emplacement-décor
- Obtenir-Élément
- Get-ChildItem
- Invoke-Item
- Déplacer-Élément
- Nouveau-article
- Supprimer-Article
- Get-ItemProperty
- Set-ItemProperty
- clear-ItemProperty
- Get-AuthenticodeSignature
- Set-AuthenticodeSignature
Types exposés par ce fournisseur
Le lecteur de certificat expose les types suivants.
- Les emplacements de 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 dispose d’un emplacement de magasin
CurrentUseretLocalMachine(tous les utilisateurs). - Les magasins de certificats (System.Security.Cryptography.X509Certificates.X509Store), qui sont des magasins physiques dans lesquels les certificats sont enregistrés et gérés.
- X.509 System.Security.Cryptography.X509Certificates.X509Certificate2 certificats, 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 Certificat expose l’espace de noms de certificat en tant que lecteur Cert: dans PowerShell. Cette commande utilise la commande Set-Location pour remplacer l’emplacement actuel par le magasin de certificats Root à l’emplacement du magasin de LocalMachine. Utilisez une barre oblique inverse (\) ou une barre oblique (/) pour indiquer un niveau du lecteur Cert:.
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 lecteur Cert: dans le chemin d'accès.
PS Cert:\> Set-Location -Path LocalMachine\Root
Pour revenir à un lecteur de système de fichiers, tapez le nom du lecteur. Par exemple, tapez :
Set-Location C:
Remarque
PowerShell utilise des alias pour vous offrir une manière familière de travailler avec les chemins d’accès des fournisseurs. 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 certificat : lecteur
Cette commande utilise l’applet de commande Get-ChildItem pour afficher les magasins de certificats dans l’emplacement du magasin de certificats CurrentUser.
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 de 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
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 de l’ordinateur qui disposent de l’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 les certificats qui expireront dans les 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 de commande Get-ChildItem pour obtenir tous les certificats SSL du serveur dans les magasins My et WebHosting.
Get-ChildItem -Path cert:\LocalMachine\My, cert:\LocalMachine\WebHosting `
-SSLServerAuthentication
Rechercher des certificats expirés sur des ordinateurs distants
Cette commande utilise l’applet de commande Invoke-Command pour exécuter une commande Get-ChildItem 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 dans l’emplacement du magasin LocalMachine qui ont les attributs suivants :
-
fabrikamdans leur nom DNS -
Client Authenticationdans leur référence EKU - valeur de
$truepour 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 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 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 de commande Move-Item pour déplacer un certificat du magasin My vers le magasin WebHosting.
Move-Item ne déplacera pas les magasins de certificats et ne déplacera pas les certificats vers un autre emplacement de stockage, par exemple le déplacement d’un certificat de LocalMachine à CurrentUser. L’applet Move-Item de commande déplace les certificats, mais pas les clés privées.
Cette commande utilise le paramètre SSLServerAuthentication de l’applet de commande Get-ChildItem pour obtenir des certificats d’authentification de serveur SSL dans le magasin de certificats My.
Les certificats retournés sont redirigés vers l’applet de commande Move-Item, qui déplace les certificats vers le magasin WebHosting.
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 supprimera 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 lecteur
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 de commande Get-ChildItem pour obtenir les certificats et l’applet de commande Remove-Item 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 Enable-WSManCredSSP pour activer l’authentification 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 de commande Connect-WSMan 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 de WSMan: local dans PowerShell.
Connect-WSMan -ComputerName S1 -Credential Domain01\Admin01
À présent, vous pouvez utiliser l’applet de commande Set-Item dans le lecteur WSMan: 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 de commande New-PSSession et spécifiez l’authentification CredSSP. Enregistre la session dans la variable $s.
$s = New-PSSession S1 -Authentication CredSSP -Credential Domain01\Admin01
Enfin, utilisez l’applet de commande Invoke-Command pour exécuter une commande Remove-Item dans la session dans la variable $s. La commande Remove-Item 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 les certificats expirés
Cette commande utilise le paramètre ExpiringInDays de l’applet de commande Get-ChildItem avec la valeur 0 pour obtenir des certificats dans le magasin WebHosting qui ont expiré.
La variable contenant les certificats retournés est redirigée vers l’applet de commande Remove-Item, 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 la cmdlet New-SelfSignedCertificate pour créer un certificat à des fins de test.
Création de magasins de certificats
Dans le lecteur Cert:, l’applet de commande New-Item crée des magasins de certificats à l’emplacement du magasin LocalMachine. Il prend en charge les paramètres
Cette commande crée un magasin de certificats nommé CustomStore dans l’emplacement du magasin LocalMachine.
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 dans l’emplacement du magasin LocalMachine sur l’ordinateur Server01.
La commande utilise l’applet de commande Invoke-Command pour exécuter une commande New-Item 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 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 l’empreinte numérique du certificat de l’émetteur.
$cred = Get-Credential
New-Item -Path WSMan:\localhost\ClientCertificate `
-Issuer 1b3fd224d66c6413fe20d21e38b304226d192dfe `
-URI wmicimv2/* -Credential $cred
Suppression des magasins de certificats
Supprimer un magasin de certificats d’un ordinateur distant
Cette commande utilise l’applet de commande Invoke-Command pour exécuter une commande Remove-Item sur les ordinateurs S1 et S2. La commande Remove-Item 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 ajoutés par un fournisseur PowerShell et disponibles uniquement lorsque l’applet de commande est utilisée dans un lecteur activé par le fournisseur. Ces paramètres sont valides dans tous les sous-répertoires du fournisseur certificat
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
- de référence EKU
- ExpireingInDays
- sslServerAuthentication
CodeSigningCert <System.Management.Automation.SwitchParameter>
Cmdlets 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>
Cmdlets 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 de commande Remove-Item avec Invoke-Command et la délégation d’informations d’identification.
Ce paramètre a été réintroduite dans PowerShell 7.1
DnsName <Microsoft.PowerShell.Commands.DnsNameRepresentation>
Cmdlets 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é réintroduite dans PowerShell 7.1
DocumentEncryptionCert <System.Management.Automation.SwitchParameter>
Cmdlets prises en charge
Ce paramètre obtient des certificats qui ont Document Encryption dans leur valeur de propriété EnhancedKeyUsageList.
Référence EKU <System.String>
Cmdlets 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 l'EKU.
Ce paramètre a été réintroduite dans PowerShell 7.1
Expiration de System.Int32 <InDays>
Cmdlets 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 vous permet de spécifier le type d’élément créé par New-Item.
Dans un lecteur Certificate, les valeurs suivantes sont autorisées :
Certificate ProviderCertificateStoreStoreLocation
Applets de commande prises en charge
SSLServerAuthentication <System.Management.Automation.SwitchParameter>
Cmdlets prises en charge
Obtient uniquement les certificats de 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 remplie avec du contenu à partir 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 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 cmdlets des fournisseurs acceptent l’entrée en 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 les applets de commande de fournisseur, consultez les références aux applets 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 paramètre -Path de Get-Help pour spécifier un lecteur de système de fichiers.
Get-Help Get-ChildItem
Get-Help Get-ChildItem -Path cert:
Voir aussi
- about_Providers
- about_Signing
- Get-AuthenticodeSignature
- Set-AuthenticodeSignature
- Get-PfxCertificate