Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Providernamn
Certifikat
Drivrutiner
Cert:
Förmågor
BörBearbetas
Kort beskrivning
Ger åtkomst till X.509-certifikatarkiv och certifikat i PowerShell.
Detaljerad beskrivning
Den här informationen gäller endast för PowerShell som körs i Windows.
Med PowerShell Certificate-providern kan du hämta, lägga till, ändra, rensa och ta bort certifikat och certifikatarkiv i PowerShell.
Enheten Certificate är ett hierarkiskt namnområde som innehåller certifikatarkiven och certifikaten på datorn.
Certifikatprovidern stöder följande cmdlets, som beskrivs i den här artikeln.
- Hämta-Plats
- Ange-plats
- Hämta-Objekt
- Get-ChildItem
- Anropa-objekt
- Flytta objekt
- nytt objekt
- Ta bort objekt
- Get-ItemProperty
- Set-ItemProperty (Ställa in-objektEgenskap
- Rensa-ObjektEgenskap
- Get-AuthenticodeSignature
- Set-AuthenticodeSignature (Ställa in AuthenticodeSignature)
Typer som exponeras av den här providern
Certifikatenheten exponerar följande typer.
- Lagra platser (Microsoft.PowerShell.Commands.X509StoreLocation), som är containrar på hög nivå som grupperar certifikaten för den aktuella användaren och för alla användare. Varje system har en lagringsplats för
CurrentUserochLocalMachine(alla användare). - Certifikatarkiv (System.Security.Cryptography.X509Certificates.X509Store), som är fysiska arkiv där certifikat sparas och hanteras.
- X.509 System.Security.Cryptography.X509Certificates.X509Certificate2 certifikat, som vart och ett representerar ett X.509-certifikat på datorn. Certifikat identifieras med tumavtryck.
Navigera på certifikatenheten
Providern Certificate exponerar certifikatets namnområde som den Cert: enheten i PowerShell. Det här kommandot använder kommandot Set-Location för att ändra den aktuella platsen till det Root certifikatarkivet på LocalMachine lagringsplats. Använd ett omvänt snedstreck (\) eller ett snedstreck (/) för att ange en nivå på den Cert: enheten.
Set-Location Cert:
Du kan också arbeta med certifikatprovidern från andra PowerShell-enheter.
Om du vill referera till ett alias från en annan plats, använd enhetsnamnet Cert: i sökvägen.
PS Cert:\> Set-Location -Path LocalMachine\Root
Om du vill återgå till en filsystemenhet skriver du enhetsnamnet. Skriv till exempel:
Set-Location C:
Anmärkning
PowerShell använder alias för att ge dig ett välbekant sätt att arbeta med providersökvägar. Kommandon som dir och ls är nu alias för Get-ChildItem, cd är ett alias för Set-Location. och pwd är ett alias för Get-Location.
Visa innehållet i certifikatenheten:
Det här kommandot använder cmdleten Get-ChildItem för att visa certifikatarkivet på platsen för CurrentUser certifikatarkiv.
Om du inte är i Cert: enheten, använd en absolut sökväg.
PS Cert:\CurrentUser\> Get-ChildItem
Visa certifikategenskaper på enheten Cert:
Det här exemplet hämtar ett certifikat med Get-Item och lagrar det i en variabel. Exemplet visar de nya egenskaperna för certifikatskriptet (DnsNameList, EnhancedKeyUsageList, SendAsTrustedIssuer) med hjälp av 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
Hitta alla CodeSigning-certifikat
Det här kommandot använder parametrarna CodeSigningCert och Recurse för cmdleten Get-ChildItem för att hämta alla certifikat på datorn som har kodsigneringsbehörighet.
Get-ChildItem -Path cert: -CodeSigningCert -Recurse
Hitta utgångna certifikat
Det här kommandot använder parametern ExpiringInDays för cmdleten Get-ChildItem för att hämta certifikat som upphör att gälla inom de närmaste 30 dagarna.
Get-ChildItem -Path cert:\LocalMachine\WebHosting -ExpiringInDays 30
Hitta server-SSL-certifikat
Det här kommandot använder parametern SSLServerAuthentication för cmdleten Get-ChildItem för att hämta alla Server SSL-certifikat i My- och WebHosting-arkiven.
Get-ChildItem -Path cert:\LocalMachine\My, cert:\LocalMachine\WebHosting `
-SSLServerAuthentication
Hitta utgångna certifikat på fjärrdatorer
Det här kommandot använder cmdleten Invoke-Command för att köra ett Get-ChildItem kommando på datorerna Srv01 och Srv02. Värdet noll (0) i parametern ExpiringInDays hämtar certifikat på de Srv01- och Srv02-datorer som har upphört att gälla.
Invoke-Command -ComputerName Srv01, Srv02 {Get-ChildItem -Path cert:\* `
-Recurse -ExpiringInDays 0}
Kombinera filter för att hitta en specifik uppsättning certifikat
Det här kommandot hämtar alla certifikat på platsen LocalMachine store som har följande attribut:
-
fabrikami dns-namnet -
Client Authenticationi sin EKU - värdet
$trueför egenskapen SendAsTrustedIssuer - upphör inte att gälla inom de närmaste 30 dagarna.
Egenskapen NotAfter lagrar certifikatets förfallodatum.
[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
}
Öppna MMC-snapin-modulen certifikat
Cmdleten Invoke-Item använder standardprogrammet för att öppna en sökväg som du anger. För certifikat är standardprogrammet MMC-snapin-modulen Certifikat.
Det här kommandot öppnar MMC-snapin-modulen Certifikat för att hantera det angivna certifikatet.
Invoke-Item cert:\CurrentUser\my\6B8223358119BB08840DEE50FD8AF9EA776CE66B
Kopiera certifikat
Kopiering av certifikat stöds inte av certifikatprovidern . När du försöker kopiera ett certifikat visas det här felet.
$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
Flytta certifikat
Flytta alla SSL Server-autentiseringscertifikat till WebHosting Store
Det här kommandot använder cmdleten Move-Item för att flytta ett certifikat från My-arkivet till WebHosting-arkivet.
Move-Item kommer inte att flytta certifikatarkiv och det kommer inte att flytta certifikat till en annan lagringsplats, till exempel att flytta ett certifikat från LocalMachine till CurrentUser. Cmdleten Move-Item flyttar certifikat, men privata nycklar flyttas inte.
Det här kommandot använder parametern SSLServerAuthentication för cmdleten Get-ChildItem för att hämta SSL-serverautentiseringscertifikat i My certifikatarkivet.
De returnerade certifikaten skickas till cmdleten Move-Item som flyttar certifikaten till WebHosting-arkivet.
Get-ChildItem cert:\LocalMachine\My -SSLServerAuthentication | Move-Item `
-Destination cert:\LocalMachine\WebHosting
Ta bort certifikat och privata nycklar
Cmdleten Remove-Item tar bort certifikat som du anger. Den dynamiska parametern DeleteKey tar bort den privata nyckeln.
Ta bort ett certifikat från CA-arkivet
Det här kommandot tar bort ett certifikat från CA-certifikatarkivet, men lämnar den associerade privata nyckeln intakt.
På den
Remove-Item cert:\LocalMachine\CA\5DDC44652E62BF9AA1116DC41DE44AB47C87BDD0
Ta bort ett certifikat med jokertecken i DNS-namnet
Det här kommandot tar bort alla certifikat som har ett DNS-namn som innehåller Fabrikam. Den använder parametern DNSName för cmdleten Get-ChildItem för att hämta certifikaten och Remove-Item cmdleten för att ta bort dem.
Get-ChildItem -Path cert:\LocalMachine -DnsName *Fabrikam* | Remove-Item
Ta bort privata nycklar från en fjärrdator
Den här serien med kommandon aktiverar delegering och tar sedan bort certifikatet och den associerade privata nyckeln på en fjärrdator. Om du vill ta bort en privat nyckel på en fjärrdator måste du använda delegerade autentiseringsuppgifter.
Använd cmdleten Enable-WSManCredSSP för att aktivera CredSSP-autentisering (CredSSP) på en klient på S1-fjärrdatorn.
CredSSP tillåter delegerad autentisering.
Enable-WSManCredSSP -Role Client -DelegateComputer S1
Använd cmdleten Connect-WSMan för att ansluta S1-datorn till WinRM-tjänsten på den lokala datorn. När det här kommandot har slutförts visas S1-datorn på den lokala WSMan: enheten i PowerShell.
Connect-WSMan -ComputerName S1 -Credential Domain01\Admin01
Nu kan du använda cmdleten Set-Item i WSMan:-enheten för att aktivera CredSSP-attributet för WinRM-tjänsten.
Set-Item -Path WSMan:\S1\Service\Auth\CredSSP -Value $true
Starta en fjärrsession på S1-datorn med hjälp av cmdleten New-PSSession och ange CredSSP-autentisering. Sparar sessionen i variabeln $s.
$s = New-PSSession S1 -Authentication CredSSP -Credential Domain01\Admin01
Använd slutligen cmdleten Invoke-Command för att köra ett Remove-Item kommando i sessionen i variabeln $s. Kommandot Remove-Item använder parametern DeleteKey för att ta bort den privata nyckeln tillsammans med det angivna certifikatet.
Invoke-Command -Session $s { Remove-Item `
-Path cert:\LocalMachine\My\D2D38EBA60CAA1C12055A2E1C83B15AD450110C2 `
-DeleteKey
}
Ta bort utgångna certifikat
Det här kommandot använder parametern ExpiringInDays för cmdleten Get-ChildItem med värdet 0 för att hämta certifikat i det WebHosting arkiv som har upphört att gälla.
Variabeln som innehåller de returnerade certifikaten skickas till cmdleten Remove-Item, som tar bort dem. Kommandot använder parametern DeleteKey för att ta bort den privata nyckeln tillsammans med certifikatet.
$expired = Get-ChildItem cert:\LocalMachine\WebHosting -ExpiringInDays 0
$expired | Remove-Item -DeleteKey
Skapa certifikat
Cmdleten New-Item skapar inte nya certifikat i certifikatprovidern . Använd cmdleten New-SelfSignedCertificate för att skapa ett certifikat i testsyfte.
Skapa certifikatarkiv
På den Cert: enheten skapar cmdleten New-Item certifikatarkiv på LocalMachine lagringsplats. Den stöder
Det här kommandot skapar ett nytt certifikatarkiv med namnet CustomStore på platsen LocalMachine store.
New-Item -Path cert:\LocalMachine\CustomStore
Skapa ett nytt certifikatarkiv på en fjärrdator
Det här kommandot skapar ett nytt certifikatarkiv med namnet HostingStore på LocalMachine-lagringsplatsen på Server01-datorn.
Kommandot använder cmdleten Invoke-Command för att köra ett New-Item kommando på Server01-datorn. Kommandot returnerar en System.Security.Cryptography.X509Certificates.X509Store som representerar det nya certifikatarkivet.
Invoke-Command { New-Item -Path cert:\LocalMachine\CustomStore } `
-ComputerName Server01
Skapa klientcertifikat för WS-Man
Det här kommandot skapar ClientCertificate post som kan användas av WS-Management-klienten. Det nya ClientCertificate visas under katalogen ClientCertificate som ClientCertificate_1234567890. Alla parametrar är obligatoriska.
Issuer- måste vara tumavtryck för utfärdarens certifikat.
$cred = Get-Credential
New-Item -Path WSMan:\localhost\ClientCertificate `
-Issuer 1b3fd224d66c6413fe20d21e38b304226d192dfe `
-URI wmicimv2/* -Credential $cred
Ta bort certifikatarkiv
Ta bort ett certifikatarkiv från en fjärrdator
Det här kommandot använder cmdleten Invoke-Command för att köra ett Remove-Item kommando på S1- och S2-datorerna. Kommandot Remove-Item innehåller parametern Recurse som tar bort certifikaten i arkivet innan arkivet tas bort.
Invoke-Command { Remove-Item -Path cert:\LocalMachine\TestStore -Recurse } `
-ComputerName S1, S2
Dynamiska parametrar
Dynamiska parametrar är cmdlet-parametrar som läggs till av en PowerShell-provider och är endast tillgängliga när cmdleten används på den provideraktiverade enheten. Dessa parametrar är giltiga i alla underkataloger för -certifikatet-providern, men gäller endast för certifikat.
Anmärkning
Parametrar som utför filtrering mot egenskapen EnhancedKeyUsageList returnerar också objekt med ett tomt EnhancedKeyUsageList egenskapsvärde. Certifikat som har en tom EnhancedKeyUsageList kan användas för alla ändamål.
Följande parametrar för certifikatprovidern återinfördes i PowerShell 7.1.
- DNSName (på engelska)
- DocumentEncryptionCert (på engelska)
- EKU-
- ExpiringInDays (Utgående dagar)
- SSLServerAutentisering
CodeSigningCert <System.Management.Automation.SwitchParameter>
Cmdletar stöds
Den här parametern hämtar certifikat som har Code Signing i egenskapsvärdet EnhancedKeyUsageList.
DeleteKey <System.Management.Automation.SwitchParameter>
Cmdletar stöds
Den här parametern tar bort den associerade privata nyckeln när certifikatet tas bort.
Viktigt!
Om du vill ta bort en privat nyckel som är associerad med ett användarcertifikat i Cert:\CurrentUser arkivet på en fjärrdator måste du använda delegerade autentiseringsuppgifter. Cmdleten Invoke-Command stöder delegering av autentiseringsuppgifter med hjälp av parametern CredSSP. Du bör överväga eventuella säkerhetsrisker innan du använder Remove-Item med delegering av Invoke-Command och autentiseringsuppgifter.
Den här parametern återinfördes i PowerShell 7.1
DnsName <Microsoft.PowerShell.Commands.DnsNameRepresentation>
Cmdletar stöds
Den här parametern hämtar certifikat som har det angivna domännamnet eller namnmönstret i DNSNameList-egenskapen för certifikatet. Värdet för den här parametern kan antingen vara Unicode eller ASCII. Punycode-värden konverteras till Unicode. Jokertecken (*) tillåts.
Den här parametern återinfördes i PowerShell 7.1
DocumentEncryptionCert <System.Management.Automation.SwitchParameter>
Cmdletar stöds
Den här parametern hämtar certifikat som har Document Encryption i egenskapsvärdet EnhancedKeyUsageList.
EKU <System.String>
Cmdletar stöds
Den här parametern hämtar certifikat som har det angivna text- eller textmönstret i EnhancedKeyUsageList-egenskapen för certifikatet. Jokertecken (*) tillåts. Egenskapen EnhancedKeyUsageList innehåller det vänliga namnet och OID-fälten i EKU.
Den här parametern återinfördes i PowerShell 7.1
ExpiringInDays <System.Int32>
Cmdletar stöds
Den här parametern hämtar certifikat som upphör att gälla under eller före det angivna antalet dagar. Värdet noll (0) hämtar certifikat som har upphört att gälla.
Den här parametern återinfördes i PowerShell 7.1
ItemType <System.String>
Med den här parametern kan du ange vilken typ av objekt som skapas av New-Item.
På en enhet Certificate är följande värden tillåtna:
Certificate ProviderCertificateStoreStoreLocation
Cmdletar stöds
SSLServerAuthentication <System.Management.Automation.SwitchParameter>
Cmdletar stöds
Hämtar endast servercertifikat för SSL-webbvärd. Den här parametern hämtar certifikat som har Server Authentication i egenskapsvärdet EnhancedKeyUsageList.
Den här parametern återinfördes i PowerShell 7.1
Skriptegenskaper
Nya skriptegenskaper har lagts till i x509Certificate2 objekt som representerar certifikaten för att göra det enkelt att söka efter och hantera certifikaten.
- DnsNameList: Om du vill fylla i egenskapen DnsNameList kopierar certifikatprovidern innehållet från POSTEN DNSName i TILLÄGGET SubjectAlternativeName (SAN). Om SAN-tillägget är tomt fylls egenskapen i med innehåll från certifikatets ämnesfält.
- EnhancedKeyUsageList: För att fylla i egenskapen EnhancedKeyUsageList kopierar certifikatprovidern OID-egenskaperna för fältet EnhancedKeyUsage (EKU) i certifikatet och skapar ett eget namn för det.
- SendAsTrustedIssuer: För att fylla i egenskapen SendAsTrustedIssuer kopierar certifikatprovidern egenskapen SendAsTrustedIssuer från certifikatet. Mer information finns i Hantering av betrodda utfärdare för klientautentisering.
Med de här nya funktionerna kan du söka efter certifikat baserat på deras DNS-namn och förfallodatum och särskilja klient- och serverautentiseringscertifikat med värdet för deras EKU-egenskaper (Enhanced Key Usage).
Att använda pipelinen
Provider-cmdlets accepterar indata från pipeline. Du kan använda pipelinen för att förenkla uppgifter genom att skicka providerdata från en cmdlet till en annan provider-cmdlet. Mer information om hur du använder pipelinen med provider-cmdletar finns i cmdlet-referenserna i den här artikeln.
Få hjälp
Från och med PowerShell 3.0 kan du få anpassade hjälpavsnitt för provider-cmdletar som förklarar hur dessa cmdletar beter sig på en filsystemenhet.
Om du vill få hjälpavsnitt som är anpassade för filsystemenheten kör du ett Get-Help-kommando på en filsystemenhet eller använder parametern -Path för Get-Help för att ange en filsystemenhet.
Get-Help Get-ChildItem
Get-Help Get-ChildItem -Path cert: