Sdílet prostřednictvím


o_poskytovateli_certifikátů

Název poskytovatele

Certifikát

Disky

Cert:

Schopnosti

Měl by zpracovat

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átu 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.

Poskytovatel certifikátu podporuje následující rutiny, které jsou popsané v tomto článku.

Typy zveřejněné tímto poskytovatelem

Jednotka certificate zveřejňuje následující typy.

  • Umístění úložiště (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 a umístění úložiště LocalMachine (všichni uživatelé).
  • Úložiště certifikátů (System.Security.Cryptography.X509Certificates.X509Store), což jsou fyzická úložiště, ve kterých jsou certifikáty uloženy a spravovány.
  • 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.

Poskytovatel certifikátu zpřístupňuje obor názvů certifikátu jako jednotku Cert: v PowerShellu. Tento příkaz používá příkaz Set-Location ke změně aktuálního umístění na úložiště certifikátů Root v umístění LocalMachine úložiště. K označení úrovně jednotky \ použijte zpětné lomítko (/) nebo lomítko (Cert:).

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 v cestě název jednotky Cert:.

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 známým způsobem s cestami poskytovatelů. Příkazy jako dir a ls 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 umístění úložiště certifikátů CurrentUser.

Pokud nejste v 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 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 CodeSigningCert a Recurse rutiny Get-ChildItem k získání všech certifikátů v počítači, které mají oprávnění k podepisování kódu.

Get-ChildItem -Path cert: -CodeSigningCert -Recurse

Vyhledání certifikátů s vypršenou 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í na vzdálených počítačích

Tento příkaz používá rutinu Invoke-Command ke spuštění příkazu Get-ChildItem 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.

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
  • Client Authentication v jejich EKU
  • hodnota $true pro vlastnost SendAsTrustedIssuer
  • Platnost nevyprší během následujících 30 dnů.

Vlastnost NotAfter ukládá datum vypršení platnosti certifikátu.

[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
                                   }

Otevření modulu snap-in Certifikáty konzoly MMC

Rutina Invoke-Item použije 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ů

Poskytovatel certifikátu 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ř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 úložiště My do úložiště WebHosting.

Move-Item Nepřesune úložiště certifikátů a nepřesune certifikáty do jiného umístění úložiště, například přesunutí certifikátu z LocalMachine do CurrentUser. Rutina Move-Item přesouvá certifikáty, ale nepřesouvá soukromé 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 se předávají do rutiny Move-Item, 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 odebere certifikáty, které zadáte. DeleteKey dynamický 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 ponechá přidružený privátní klíč nedotčený.

V jednotce Cert: podporuje rutina Remove-Item pouze DeleteKey, Path, WhatIfa Potvrdit parametry. 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 Get-ChildItem rutiny Remove-Item.

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 S1 ověřování zprostředkovatele služby Credential Security Service Provider (CredSSP). 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í v místním WSMan: jednotce v PowerShellu.

Connect-WSMan -ComputerName S1 -Credential Domain01\Admin01

Teď můžete pomocí rutiny Set-Item na 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 proměnné $s.

$s  = New-PSSession S1 -Authentication CredSSP -Credential Domain01\Admin01

Nakonec pomocí rutiny Invoke-Command spusťte příkaz Remove-Item v relaci v proměnné $s. 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
  }

Odstranění prošlých certifikátů

Tento příkaz používá parametr ExpiringInDays rutiny Get-ChildItem 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 rutiny Remove-Item, 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 nevytváří 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ů

Na jednotce Cert: vytvoří rutina New-Item úložiště certifikátů v umístění úložiště LocalMachine. Podporuje parametry Name, Path, WhatIfa 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ů s názvem CustomStore v umístění LocalMachine ú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ů 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í příkazu New-Item na počítači se serverem 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é. vystavitele musí být kryptografický otisk certifikátu vystavitele.

$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í příkazu Remove-Item 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 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 poskytovatele Certificate, ale platí pouze pro certifikáty.

Poznámka:

Parametry, které provádějí filtrování podle vlastnosti EnhancedKeyUsageList vrátí také položky s prázdnou hodnotou vlastnosti EnhancedKeyUsageList. 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.

  • DNSPame
  • DocumentEncryptionCert
  • EKU
  • expiringInDays
  • SSLServerAuthentication

CodeSigningCert <System.Management.Automation.SwitchParameter>

Podporované cmdlety

Tento parametr získá certifikáty, které mají v Code Signing hodnotu vlastnosti .

DeleteKey <System.Management.Automation.SwitchParameter>

Podporované cmdlety

Tento parametr odstraní přidružený privátní klíč při odstranění certifikátu.

Důležité

Chcete-li odstranit soukromý klíč, který je 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á pověření. Rutina Invoke-Command podporuje delegování přihlašovacích údajů pomocí parametru credSSP. Před použitím Remove-Item s delegování Invoke-Command a delegování přihlašovacích údajů byste měli zvážit všechna rizika zabezpečení.

Tento parametr byl znovu vyvolán v PowerShellu 7.1.

Název_DNS: <Microsoft.PowerShell.Commands.DnsNameRepresentation>

Podporované cmdlety

Tento parametr získá certifikáty, které mají zadaný název domény nebo vzor názvu v DNSNameList vlastnosti certifikátu. Hodnota tohoto parametru může být Unicode nebo ASCII. Hodnoty Punycode se převádějí na Unicode. Jsou povoleny zástupné znaky (*).

Tento parametr byl znovu vyvolán v PowerShellu 7.1.

DocumentEncryptionCert <System.Management.Automation.SwitchParameter>

Podporované cmdlety

Tento parametr získá certifikáty, které mají v Document Encryption hodnotu vlastnosti .

< EKU >System.String

Podporované cmdlety

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 přátelský název a pole OID EKU.

Tento parametr byl znovu vyvolán v PowerShellu 7.1.

ExpiringInDays <System.Int32 řekl:>

Podporované cmdlety

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án v PowerShellu 7.1.

ItemType <System.String>

Tento parametr umožňuje určit typ položky vytvořené programem New-Item.

Na jednotce Certificate jsou povoleny následující hodnoty:

  • Certificate Provider
  • Certificate
  • Store
  • StoreLocation

Podporované rutiny

SSLServerAuthentication <System.Management.Automation.SwitchParameter>

Podporované cmdlety

Získá pouze certifikáty serveru pro hostování webu SSL. Tento parametr získá certifikáty, které mají v Server Authentication hodnotu vlastnosti .

Tento parametr byl znovu vyvolán 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 vyplnit 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 vyplnit vlastnost EnhancedKeyUsageList, zprostředkovatel certifikátu zkopíruje vlastnosti OID pole EnhancedKeyUsage (EKU) v certifikátu a vytvoří pro něj popisný název.
  • SendAsTrustedIssuer: K naplnění vlastnosti SendAsTrustedIssuer zkopíruje zprostředkovatel certifikátu 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í potrubí

Příkazy poskytovatele přijímají vstup z potrubí. 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 pipelinu s rutinnými příkazy poskytovatele, najdete v odkazech na rutiny cmdletů uvedených 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 pomocí parametru -PathGet-Help určit jednotku systému souborů.

Get-Help Get-ChildItem
Get-Help Get-ChildItem -Path cert:

Viz také