Poskytovatel certifikátu
Název poskytovatele
Certifikát
Drives
Cert:
Možnosti
Měl(a) zpracovat
Stručný popis
Poskytuje přístup k úložišti certifikátů X.509 a certifikátům v PowerShellu.
Podrobný popis
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 Certificate je hierarchický obor názvů obsahující úložiště certifikátů a certifikáty ve vašem počítači.
Zprostředkovatel certifikátů podporuje následující rutiny, které jsou popsané v tomto článku.
- 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
Typy zveřejněné tímto zprostředkovatelem
Jednotka certifikátu zveřejňuje následující typy.
Umístění úložišť (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á umístění úložiště CurrentUser a LocalMachine (všichni uživatelé).
Úložiště certifikátů (System.Security.Cryptography.X509Certificates.X509Store), což jsou fyzická úložiště, ve kterých se certifikáty ukládají a spravují.
X.509 System.Security.Cryptography.X509Certificates.X509Certificate2 certifikáty, 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 zpřístupňuje obor názvů certifikátu jako jednotku v PowerShellu Cert:
. Tento příkaz používá Set-Location
příkaz ke změně aktuálního umístění na kořenové úložiště certifikátů v umístění úložiště LocalMachine. K označení úrovně Cert:
jednotky použijte zpětné lomítko (\) nebo lomítko (/).
Set-Location Cert:
S poskytovatelem certifikátu můžete také pracovat z jakékoli jiné jednotky PowerShellu. Pokud chcete odkazovat na alias z jiného umístění, použijte Cert:
v cestě název jednotky.
PS Cert:\> Set-Location -Path LocalMachine\Root
Pokud se chcete vrátit k jednotce systému souborů, zadejte název jednotky. Zadejte například:
Set-Location C:
Poznámka
PowerShell používá aliasy, aby vám umožnil známý způsob práce s cestami zprostředkovatele. Příkazy jako dir
a ls
jsou teď aliasy pro Get-ChildItem, cd
což je alias pro Set-Location. a pwd
je alias pro Get-Location.
Zobrazení obsahu jednotky Cert:
Do rutiny v jednotce byly přidány nové dynamické parametry DnsName
, EKU
, SSLServerAuthentication
a ExpiringInDays
.Get-ChildItem
Cert:
Nové dynamické parametry jsou k dispozici ve Windows PowerShell 3.0 a novějších verzích PowerShellu. Parametry zprostředkovatele fungují se službou IIS 8.0 v Windows Server 2012 a novějších verzích.
Tento příkaz používá rutinu Get-ChildItem
k zobrazení úložišť certifikátů v umístění úložiště certifikátů CurrentUser.
Pokud v jednotce Cert:
nejste, použijte absolutní cestu.
PS Cert:\CurrentUser\> Get-ChildItem
Zobrazení vlastností certifikátu na jednotce Cert:
Tento příklad získá certifikát s Get-Item
a uloží ho do proměnné.
Příklad ukazuje vlastnosti nového 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é mají autoritu pro podepisování kódu.
Get-ChildItem -Path cert: -CodeSigningCert -Recurse
Vyhledání certifikátů s prošlou platností
Tento příkaz používá parametr ExpiringInDays rutiny Get-ChildItem
k získání certifikátů, 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 SSLServerAuthentication rutiny Get-ChildItem
k získání všech certifikátů SSL serveru v úložištích My a WebHosting.
Get-ChildItem -Path cert:\LocalMachine\My, cert:\LocalMachine\WebHosting `
-SSLServerAuthentication
Vyhledání certifikátů s vypršenou platností ve vzdálených počítačích
Tento příkaz používá rutinu Invoke-Command
ke spuštění Get-ChildItem
příkazu na počítačích Srv01 a Srv02. Hodnota nula (0) v parametru ExpiringInDays získává certifikáty na počítačích Srv01 a Srv02, jejichž platnost vypršela.
Invoke-Command -ComputerName Srv01, Srv02 {Get-ChildItem -Path cert:\* `
-Recurse -ExpiringInDays 0}
Kombinování filtrů pro vyhledání konkrétní sady certifikátů
Tento příkaz získá všechny certifikáty v umístění úložiště LocalMachine, které mají následující atributy:
- "fabrikam" v názvu DNS
- Ověřování klientů v jeho EKU
- hodnota
$true
pro SendAsTrustedIssuer vlastnost - jejich platnost nevyprší během následujících 30 dnů.
Vlastnost NotAfter ukládá datum vypršení platnosti certifikátu.
Get-ChildItem -Path cert:\* -Recurse -DNSName "*fabrikam*" `
-EKU "*Client Authentication*" | Where-Object {
$_.SendAsTrustedIssuer -and `
$_.NotAfter -gt (get-date).AddDays.(30)
}
Otevření modulu snap-in Certifikáty konzoly MMC
Rutina Invoke-Item
použije výchozí aplikaci k otevření cesty, kterou zadáte. Pro certifikáty je výchozí aplikací 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 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
Přesouvání certifikátů
Přesun 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 úložiště My do úložiště WebHosting.
Move-Item
nepřesune úložiště certifikátů ani certifikáty do jiného umístění úložiště, například přesun certifikátu z LocalMachine do CurrentUser. Rutina Move-Item
přesune certifikáty, ale nepřesune privátní klíče.
Tento příkaz používá parametr SSLServerAuthentication rutiny Get-ChildItem
k získání ověřovacích certifikátů serveru SSL v úložišti certifikátů MY.
Vrácené certifikáty jsou předány rutině Move-Item
, která přesune certifikáty do úložiště WebHosting.
Get-ChildItem cert:\LocalMachine\My -SSLServerAuthentication | Move-Item `
-Destination cert:\LocalMachine\WebHosting
Odstranění certifikátů a privátních klíčů
Rutina Remove-Item
odebere vámi zadané certifikáty. Dynamický -DeleteKey
parametr 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 přidružený privátní klíč ponechá beze změny.
Rutina v Cert:
jednotce Remove-Item
podporuje pouze parametry DeleteKey, Path, WhatIf a Confirm . Všechny ostatní parametry jsou ignorovány.
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". Používá parametr DNSName rutiny Get-ChildItem
k získání certifikátů a rutinu Remove-Item
k jejich odstranění.
Get-ChildItem -Path cert:\LocalMachine -DnsName *Fabrikam* | Remove-Item
Odstranění privátních klíčů ze vzdáleného počítače
Tato řada příkazů povolí delegování a pak odstraní certifikát a přidružený privátní klíč na vzdáleném počítači. Pokud chcete odstranit privátní klíč na vzdáleném počítači, musíte použít delegovaná pověření.
Pomocí rutiny Enable-WSManCredSSP
povolte ověřování CredSSP (Credential Security Service Provider) na klientovi ve vzdáleném počítači S1.
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 v místním počítači. Po dokončení tohoto příkazu se počítač S1 zobrazí na místní WSMan:
jednotce v PowerShellu.
Connect-WSMan -ComputerName S1 -Credential Domain01\Admin01
Teď můžete pomocí rutiny Set-Item v jednotce WSMan: 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
používá parametr DeleteKey k odebrání privátního klíče spolu se zadaným certifikátem.
Invoke-Command -Session $s { Remove-Item `
-Path cert:\LocalMachine\My\D2D38EBA60CAA1C12055A2E1C83B15AD450110C2 `
-DeleteKey
}
Odstranit certifikáty, jejichž platnost vypršela
Tento příkaz používá parametr Get-ChildItem
ExpiringInDays rutiny s hodnotou 0 k získání certifikátů v úložišti WebHosting, jejichž platnost vypršela.
Proměnná obsahující vrácené certifikáty se předá do Remove-Item
rutiny , která je odstraní. Příkaz používá parametr DeleteKey k odstranění privátního klíče spolu s certifikátem.
$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átů . Pomocí rutiny New-SelfSignedCertificate vytvořte certifikát pro účely testování.
Vytváření úložišť certifikátů
V jednotce Cert: rutina New-Item
vytvoří úložiště certifikátů v umístění úložiště LocalMachine. Podporuje parametry Name( Název), Path (Cesta), WhatIf (WhatIf) a Confirm (Potvrzení ). Všechny ostatní parametry jsou ignorovány. 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ů s názvem CustomStore v umístění úložiště LocalMachine.
New-Item -Path cert:\LocalMachine\CustomStore
Create nového úložiště certifikátů ve vzdáleném počítači
Tento příkaz vytvoří nové úložiště certifikátů s názvem "HostingStore" v umístění úložiště LocalMachine na počítači Server01.
Příkaz používá rutinu Invoke-Command
ke spuštění New-Item
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 { New-Item -Path cert:\LocalMachine\CustomStore } `
-ComputerName Server01
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 vystavitelů.
$cred = Get-Credential
New-Item -Path WSMan:\localhost\ClientCertificate `
-Issuer 1b3fd224d66c6413fe20d21e38b304226d192dfe `
-URI wmicimv2/* -Credential $cred
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
ke spuštění Remove-Item
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 { Remove-Item -Path cert:\LocalMachine\TestStore -Recurse } `
-ComputerName S1, S2
Dynamické parametry
Dynamické parametry jsou parametry rutiny, které přidává zprostředkovatel PowerShellu, a jsou dostupné jenom v případech, kdy se rutina používá na jednotce s povoleným zprostředkovatelem. Tyto parametry jsou platné ve všech podadresářích zprostředkovatele certifikátu, ale platí pouze pro certifikáty.
Poznámka
Parametry, které provádějí filtrování podle EnhancedKeyUsageList
vlastnosti, také vrací položky s prázdnou EnhancedKeyUsageList
hodnotou vlastnosti.
Certifikáty s prázdným seznamem EnhancedKeyUsageList je možné použít pro všechny účely.
ItemType <String>
Tento parametr umožňuje zadat typ položky vytvořené nástrojem New-Item
.
Na jednotce Certificate
jsou povolené následující hodnoty:
- Poskytovatel certifikátu
- Certifikát
- Uložení
- Storelocation
Podporované rutiny
CodeSigningCert <System.Management.Automation.SwitchParameter>
Podporované rutiny
Tento parametr získá certifikáty, které mají "Podepisování kódu" v hodnotě vlastnosti EnhancedKeyUsageList .
DnsName <Microsoft.PowerShell.Commands.DnsNameRepresentation>
Podporované rutiny
Tento parametr získá certifikáty, které mají zadaný název domény nebo vzor názvu ve vlastnosti DNSNameList certifikátu. Hodnota tohoto parametru může být "Unicode" nebo "ASCII". Punycode hodnoty jsou převedeny na Unicode. Zástupné znaky (*) jsou povoleny.
Tento parametr byl zaveden v Windows PowerShell 3.0.
EKU <System.String>
Podporované rutiny
Tento parametr získá certifikáty, které mají zadaný text nebo textový vzor ve EnhancedKeyUsageList
vlastnosti certifikátu. Zástupné znaky (*) jsou povoleny. Vlastnost EnhancedKeyUsageList
obsahuje popisný název a pole OID EKU.
Tento parametr byl zaveden v Windows PowerShell 3.0.
ExpiringInDays <System.Int32>
Podporované rutiny
Tento parametr získá certifikáty, jejichž platnost vyprší za zadaný počet dnů nebo před. Hodnota 0 (nula) získá certifikáty, jejichž platnost vypršela.
Tento parametr byl zaveden v Windows PowerShell 3.0.
SSLServerAuthentication <System.Management.Automation.SwitchParameter>
Podporované rutiny
Získá pouze certifikáty serveru pro webhosting SSL. Tento parametr získá certifikáty, které mají hodnotu EnhancedKeyUsageList
vlastnosti Ověřování serveru.
Tento parametr byl zaveden v Windows PowerShell 3.0.
DeleteKey <System.Management.Automation.SwitchParameter>
Podporované rutiny
Tento parametr při odstranění certifikátu odstraní přidružený privátní klíč.
Důležité
Pokud chcete odstranit privátní klíč, který je přidružený k certifikátu uživatele v Cert:\CurrentUser
úložišti na vzdáleném počítači, musíte použít delegovaná pověření. Rutina Invoke-Command
podporuje delegování přihlašovacích údajů pomocí parametru CredSSP . Před použitím Remove-Item
s Invoke-Command
delegováním přihlašovacích údajů a byste měli zvážit všechna bezpečnostní rizika.
Tento parametr byl zaveden v Windows PowerShell 3.0.
Vlastnosti skriptu
Do objektu x509Certificate2 byly přidány nové vlastnosti skriptu, který představuje certifikáty, aby bylo možné snadno vyhledávat a spravovat certifikáty.
DnsNameList
: Chcete-li naplnitDnsNameList
vlastnost, poskytovatel certifikátu zkopíruje obsah z 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
: K naplněníEnhancedKeyUsageList
vlastnosti zkopíruje poskytovatel certifikátu vlastnosti OID pole EnhancedKeyUsage (EKU) v certifikátu a vytvoří pro něj popisný název.SendAsTrustedIssuer
: K naplněníSendAsTrustedIssuer
vlastnosti zkopíruje zprostředkovatelSendAsTrustedIssuer
certifikátu vlastnost z certifikátu. Další informace najdete 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 hodnoty jejich vlastností EKU (Enhanced Key Usage).
Použití kanálu
Rutiny zprostředkovatele přijímají vstup kanálu. Kanál můžete použít ke zjednodušení úlohy odesílá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 referenčních informacích k rutinám v tomto článku.
Získání nápovědy
Počínaje Windows PowerShell 3.0 můžete získat přizpůsobená témata nápovědy pro rutiny zprostředkovatele, která vysvětlují chování těchto rutin na jednotce systému souborů.
Chcete-li získat témata nápovědy přizpůsobená pro jednotku systému souborů, spusťte příkaz Get-Help na jednotce systému souborů nebo pomocí parametru -Path
Get-Help zadejte jednotku systému souborů.
Get-Help Get-ChildItem
Get-Help Get-ChildItem -Path cert: