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 a 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.

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

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

  • Microsoft.PowerShell.Commands.X509StoreLocation, amely 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.
  • System.Security.Cryptography.X509Certificates.X509Store, amelyek fizikai tárolók, ahol a tanúsítványok mentése és kezelése megtörtént.
  • System.Security.Cryptography.X509Certificates.X509Certificate2, amelyek mindegyike egy X.509-tanúsítványt jelöl a számítógépen. A tanúsítványokat 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 parancs használatával módosítja az aktuális helyet az Root áruházban található LocalMachine tanúsítványtárolóra. 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 más helyről szeretne aliasra hivatkozni, használja az Cert: elérési út meghajtónevét.

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

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

Set-Location C:

Feljegyzés

A PowerShell aliasokkal teszi lehetővé a szolgáltatói útvonalakkal való munkavégzést. Az olyan parancsok, mint például dir a ls Get-ChildItem aliasai, cd a Set-Location aliasai, és pwd a Get-Location aliasai.

A Cert: 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ó jogosultsággal rendelkező számítógépen található összes tanúsítvány lekéréséhez.

Get-ChildItem -Path cert: -CodeSigningCert -Recurse

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

Ez a parancs a parancsmag LejáratinDays 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.

$getChildItemSplat = @{
    Path = 'cert:\LocalMachine\My', 'cert:\LocalMachine\WebHosting'
    SSLServerAuthentication = $true
}
Get-ChildItem @getChildItemSplat

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 LejáratinDays paraméter nulla (0) értéke lekéri a lejárt Srv01- és Srv02-számítógépek tanúsítványait.

$invokeCommandSplat = @{
    ComputerName = 'Srv01', 'Srv02'
    ScriptBlock = {
        Get-ChildItem -Path cert:\* -Recurse -ExpiringInDays 0
    }
}
Invoke-Command @invokeCommandSplat

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-ük nevében
  • 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)
$getChildItemSplat = @{
    Path = 'cert:\*'
    Recurse = $true
    DnsName = "*fabrikam*"
    Eku = "*Client Authentication*"
}
Get-ChildItem @getChildItemSplat |
    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ányok másolását a tanúsítványszolgáltató nem támogatja. 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 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

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 parancsmaggal helyezi át a tanúsítványt az My áruházból az WebHosting áruházba.

Move-Item nem tudja áthelyezni a tanúsítványtárolókat, és nem tudja áthelyezni a tanúsítványokat egy másik tárolóhelyre, például egy tanúsítvány áthelyezése LocalMachineCurrentUseride. A Move-Item parancsmag áthelyezheti a tanúsítványokat egy tárolón belül, 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 parancsmagra vannak állítva, amely áthelyezi a tanúsítványokat az WebHosting áruházba.

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 törli a megadott tanúsítványokat. A DeleteKey dinamikus paraméter törli a titkos kulcsot.

Tanúsítvány törlése a ca-tárolóból

Ez a parancs törli a 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 DeleteKey, path, WhatIf és Confirm paramétereket támogatja.Remove-Item A rendszer figyelmen kívül hagyja az összes többi paramétert.

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

Tanúsítvány törlése helyettesítő karakterek használatával 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 társított 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 PowerShell helyi WSMan: meghajtóján.

Connect-WSMan -ComputerName S1 -Credential Domain01\Admin01

Most a Set-Item meghajtóban 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 parancsmaggal, é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 {
    $removeItemSplat = @{
        Path = 'cert:\LocalMachine\My\D2D38EBA60CAA1C12055A2E1C83B15AD450110C2'
        DeleteKey = $true
    }
    Remove-Item @removeItemSplat
}

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

Ez a parancs a parancsmag LejáratinDays paraméterét használja a Get-ChildItem lejárt tárolóban lévő WebHosting tanúsítványok lekéréséhez0.

A visszaadott tanúsítványokat tartalmazó változót a rendszer a Remove-Item parancsmagba csövezi, 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

A meghajtón a Cert: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 rendszer figyelmen kívül hagyja az összes többi paramétert. 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, amely a LocalMachine Server01 számítógépen található tárolóhelyen van elnevezveHostingStore.

A parancs a Invoke-Command parancsmaggal 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 -ComputerName Server01 -ScriptBlock {
    New-Item -Path cert:\LocalMachine\CustomStore
}

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

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

$newItemSplat = @{
    Path = 'WSMan:\localhost\ClientCertificate'
    Credential = Get-Credential
    Issuer = '1b3fd224d66c6413fe20d21e38b304226d192dfe'
    URI = 'wmicimv2/*'
}
New-Item @newItemSplat

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 törli a tárolóban lévő tanúsítványokat, mielőtt törli az áruházat.

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

Dinamikus paraméterek

A dinamikus paraméterek olyan parancsmagparamé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ányokon érvényesek.

Feljegyzés

Az EnhancedKeyUsageList tulajdonságra 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 újra be lettek vezetve a PowerShell 7.1-ben.

  • DNSName
  • DocumentEncryptionCert
  • EKU
  • Lejáró nap
  • 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 lévő tárolóban Cert:\CurrentUser lévő felhasználói tanúsítványhoz 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 előtt Remove-ItemInvoke-Command érdemes megfontolni 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 olyan tanúsítványokat kap, amelyek a tanúsítvány DNSNameList tulajdonságában megadott tartománynévvel vagy névmintával rendelkeznek. Ennek a paraméternek az é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.

EKU <System.String>

Támogatott parancsmagok

Ez a paraméter olyan tanúsítványokat kap, 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 OID 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 előtt 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 határozza meg a létrehozott New-Itemelem típusát. A New-Item parancsmag csak az értéket Storetámogatja. New-Item A parancsmag nem tud új tanúsítványokat létrehozni.

Támogatott parancsmagok

SSLServerAuthentication <System.Management.Automation.SwitchParameter>

Támogatott parancsmagok

Csak az SSL-webszolgáltatás kiszolgálótanúsítványait kapja meg. 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ágot a tanúsítvány Tulajdonos mezőjéből származó tartalom tölti ki.
  • EnhancedKeyUsageList: A EnhancedKeyUsageList tulajdonság feltöltéséhez a tanúsítványszolgáltató átmásolja a EnhancedKeyUsage (EKU) mező OID-tulajdonságait a tanúsítványban, é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élhitelesítéshez.

Ezek az új funkciók lehetővé teszik a tanúsítványok keresését a DNS-nevük és a lejárati dátumuk alapján, valamint megkülönböztetheti az ügyfél- és kiszolgálóhitelesítési tanúsítványokat a bővített kulcshasználati (EKU) tulajdonságok értéke alapján.

A folyamat használata

A szolgáltatói parancsmagok elfogadják a folyamatbemenetet. A folyamat segítségével egyszerűsítheti a feladatokat, ha szolgáltatói adatokat küld egy parancsmagból egy másik szolgáltatói parancsmagnak. A folyamat szolgáltatói parancsmagokkal való használatával kapcsolatos további információkért tekintse meg a 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 egy fájlrendszer-meghajtón.

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ájlrendszer-meghajtó megadásához.

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

Lásd még