about_Certificate_Provider
Název poskytovatele
Certifikát
Jednotky
Cert:
Možnosti
ShouldProcess
Krátký popis
Poskytuje přístup k úložištům certifikátů X.509 a certifikátům v PowerShellu.
Podrobný popis
Tyto informace platí jenom pro PowerShell spuštěný ve Windows.
Zprostředkovatel certifikátů PowerShellu umožňuje získat, přidat, změnit, vymazat a odstranit certifikáty a úložiště certifikátů v PowerShellu.
Jednotka certifikátu je hierarchický obor názvů obsahující úložiště certifikátů a certifikáty ve vašem počítači.
Zprostředkovatel certifikátu podporuje následující rutiny.
- Získat umístění
- Nastavení umístění
- Získat položku
- Get-ChildItem
- Vyvolání položky
- Přesunout položku
- Nová položka
- Odebrat položku
- Get-ItemProperty
- Set-ItemProperty
- Clear-ItemProperty
- Get-AuthenticodeSignature
- Set-AuthenticodeSignature
Typy vystavené tímto poskytovatelem
Jednotka certificate zveřejňuje následující typy.
- Microsoft.PowerShell.Commands.X509StoreLocation, což jsou kontejnery vysoké úrovně, které seskupují certifikáty pro aktuálního uživatele a pro všechny uživatele. Každý systém má
CurrentUser
umístění úložiště aLocalMachine
(všichni uživatelé). - System.Security.Cryptography.X509Certificates.X509Store, což jsou fyzická úložiště, kde se ukládají a spravují certifikáty.
- System.Security.Cryptography.X509Certificates.X509Certificate2, z nichž každý představuje certifikát X.509 v počítači. Certifikáty jsou identifikovány jejich kryptografickými otisky.
Navigace na jednotce certifikátu
Zprostředkovatel certifikátu zveřejňuje obor názvů certifikátu jako jednotku v PowerShelluCert:
. Tento příkaz pomocí Set-Location
příkazu změní aktuální umístění do Root
úložiště certifikátů v LocalMachine
umístění úložiště. K označení úrovně Cert:
jednotky použijte zpětné lomítko (\
) nebo lomítko (/
).
Set-Location Cert:
S poskytovatelem certifikátů můžete pracovat také z libovolné jiné jednotky PowerShellu. Pokud chcete odkazovat na alias z jiného umístění, použijte Cert:
název jednotky v cestě.
PS Cert:\> Set-Location -Path LocalMachine\Root
Pokud se chcete vrátit na jednotku systému souborů, zadejte název jednotky. Zadejte například:
Set-Location C:
Poznámka:
PowerShell používá aliasy, které vám umožní pracovat se známým způsobem práce s cestami zprostředkovatele. Příkazy jako dir
ls
a jsou teď aliasy pro Get-ChildItem, cd
je alias pro Set-Location a pwd
je alias pro Get-Location.
Zobrazení obsahu certifikátu: jednotka
Tento příkaz používá rutinu Get-ChildItem
k zobrazení úložišť certifikátů v CurrentUser
umístění úložiště certifikátů.
Pokud nejste na Cert:
jednotce, použijte absolutní cestu.
PS Cert:\CurrentUser\> Get-ChildItem
Zobrazení vlastností certifikátu v rámci certifikátu: jednotka
Tento příklad získá certifikát s Get-Item
proměnnou a uloží ho do proměnné.
Příklad ukazuje nové vlastnosti skriptu certifikátu (DnsNameList, EnhancedKeyUsageList, SendAsTrustedIssuer) pomocí 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
Vyhledání všech certifikátů CodeSigning
Tento příkaz používá parametry Get-ChildItem
CodeSigningCert a Recurse rutiny k získání všech certifikátů v počítači, který má podpisovou autoritu kódu.
Get-ChildItem -Path cert: -CodeSigningCert -Recurse
Vyhledání certifikátů s vypršenou platností
Tento příkaz pomocí parametru Get-ChildItem
ExpiringInDays rutiny získá certifikáty, jejichž platnost vyprší během následujících 30 dnů.
Get-ChildItem -Path cert:\LocalMachine\WebHosting -ExpiringInDays 30
Vyhledání certifikátů SSL serveru
Tento příkaz používá parametr Get-ChildItem
SSLServerAuthentication rutiny k získání všech certifikátů SSL serveru v úložištíchMy
.WebHosting
$getChildItemSplat = @{
Path = 'cert:\LocalMachine\My', 'cert:\LocalMachine\WebHosting'
SSLServerAuthentication = $true
}
Get-ChildItem @getChildItemSplat
Vyhledání certifikátů s vypršenou platností na vzdálených počítačích
Tento příkaz používá rutinu Invoke-Command
Get-ChildItem
ke spuštění příkazu na počítačích Srv01 a Srv02. Hodnota nula (0
) v parametru ExpiringInDays získá certifikáty na počítačích Srv01 a Srv02, jejichž platnost vypršela.
$invokeCommandSplat = @{
ComputerName = 'Srv01', 'Srv02'
ScriptBlock = {
Get-ChildItem -Path cert:\* -Recurse -ExpiringInDays 0
}
}
Invoke-Command @invokeCommandSplat
Kombinování filtrů pro vyhledání konkrétní sady certifikátů
Tento příkaz získá všechny certifikáty v LocalMachine
umístění úložiště, které mají následující atributy:
fabrikam
v názvu DNSClient Authentication
v jejich EKU- hodnota
$true
pro Vlastnost SendAsTrustedIssuer - nevyprší do příštích 30 dnů.
Vlastnost NotAfter ukládá datum vypršení platnosti certifikátu.
[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 }
Otevření modulu snap-in Certifikáty konzoly MMC
Rutina Invoke-Item
používá výchozí aplikaci k otevření zadané cesty. Výchozí aplikací pro certifikáty je modul snap-in Certifikáty konzoly MMC.
Tento příkaz otevře modul snap-in Certifikáty konzoly MMC pro správu zadaného certifikátu.
Invoke-Item cert:\CurrentUser\my\6B8223358119BB08840DEE50FD8AF9EA776CE66B
Kopírování certifikátů
Zprostředkovatel certifikátů nepodporuje kopírování certifikátů. Při pokusu o zkopírování certifikátu se zobrazí tato chyba.
$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
Přesouvání certifikátů
Přesunutí všech certifikátů ověřování serveru SSL do úložiště WebHosting
Tento příkaz pomocí rutiny Move-Item
přesune certifikát z My
úložiště do WebHosting
úložiště.
Move-Item
nemůže přesunout úložiště certifikátů a nemůže přesunout certifikáty do jiného umístění úložiště, například přesunout certifikát z umístění do LocalMachine
CurrentUser
. Rutina Move-Item
může přesunout certifikáty v rámci úložiště, ale nepřesune privátní klíče.
Tento příkaz používá parametr Get-ChildItem
SSLServerAuthentication rutiny k získání ověřovacích certifikátů serveru SSL v úložišti My
certifikátů.
Vrácené certifikáty se předávají do Move-Item
rutiny, která přesune certifikáty do WebHosting
úložiště.
Get-ChildItem cert:\LocalMachine\My -SSLServerAuthentication |
Move-Item -Destination cert:\LocalMachine\WebHosting
Odstranění certifikátů a privátních klíčů
Rutina Remove-Item
odstraní zadané certifikáty. Dynamický parametr DeleteKey odstraní privátní klíč.
Odstranění certifikátu z úložiště certifikační autority
Tento příkaz odstraní certifikát z úložiště certifikátů certifikační autority, ale ponechá přidružený privátní klíč nedotčený.
Rutina Cert:
Remove-Item
na jednotce podporuje pouze parametry DeleteKey, Path, WhatIf a Confirm . Všechny ostatní parametry se ignorují.
Remove-Item cert:\LocalMachine\CA\5DDC44652E62BF9AA1116DC41DE44AB47C87BDD0
Odstranění certifikátu pomocí zástupných znaků v názvu DNS
Tento příkaz odstraní všechny certifikáty, které mají název DNS, který obsahuje Fabrikam
. K získání certifikátů a rutiny k jejich odstranění používá parametr DNSName rutiny Remove-Item
Get-ChildItem
.
Get-ChildItem -Path cert:\LocalMachine -DnsName *Fabrikam* | Remove-Item
Odstranění privátních klíčů ze vzdáleného počítače
Tato série příkazů umožňuje delegování a potom odstraní certifikát a přidružený privátní klíč ve vzdáleném počítači. Pokud chcete odstranit privátní klíč ve vzdáleném počítači, musíte použít delegovaná pověření.
Pomocí rutiny Enable-WSManCredSSP
povolte na vzdáleném počítači klienta na vzdáleném počítači S1 ověřování zprostředkovatele credSSP (Credential Security Service Provider).
CredSSP umožňuje delegované ověřování.
Enable-WSManCredSSP -Role Client -DelegateComputer S1
Pomocí rutiny Connect-WSMan
připojte počítač S1 ke službě WinRM na místním počítači. Po dokončení tohoto příkazu se počítač S1 zobrazí na místním WSMan:
disku v PowerShellu.
Connect-WSMan -ComputerName S1 -Credential Domain01\Admin01
Teď můžete pomocí rutiny Set-Item
WSMan:
na jednotce povolit atribut CredSSP pro službu WinRM.
Set-Item -Path WSMan:\S1\Service\Auth\CredSSP -Value $true
Spusťte vzdálenou relaci na počítači S1 pomocí rutiny New-PSSession
a zadejte ověřování CredSSP. Uloží relaci do $s
proměnné.
$s = New-PSSession S1 -Authentication CredSSP -Credential Domain01\Admin01
Nakonec pomocí rutiny Invoke-Command
spusťte Remove-Item
příkaz v relaci v $s
proměnné. Příkaz Remove-Item
pomocí parametru DeleteKey odebere privátní klíč spolu se zadaným certifikátem.
Invoke-Command -Session $s {
$removeItemSplat = @{
Path = 'cert:\LocalMachine\My\D2D38EBA60CAA1C12055A2E1C83B15AD450110C2'
DeleteKey = $true
}
Remove-Item @removeItemSplat
}
Odstranění prošlých certifikátů
Tento příkaz používá parametr Get-ChildItem
ExpiringInDays rutiny s hodnotou 0
získání certifikátů v WebHosting
úložišti, jejichž platnost vypršela.
Proměnná obsahující vrácené certifikáty se předá rutině Remove-Item
, která je odstraní. Příkaz používá k odstranění privátního klíče spolu s certifikátem parametr DeleteKey .
$expired = Get-ChildItem cert:\LocalMachine\WebHosting -ExpiringInDays 0
$expired | Remove-Item -DeleteKey
Vytváření certifikátů
Rutina New-Item
nevytvoří nové certifikáty ve zprostředkovateli certifikátu . Pomocí rutiny New-SelfSignedCertificate vytvořte certifikát pro účely testování.
Vytváření úložišť certifikátů
Na jednotce Cert:
rutina New-Item
vytvoří úložiště certifikátů v LocalMachine
umístění úložiště. Podporuje parametry Name, Path, WhatIf a Confirm . Všechny ostatní parametry se ignorují. Příkaz vrátí System.Security.Cryptography.X509Certificates.X509Store, který představuje nové úložiště certifikátů.
Tento příkaz vytvoří nové úložiště certifikátů pojmenované CustomStore
v LocalMachine
umístění úložiště.
New-Item -Path cert:\LocalMachine\CustomStore
Vytvoření nového úložiště certifikátů na vzdáleném počítači
Tento příkaz vytvoří nové úložiště certifikátů pojmenované HostingStore
v LocalMachine
umístění úložiště na počítači Server01.
Příkaz používá rutinu Invoke-Command
New-Item
ke spuštění příkazu na počítači Server01. Příkaz vrátí System.Security.Cryptography.X509Certificates.X509Store, který představuje nové úložiště certifikátů.
Invoke-Command -ComputerName Server01 -ScriptBlock {
New-Item -Path cert:\LocalMachine\CustomStore
}
Vytváření klientských certifikátů pro WS-Man
Tento příkaz vytvoří položku ClientCertificate , kterou může použít klient WS-Management . Nový ClientCertificate se zobrazí v adresáři ClientCertificate jako ClientCertificate_1234567890
. Všechny parametry jsou povinné. Vystavitel musí být kryptografický otisk certifikátu vystavitele.
$newItemSplat = @{
Path = 'WSMan:\localhost\ClientCertificate'
Credential = Get-Credential
Issuer = '1b3fd224d66c6413fe20d21e38b304226d192dfe'
URI = 'wmicimv2/*'
}
New-Item @newItemSplat
Odstraňování úložišť certifikátů
Odstranění úložiště certifikátů ze vzdáleného počítače
Tento příkaz používá rutinu Invoke-Command
Remove-Item
ke spuštění příkazu na počítačích S1 a S2. Příkaz Remove-Item
obsahuje parametr Recurse , který před odstraněním úložiště odstraní certifikáty v úložišti.
Invoke-Command -ComputerName S1, S2 -ScriptBlock {
Remove-Item -Path cert:\LocalMachine\TestStore -Recurse
}
Dynamické parametry
Dynamické parametry jsou parametry rutiny přidané zprostředkovatelem PowerShellu a jsou k dispozici pouze v případech, kdy se rutina používá na jednotce s podporou poskytovatele. Tyto parametry jsou platné ve všech podadresářích zprostředkovatele certifikátů , ale platí pouze pro certifikáty.
Poznámka:
Parametry, které provádějí filtrování proti EnhancedKeyUsageList vlastnost také vrací položky s prázdnou EnhancedKeyUsageList hodnotu vlastnosti. Certifikáty, které mají prázdný EnhancedKeyUsageList , lze použít pro všechny účely.
V PowerShellu 7.1 byly znovu vyvolány následující parametry zprostředkovatele certifikátu.
- DNSName
- DocumentEncryptionCert
- EKU
- ExpiringInDays
- SSLServerAuthentication
CodeSigningCert <System.Management.Automation.SwitchParameter>
Podporované rutiny
Tento parametr získá certifikáty, které mají Code Signing
hodnotu vlastnosti EnhancedKeyUsageList .
DeleteKey <System.Management.Automation.SwitchParameter>
Podporované rutiny
Tento parametr odstraní přidružený privátní klíč při odstranění certifikátu.
Důležité
Pokud chcete odstranit privátní klíč přidružený k uživatelskému certifikátu v Cert:\CurrentUser
úložišti na vzdáleném počítači, musíte použít delegované přihlašovací údaje. Rutina Invoke-Command
podporuje delegování přihlašovacích údajů pomocí parametru CredSSP . Před použitím Remove-Item
delegování Invoke-Command
přihlašovacích údajů a delegování přihlašovacích údajů byste měli zvážit všechna rizika zabezpečení.
Tento parametr byl znovu vyvolána v PowerShellu 7.1.
DnsName <Microsoft.PowerShell.Commands.DnsNameRepresentation>
Podporované rutiny
Tento parametr získá certifikáty, které mají zadaný název domény nebo vzor názvů ve vlastnosti DNSNameList certifikátu. Hodnota tohoto parametru může být Unicode
nebo ASCII
. Punycode hodnoty jsou převedeny na Unicode. Jsou povoleny zástupné znaky (*
).
Tento parametr byl znovu vyvolána v PowerShellu 7.1.
DocumentEncryptionCert <System.Management.Automation.SwitchParameter>
Podporované rutiny
Tento parametr získá certifikáty, které mají Document Encryption
hodnotu vlastnosti EnhancedKeyUsageList .
EKU <System.String>
Podporované rutiny
Tento parametr získá certifikáty, které mají zadaný text nebo textový vzor v EnhancedKeyUsageList vlastnost certifikátu. Jsou povoleny zástupné znaky (*
). EnhancedKeyUsageList vlastnost obsahuje popisný název a pole OID EKU.
Tento parametr byl znovu vyvolána v PowerShellu 7.1.
ExpiringInDays <System.Int32>
Podporované rutiny
Tento parametr získá certifikáty, jejichž platnost vyprší nebo předchází zadanému počtu dnů. Hodnota nuly (0) získá certifikáty, jejichž platnost vypršela.
Tento parametr byl znovu vyvolána v PowerShellu 7.1.
ItemType <System.String>
Tento parametr se používá k určení typu položky vytvořené .New-Item
Rutina New-Item
podporuje pouze hodnotu Store
. New-Item
rutina nemůže vytvořit nové certifikáty.
Podporované rutiny
SSLServerAuthentication <System.Management.Automation.SwitchParameter>
Podporované rutiny
Získá pouze certifikáty serveru pro hostování webu SSL. Tento parametr získá certifikáty, které mají Server Authentication
hodnotu vlastnosti EnhancedKeyUsageList .
Tento parametr byl znovu vyvolána v PowerShellu 7.1.
Vlastnosti skriptu
Do objektu x509Certificate2 byly přidány nové vlastnosti skriptu, které představují certifikáty, které usnadňují vyhledávání a správu certifikátů.
- DnsNameList: Pokud chcete naplnit vlastnost DnsNameList , poskytovatel certifikátu zkopíruje obsah ze položky DNSName v rozšíření SubjectAlternativeName (SAN). Pokud je rozšíření SAN prázdné, vlastnost se naplní obsahem z pole Předmět certifikátu.
- EnhancedKeyUsageList: Chcete-li naplnit Vlastnost EnhancedKeyUsageList , zprostředkovatel certifikátu zkopíruje vlastnosti OID pole EnhancedKeyUsage (EKU) v certifikátu a vytvoří popisný název pro něj.
- SendAsTrustedIssuer: Chcete-li vyplnit vlastnost SendAsTrustedIssuer , zprostředkovatel certifikátu zkopíruje vlastnost SendAsTrustedIssuer z certifikátu. Další informace naleznete v tématu Správa důvěryhodných vystavitelů pro ověřování klientů.
Tyto nové funkce umožňují vyhledávat certifikáty na základě jejich názvů DNS a dat vypršení platnosti a rozlišovat certifikáty ověřování klientů a serverů podle hodnot jejich vlastností Rozšířené použití klíče (EKU).
Použití kanálu
Rutiny zprostředkovatele přijímají vstup kanálu. Kanál můžete použít ke zjednodušení úloh odesláním dat zprostředkovatele z jedné rutiny do jiné rutiny zprostředkovatele. Další informace o tom, jak používat kanál s rutinami zprostředkovatele, najdete v odkazech na rutiny uvedené v tomto článku.
Získání nápovědy
Od PowerShellu 3.0 můžete získat přizpůsobená témata nápovědy pro rutiny zprostředkovatele, která vysvětlují, jak se tyto rutiny chovají na jednotce systému souborů.
Pokud chcete získat témata nápovědy, která jsou přizpůsobená pro jednotku systému souborů, spusťte příkaz Get-Help na jednotce systému souborů nebo použijte -Path
parametr Get-Help
určující jednotku systému souborů.
Get-Help Get-ChildItem
Get-Help Get-ChildItem -Path cert: