about_Certificate_Provider

Szolgáltató neve

Tanúsítvány

Meghajtók

Cert:

Képességek

ShouldProcess

Rövid leírás

Hozzáférést biztosít az X.509-tanúsítványtárolókhoz és -tanúsítványokhoz a PowerShellben.

Részletes leírás

Ezek az információk csak a Windows rendszeren futó PowerShellre vonatkoznak.

A PowerShell-tanúsítványszolgáltató lehetővé teszi tanúsítványok és tanúsítványtárolók lekérését, hozzáadását, módosítását, törlését és törlését a PowerShellben.

A tanúsítványmeghajtó egy hierarchikus névtér, amely a számítógépen található tanúsítványtárolókat és tanúsítványokat tartalmazza.

A tanúsítványszolgáltató a következő parancsmagokat támogatja, amelyekről ebben a cikkben talál információt.

A szolgáltató által közzétett típusok

A tanúsítványmeghajtó a következő típusokat teszi elérhetővé.

  • Tárolóhelyek (Microsoft.PowerShell.Commands.X509StoreLocation), amelyek olyan magas szintű tárolók, amelyek az aktuális felhasználó és az összes felhasználó tanúsítványait csoportosítják. Minden rendszer rendelkezik egy CurrentUser és LocalMachine (minden felhasználó) tárolóhellyel.
  • A tanúsítványtárolók (System.Security.Cryptography.X509Certificates.X509Store), amelyek fizikai tárolók, amelyekben a tanúsítványok mentése és kezelése megtörtént.
  • X.509 System.Security.Cryptography.X509Certificates.X509Certificate2 tanúsítványok, amelyek mindegyike egy X.509-tanúsítványt jelöl a számítógépen. A tanúsítványokat az ujjlenyomataik azonosítják.

A tanúsítványszolgáltató meghajtóként teszi elérhetővé a tanúsítványnévteret a Cert: PowerShellben. Ez a parancs a Set-Location paranccsal módosítja az aktuális helyet a Root tárolóban található tanúsítványtárolóra LocalMachine . Használjon fordított perjelet (\) vagy perjelet (/) a Cert: meghajtó szintjének jelzéséhez.

Set-Location Cert:

A tanúsítványszolgáltatóval bármely más PowerShell-meghajtóról is dolgozhat. Ha egy másik helyről származó aliasra szeretne hivatkozni, használja az Cert: elérési út meghajtónevét.

PS Cert:\> Set-Location -Path LocalMachine\Root

A fájlrendszerbeli meghajtóra való visszatéréshez írja be a meghajtó nevét. Írja be például a következőt:

Set-Location C:

Megjegyzés

A PowerShell aliasokkal teszi lehetővé a szolgáltatói útvonalak használatát. Az olyan parancsok, mint például dir a lsGet-ChildItem aliasai, cd a Set-Location aliasai. és pwd a Get-Location aliasa.

A Tanúsítvány: meghajtó tartalmának megjelenítése

Ez a parancs a Get-ChildItem parancsmaggal jeleníti meg a tanúsítványtárolókat a CurrentUser tanúsítványtároló helyén.

Ha nem a Cert: meghajtón van, használjon abszolút elérési utat.

PS Cert:\CurrentUser\> Get-ChildItem

Tanúsítványtulajdonságok megjelenítése a Tanúsítvány: meghajtón belül

Ez a példa lekéri a tanúsítványt Get-Item , és egy változóban tárolja. A példában az új tanúsítványszkript tulajdonságai (DnsNameList, EnhancedKeyUsageList, SendAsTrustedIssuer) Select-Objectláthatók.

$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

Az összes CodeSigning-tanúsítvány megkeresése

Ez a parancs a parancsmag CodeSigningCert és Recurse paramétereit használja a Get-ChildItem kódaláíró szolgáltatóval rendelkező számítógép összes tanúsítványának lekéréséhez.

Get-ChildItem -Path cert: -CodeSigningCert -Recurse

Lejárt tanúsítványok keresése

Ez a parancs a parancsmag ExpiringInDays paraméterét használja a Get-ChildItem következő 30 napon belül lejáró tanúsítványok lekéréséhez.

Get-ChildItem -Path cert:\LocalMachine\WebHosting -ExpiringInDays 30

Kiszolgálói SSL-tanúsítványok keresése

Ez a parancs a parancsmag SSLServerAuthentication paraméterét használja az Get-ChildItem összes kiszolgálói SSL-tanúsítvány lekéréséhez a tárolókban és WebHosting a My tárolókban.

Get-ChildItem -Path cert:\LocalMachine\My, cert:\LocalMachine\WebHosting `
  -SSLServerAuthentication

Lejárt tanúsítványok keresése távoli számítógépeken

Ez a parancs a Invoke-Command parancsmaggal futtat egy Get-ChildItem parancsot az Srv01 és az Srv02 számítógépeken. A ExpiringInDays paraméter nulla (0) értéke lekéri a lejárt Srv01- és Srv02-számítógépek tanúsítványait.

Invoke-Command -ComputerName Srv01, Srv02 {Get-ChildItem -Path cert:\* `
  -Recurse -ExpiringInDays 0}

Szűrők kombinálása adott tanúsítványkészlet megkereséséhez

Ez a parancs lekéri az összes olyan tanúsítványt az LocalMachine áruházban, amely a következő attribútumokkal rendelkezik:

  • fabrikam a DNS-névben
  • Client Authentication az EKU-ban
  • a SendAsTrustedIssuer tulajdonság értéke $true
  • nem jár le a következő 30 napon belül.

A NotAfter tulajdonság tárolja a tanúsítvány lejárati dátumát.

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

A Tanúsítványok MMC beépülő modul megnyitása

A Invoke-Item parancsmag az alapértelmezett alkalmazással nyit meg egy megadott elérési utat. Tanúsítványok esetén az alapértelmezett alkalmazás a Tanúsítványok MMC beépülő modul.

Ez a parancs megnyitja a Tanúsítványok MMC beépülő modult a megadott tanúsítvány kezeléséhez.

Invoke-Item cert:\CurrentUser\my\6B8223358119BB08840DEE50FD8AF9EA776CE66B

Tanúsítványok másolása

A tanúsítványszolgáltató nem támogatja a tanúsítványok másolását. Amikor megpróbál másolni egy tanúsítványt, ez a hiba jelenik meg.

$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

Tanúsítványok áthelyezése

Az összes SSL Server hitelesítési tanúsítvány áthelyezése a WebHosting Store-ba

Ez a parancs a Move-Item parancsmag használatával helyez át egy tanúsítványt az My áruházból az WebHosting áruházba.

Move-Item A nem helyezi át a tanúsítványtárolókat, és nem helyezi át a tanúsítványokat egy másik tárolóhelyre, például áthelyez egy tanúsítványt a tárolóba LocalMachineCurrentUser. A Move-Item parancsmag áthelyezi a tanúsítványokat, de nem helyezi át a titkos kulcsokat.

Ez a parancs a parancsmag SSLServerAuthentication paraméterét használja az Get-ChildItem SSL-kiszolgáló hitelesítési tanúsítványainak lekéréséhez a My tanúsítványtárolóban.

A visszaadott tanúsítványok a Move-Item parancsmagba kerülnek, amely áthelyezi a tanúsítványokat a WebHosting tárolóba.

Get-ChildItem cert:\LocalMachine\My -SSLServerAuthentication | Move-Item `
  -Destination cert:\LocalMachine\WebHosting

Tanúsítványok és titkos kulcsok törlése

A Remove-Item parancsmag eltávolítja a megadott tanúsítványokat. A DeleteKey dinamikus paraméter törli a titkos kulcsot.

Tanúsítvány törlése a hitelesítésszolgáltató tárolójából

Ez a parancs töröl egy tanúsítványt a hitelesítésszolgáltató tanúsítványtárolójából, de a társított titkos kulcsot érintetlenül hagyja.

A meghajtón a Cert: parancsmag csak a Remove-ItemDeleteKey, Path, WhatIf és Confirm paramétereket támogatja. A rendszer minden más paramétert figyelmen kívül hagy.

Remove-Item cert:\LocalMachine\CA\5DDC44652E62BF9AA1116DC41DE44AB47C87BDD0

Tanúsítvány törlése helyettesítő karakterekkel a DNS-névben

Ez a parancs törli az összes olyan tanúsítványt, amely dns-nevet tartalmaz Fabrikam. A parancsmag DNSName paraméterét használja a Get-ChildItem tanúsítványok és a Remove-Item parancsmag törléséhez.

Get-ChildItem -Path cert:\LocalMachine -DnsName *Fabrikam* | Remove-Item

Titkos kulcsok törlése távoli számítógépről

Ez a parancssorozat engedélyezi a delegálást, majd törli a tanúsítványt és a hozzá tartozó titkos kulcsot egy távoli számítógépen. Ha távoli számítógépen szeretne titkos kulcsot törölni, delegált hitelesítő adatokat kell használnia.

A parancsmaggal engedélyezheti a Enable-WSManCredSSP Credential Security Service Provider (CredSSP) hitelesítést egy ügyfélen az S1 távoli számítógépen. A CredSSP engedélyezi a delegált hitelesítést.

Enable-WSManCredSSP -Role Client -DelegateComputer S1

Connect-WSMan A parancsmaggal csatlakoztassa az S1 számítógépet a helyi számítógép WinRM szolgáltatásához. A parancs befejeződésekor az S1 számítógép megjelenik a helyi WSMan: meghajtón a PowerShellben.

Connect-WSMan -ComputerName S1 -Credential Domain01\Admin01

Most a Set-Item meghajtón található WSMan: parancsmaggal engedélyezheti a CredSSP attribútumot a WinRM szolgáltatáshoz.

Set-Item -Path WSMan:\S1\Service\Auth\CredSSP -Value $true

Indítsa el a távoli munkamenetet az S1 számítógépen a parancsmag használatával, és adja meg a New-PSSession CredSSP-hitelesítést. Menti a munkamenetet a $s változóban.

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

Végül a Invoke-Command parancsmaggal futtasson egy Remove-Item parancsot a változó munkamenetében $s . A Remove-Item parancs a DeleteKey paraméterrel távolítja el a titkos kulcsot a megadott tanúsítvánnyal együtt.

Invoke-Command -Session $s { Remove-Item `
  -Path cert:\LocalMachine\My\D2D38EBA60CAA1C12055A2E1C83B15AD450110C2 `
  -DeleteKey
  }

Lejárt tanúsítványok törlése

Ez a parancs a parancsmag ExpiringInDays paraméterét Get-ChildItem használja a lejárt tanúsítványok lekéréséhez 0 az WebHosting áruházban.

A visszaadott tanúsítványokat tartalmazó változó a parancsmagba Remove-Item kerül, amely törli őket. A parancs a DeleteKey paraméterrel törli a titkos kulcsot és a tanúsítványt.

$expired = Get-ChildItem cert:\LocalMachine\WebHosting -ExpiringInDays 0
$expired | Remove-Item -DeleteKey

Tanúsítványok létrehozása

A New-Item parancsmag nem hoz létre új tanúsítványokat a tanúsítványszolgáltatóban . A New-SelfSignedCertificate parancsmaggal hozzon létre egy tanúsítványt tesztelési célokra.

Tanúsítványtárolók létrehozása

Cert: A meghajtón a New-Item parancsmag tanúsítványtárolókat hoz létre a LocalMachine tárolóhelyen. Támogatja a Name, Path, WhatIf és Confirm paramétereket. A többi paraméter figyelmen kívül lesz hagyva. A parancs egy System.Security.Cryptography.X509Certificates.X509Store értéket ad vissza, amely az új tanúsítványtárolót jelöli.

Ez a parancs létrehoz egy új tanúsítványtárolót a LocalMachine tárolóhelyen.CustomStore

New-Item -Path cert:\LocalMachine\CustomStore

Új tanúsítványtároló létrehozása távoli számítógépen

Ez a parancs létrehoz egy új tanúsítványtárolót HostingStore a LocalMachine Server01 számítógép tárolóhelyén.

A parancs a Invoke-Command parancsmag használatával futtat egy New-Item parancsot a Server01 számítógépen. A parancs egy System.Security.Cryptography.X509Certificates.X509Store értéket ad vissza, amely az új tanúsítványtárolót jelöli.

Invoke-Command { New-Item -Path cert:\LocalMachine\CustomStore } `
  -ComputerName Server01

Ügyféltanúsítványok létrehozása WS-Man

Ez a parancs létrehoz egy ClientCertificate bejegyzést , amelyet a WS-Management ügyfél használhat. Az új ClientCertificate a ClientCertificate könyvtárban a következőképpen ClientCertificate_1234567890jelenik meg. Minden paraméter kötelező. A kiállítónak a kiállító tanúsítványának ujjlenyomatának kell lennie.

$cred = Get-Credential
New-Item -Path WSMan:\localhost\ClientCertificate `
         -Issuer 1b3fd224d66c6413fe20d21e38b304226d192dfe `
         -URI wmicimv2/* -Credential $cred

Tanúsítványtárolók törlése

Tanúsítványtároló törlése távoli számítógépről

Ez a parancs a Invoke-Command parancsmag használatával futtat egy Remove-Item parancsot az S1 és az S2 számítógépeken. A Remove-Item parancs tartalmazza a Recurse paramétert , amely a tároló törlése előtt törli a tárolóban lévő tanúsítványokat.

Invoke-Command { Remove-Item -Path cert:\LocalMachine\TestStore -Recurse } `
  -ComputerName S1, S2

Dinamikus paraméterek

A dinamikus paraméterek olyan parancsmag-paraméterek, amelyeket egy PowerShell-szolgáltató ad hozzá, és csak akkor érhetők el, ha a parancsmagot a szolgáltató által engedélyezett meghajtón használják. Ezek a paraméterek a tanúsítványszolgáltató összes alkönyvtárában érvényesek, de csak a tanúsítványokra érvényesek.

Megjegyzés

Az EnhancedKeyUsageList tulajdonságon szűrést végző paraméterek üres EnhancedKeyUsageList tulajdonságértékkel rendelkező elemeket is visszaadnak. Az üres EnhancedKeyUsageList-et tartalmazó tanúsítványok minden célra használhatók.

A következő tanúsítványszolgáltatói paraméterek lettek újra bevezetve a PowerShell 7.1-ben.

  • DNSName
  • DocumentEncryptionCert
  • EKU
  • LejáróInDays
  • SSLServerAuthentication

CodeSigningCert <System.Management.Automation.SwitchParameter>

Támogatott parancsmagok

Ez a paraméter lekéri az EnhancedKeyUsageList tulajdonságértékben lévő Code Signing tanúsítványokat.

DeleteKey <System.Management.Automation.SwitchParameter>

Támogatott parancsmagok

Ez a paraméter törli a társított titkos kulcsot a tanúsítvány törlésekor.

Fontos

Ha egy távoli számítógépen található tárolóban Cert:\CurrentUser lévő felhasználói tanúsítvánnyal társított titkos kulcsot szeretne törölni, delegált hitelesítő adatokat kell használnia. A Invoke-Command parancsmag a CredSSP paraméterrel támogatja a hitelesítő adatok delegálását. A hitelesítő adatok delegálása és használata Remove-ItemInvoke-Command előtt vegye figyelembe a biztonsági kockázatokat.

Ezt a paramétert újra bevezették a PowerShell 7.1-ben

DnsName <Microsoft.PowerShell.Commands.DnsNameRepresentation>

Támogatott parancsmagok

Ez a paraméter lekéri azokat a tanúsítványokat, amelyek a tanúsítvány DNSNameList tulajdonságában megadott tartománynévvel vagy névmintával rendelkeznek. A paraméter értéke lehet Unicode vagy ASCII. A punycode-értékek Unicode-ra lesznek konvertálva. A helyettesítő karakterek (*) használata engedélyezett.

Ezt a paramétert újra bevezették a PowerShell 7.1-ben

DocumentEncryptionCert <System.Management.Automation.SwitchParameter>

Támogatott parancsmagok

Ez a paraméter lekéri az EnhancedKeyUsageList tulajdonságértékben lévő Document Encryption tanúsítványokat.

System.String EKU <>

Támogatott parancsmagok

Ez a paraméter lekéri azokat a tanúsítványokat, amelyek a tanúsítvány EnhancedKeyUsageList tulajdonságában megadott szöveg- vagy szövegmintával rendelkeznek. A helyettesítő karakterek (*) használata engedélyezett. Az EnhancedKeyUsageList tulajdonság tartalmazza az EKU rövid nevét és objektumazonosító-mezőit.

Ezt a paramétert újra bevezették a PowerShell 7.1-ben

LejáróInDays <System.Int32>

Támogatott parancsmagok

Ez a paraméter lekéri a megadott számú napon belül vagy azt megelőzően lejáró tanúsítványokat. A nulla (0) érték lekéri a lejárt tanúsítványokat.

Ezt a paramétert újra bevezették a PowerShell 7.1-ben

ItemType <System.String>

Ez a paraméter lehetővé teszi a létrehozott elem típusának megadását New-Item.

Certificate Meghajtón a következő értékek engedélyezettek:

  • Certificate Provider
  • Certificate
  • Store
  • StoreLocation

Támogatott parancsmagok

SSLServerAuthentication <System.Management.Automation.SwitchParameter>

Támogatott parancsmagok

Csak kiszolgálótanúsítványokat kér le az SSL-alapú webes üzemeltetéshez. Ez a paraméter lekéri az EnhancedKeyUsageList tulajdonságértékben lévő Server Authentication tanúsítványokat.

Ezt a paramétert újra bevezették a PowerShell 7.1-ben

Szkripttulajdonságok

Új szkripttulajdonságok lettek hozzáadva az x509Certificate2 objektumhoz, amely a tanúsítványokat jelöli, hogy megkönnyítse a tanúsítványok keresését és kezelését.

  • DnsNameList: A DnsNameList tulajdonság feltöltéséhez a tanúsítványszolgáltató átmásolja a tartalmat a SubjectAlternativeName (SAN) bővítmény DNSName bejegyzéséből. Ha a SAN-bővítmény üres, a tulajdonság a tanúsítvány Tulajdonos mezőjéből származó tartalommal lesz feltöltve.
  • EnhancedKeyUsageList: Az EnhancedKeyUsageList tulajdonság feltöltéséhez a tanúsítványszolgáltató átmásolja a tanúsítvány EnhancedKeyUsage (EKU) mezőjének objektumazonosító-tulajdonságait, és létrehoz egy rövid nevet.
  • SendAsTrustedIssuer: A SendAsTrustedIssuer tulajdonság feltöltéséhez a tanúsítványszolgáltató átmásolja a SendAsTrustedIssuer tulajdonságot a tanúsítványból. További információ: Megbízható kiállítók kezelése az ügyfél-hitelesítéshez.

Ezekkel az új szolgáltatásokkal a DNS-neveik és lejárati dátumuk alapján kereshet tanúsítványokat, és megkülönböztetheti az ügyfél- és kiszolgálóhitelesítési tanúsítványokat a kibővített kulcshasználat (EKU) tulajdonságaik alapján.

A folyamat használata

A szolgáltatói parancsmagok elfogadják a folyamat bemenetét. A folyamattal leegyszerűsítheti a feladatokat, ha szolgáltatói adatokat küld az egyik parancsmagból egy másik szolgáltatói parancsmagba. A folyamat szolgáltatói parancsmagokkal való használatával kapcsolatos további információkért tekintse meg a jelen cikkben található parancsmag-hivatkozásokat.

Segítség kérése

A PowerShell 3.0-tól kezdve testre szabott súgótémaköröket kaphat a szolgáltatói parancsmagokhoz, amelyek ismertetik, hogyan viselkednek ezek a parancsmagok a fájlrendszer-meghajtókon.

A fájlrendszer-meghajtóhoz testre szabott súgótémakörök lekéréséhez futtasson egy Get-Help parancsot egy fájlrendszer-meghajtón, vagy használja a -Path paramétert Get-Help a fájlrendszermeghajtó megadásához.

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

Lásd még