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
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 de certificat est un espace de noms hiérarchique contenant les magasins et les certificats certifiés sur votre ordinateur.
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 CurrentUser et LocalMachine (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 Set-Location commande permettant de remplacer l’emplacement actuel par le magasin de certificats racine dans 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 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
De nouveaux paramètres dynamiques, , , et DnsName ont été ajoutés à l’applet EKU de commande dans le SSLServerAuthenticationExpiringInDayslecteur. Get-ChildItemCert: Les nouveaux paramètres dynamiques sont disponibles dans Windows PowerShell 3.0 et les versions plus récentes de PowerShell. Les paramètres du fournisseur fonctionnent avec IIS 8.0 sur Windows Server 2012 et versions ultérieures.
Cette commande utilise l’applet Get-ChildItem de commande 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 Get-ChildItem de commande pour obtenir tous les certificats SSL Server 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. Une valeur de zéro (0) dans le paramètre ExpiringInDays permet d’obtenir les 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 récupère tous les certificats de l’emplacement du magasin LocalMachine qui ont les attributs suivants :
- « fabrikam » dans leur nom DNS
- « Authentification du client » dans leur 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.
Get-ChildItem -Path cert:\* -Recurse -DNSName "*fabrikam*" `
-EKU "*Client Authentication*" | Where-Object {
$_.SendAsTrustedIssuer -and `
$_.NotAfter -gt (get-date).AddDays.(30)
}
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 Move-Item de commande pour déplacer un certificat de la banque Mon magasin 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 en déplaçant un certificat de LocalMachine vers 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 Get-ChildItem de commande pour obtenir les certificats d’authentification du serveur SSL dans le magasin de certificats MY.
Les certificats renvoyés sont redirigés vers l’applet Move-Item de commande, qui les déplace 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 -DeleteKey paramètre dynamique 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 Cert:, l’applet de commande Remove-Item prend uniquement en charge les paramètres DeleteKey, Path, WhatIfet Confirmer paramètres. 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 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 et spécifiez l’authentification New-PSSession 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 Get-ChildItem de commande avec la valeur 0 pour obtenir les certificats du 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 New-Item de commande crée des magasins de certificats à l’emplacement du magasin LocalMachine. Il prend en charge les paramètres Name, Path, WhatIfet 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 nouveau 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 nouveau magasin de certificats nommé « HostingStore » à 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 en tant que « ClientCertificate_1234567890 ». Tous les paramètres sont obligatoires. L’émetteur doit être l’empreinte numérique du certificat des émetteurs.
$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 de certificats, mais ne sont effectifs que sur les certificats.
Remarque
Les paramètres qui effectuent un filtrage sur la EnhancedKeyUsageList propriété renvoient également des éléments avec une valeur de propriété vide EnhancedKeyUsageList .
Les certificats qui ont un EnhancedKeyUsageList vide peuvent être utilisés à toutes fins.
Chaîne ItemType <>
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 :
- Fournisseur de certificats
- Certificat
- Store
- Localisation du magasin
Applets de commande prises en charge
CodeSigningCert <System.Management.Automation.SwitchParameter>
Cmdlets prises en charge
Ce paramètre récupère les certificats dont la valeur de propriété EnhancedKeyUsageList contient « Code Signing ».
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é introduit dans Windows PowerShell 3.0.
Référence EKU <System.String>
Cmdlets prises en charge
Ce paramètre récupère les certificats dont la propriété contient EnhancedKeyUsageList le texte ou le modèle de texte spécifié. Les caractères génériques (*) sont autorisés. La EnhancedKeyUsageList propriété contient le nom convivial et les champs OID de l’EKU.
Ce paramètre a été introduit dans Windows PowerShell 3.0.
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 0 (zéro) permet d’obtenir les certificats qui ont expiré.
Ce paramètre a été introduit dans Windows PowerShell 3.0.
SSLServerAuthentication <System.Management.Automation.SwitchParameter>
Cmdlets prises en charge
Obtient uniquement les certificats de serveur pour l’hébergement web SSL. Ce paramètre récupère les certificats dont la valeur de propriété est « Authentification du serveur ».EnhancedKeyUsageList
Ce paramètre a été introduit dans Windows PowerShell 3.0.
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 Invoke-Command 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 Invoke-Command et la délégation d’informations d’identification.
Ce paramètre a été introduit dans Windows 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 renseigner laDnsNameListpropriété, 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 renseigner laEnhancedKeyUsageListpropriété, le fournisseur de certificats copie les propriétés OID du champ EnhancedKeyUsage (EKU) dans le certificat et lui donne un nom convivial.SendAsTrustedIssuer: Pour renseigner laSendAsTrustedIssuerpropriété, le fournisseur de certificats copie laSendAsTrustedIssuerpropriété à 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 la tâche 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 Windows 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: