about_Certificate_Provider
Nazwa dostawcy
Certyfikat
Napędy
Cert:
Możliwości
ShouldProcess
Krótki opis
Zapewnia dostęp do magazynów certyfikatów I certyfikatów X.509 w programie PowerShell.
Szczegółowy opis
Te informacje dotyczą tylko programu PowerShell uruchomionego w systemie Windows.
Dostawca certyfikatów programu PowerShell umożliwia pobieranie, dodawanie, zmienianie, czyszczenie i usuwanie certyfikatów oraz magazynów certyfikatów w programie PowerShell.
Dysk Certyfikat jest hierarchiczną przestrzenią nazw zawierającą magazyny certyfikatów i certyfikaty na komputerze.
Dostawca certyfikatów obsługuje następujące polecenia cmdlet.
- 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 uwidocznione przez tego dostawcę
Dysk certyfikatu uwidacznia następujące typy.
- Microsoft.PowerShell.Commands.X509StoreLocation, które są kontenerami wysokiego poziomu, które grupują certyfikaty dla bieżącego użytkownika i dla wszystkich użytkowników. Każdy system ma lokalizację
CurrentUser
magazynu iLocalMachine
(wszyscy użytkownicy). - System.Security.Cryptography.X509Certificates.X509Store, które są magazynami fizycznymi, w których certyfikaty są zapisywane i zarządzane.
- System.Security.Cryptography.X509Certificates.X509Certificate2, z których każdy reprezentuje certyfikat X.509 na komputerze. Certyfikaty są identyfikowane przez ich odciski palca.
Nawigowanie po dysku certyfikatu
Dostawca certyfikatów uwidacznia przestrzeń nazw certyfikatów Cert:
jako dysk w programie PowerShell. To polecenie używa Set-Location
polecenia , aby zmienić bieżącą lokalizację Root
na magazyn certyfikatów w LocalMachine
lokalizacji magazynu. Użyj ukośnika odwrotnego (\
) lub ukośnika do przodu (/
), aby wskazać poziom Cert:
dysku.
Set-Location Cert:
Możesz również pracować z dostawcą certyfikatów z dowolnego innego dysku programu PowerShell. Aby odwołać się do aliasu z innej lokalizacji, użyj Cert:
nazwy dysku w ścieżce.
PS Cert:\> Set-Location -Path LocalMachine\Root
Aby powrócić do dysku systemu plików, wpisz nazwę dysku. Na przykład wpisz:
Set-Location C:
Uwaga
Program PowerShell używa aliasów, aby umożliwić znajomą pracę ze ścieżkami dostawcy. Polecenia takie jak dir
i ls
są teraz aliasami get-ChildItem, cd
są aliasem dla polecenia Set-Location i pwd
jest aliasem polecenia Get-Location.
Wyświetlanie zawartości dysku Cert:
To polecenie używa Get-ChildItem
polecenia cmdlet do wyświetlania magazynów certyfikatów w CurrentUser
lokalizacji magazynu certyfikatów.
Jeśli nie jesteś na Cert:
dysku, użyj ścieżki bezwzględnej.
PS Cert:\CurrentUser\> Get-ChildItem
Wyświetlanie właściwości certyfikatu w ramach dysku Cert:
W tym przykładzie jest pobierany certyfikat z elementem Get-Item
i przechowuje go w zmiennej.
W przykładzie przedstawiono nowe właściwości skryptu certyfikatu (DnsNameList, EnhancedKeyUsageList, SendAsTrustedIssuer) przy użyciu polecenia 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
Znajdź wszystkie certyfikaty CodeSigning
To polecenie używa parametrów Get-ChildItem
CodeSigningCert i Recurse polecenia cmdlet, aby pobrać wszystkie certyfikaty na komputerze z urzędem podpisywania kodu.
Get-ChildItem -Path cert: -CodeSigningCert -Recurse
Znajdowanie wygasłych certyfikatów
To polecenie używa parametru Get-ChildItem
ExpiringInDays polecenia cmdlet, aby pobrać certyfikaty wygasające w ciągu najbliższych 30 dni.
Get-ChildItem -Path cert:\LocalMachine\WebHosting -ExpiringInDays 30
Znajdowanie certyfikatów SSL serwera
To polecenie używa parametru Get-ChildItem
SSLServerAuthentication polecenia cmdlet, aby pobrać wszystkie certyfikaty SSL serwera w magazynie My
i WebHosting
.
$getChildItemSplat = @{
Path = 'cert:\LocalMachine\My', 'cert:\LocalMachine\WebHosting'
SSLServerAuthentication = $true
}
Get-ChildItem @getChildItemSplat
Znajdowanie wygasłych certyfikatów na komputerach zdalnych
To polecenie używa Invoke-Command
polecenia cmdlet do uruchomienia Get-ChildItem
polecenia na komputerach Srv01 i Srv02. Wartość zero (0
) w parametrze ExpiringInDays pobiera certyfikaty na komputerach Srv01 i Srv02, które wygasły.
$invokeCommandSplat = @{
ComputerName = 'Srv01', 'Srv02'
ScriptBlock = {
Get-ChildItem -Path cert:\* -Recurse -ExpiringInDays 0
}
}
Invoke-Command @invokeCommandSplat
Łączenie filtrów w celu znalezienia określonego zestawu certyfikatów
To polecenie pobiera wszystkie certyfikaty w LocalMachine
lokalizacji magazynu, które mają następujące atrybuty:
fabrikam
w nazwie DNSClient Authentication
w ich EKU- wartość
$true
właściwości SendAsTrustedIssuer - nie wygasaj w ciągu najbliższych 30 dni.
Właściwość NotAfter przechowuje datę wygaśnięcia certyfikatu.
[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 }
Otwieranie przystawki MMC certyfikatów
Polecenie Invoke-Item
cmdlet używa domyślnej aplikacji do otwierania określonej ścieżki. W przypadku certyfikatów domyślną aplikacją jest przystawka MMC Certyfikaty.
To polecenie otwiera przystawkę MMC Certyfikaty, aby zarządzać określonym certyfikatem.
Invoke-Item cert:\CurrentUser\my\6B8223358119BB08840DEE50FD8AF9EA776CE66B
Kopiowanie certyfikatów
Kopiowanie certyfikatów nie jest obsługiwane przez dostawcę certyfikatów . Podczas próby skopiowania certyfikatu zostanie wyświetlony ten błąd.
$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
Przenoszenie certyfikatów
Przenoszenie wszystkich certyfikatów uwierzytelniania serwera SSL do magazynu WebHosting
To polecenie używa Move-Item
polecenia cmdlet do przeniesienia certyfikatu My
z magazynu do WebHosting
magazynu.
Move-Item
program nie może przenieść magazynów certyfikatów i nie może przenieść certyfikatów do innej lokalizacji magazynu, takiej jak przeniesienie certyfikatu z LocalMachine
programu do CurrentUser
programu . Polecenie Move-Item
cmdlet może przenosić certyfikaty w magazynie, ale nie przenosi kluczy prywatnych.
To polecenie używa parametru Get-ChildItem
SSLServerAuthentication polecenia cmdlet w celu pobrania certyfikatów uwierzytelniania serwera SSL w My
magazynie certyfikatów.
Zwrócone certyfikaty są przesyłane potokami do Move-Item
polecenia cmdlet, które przenosi certyfikaty do WebHosting
magazynu.
Get-ChildItem cert:\LocalMachine\My -SSLServerAuthentication |
Move-Item -Destination cert:\LocalMachine\WebHosting
Usuwanie certyfikatów i kluczy prywatnych
Polecenie Remove-Item
cmdlet usuwa określone certyfikaty. Parametr dynamiczny DeleteKey usuwa klucz prywatny.
Usuwanie certyfikatu z magazynu urzędu certyfikacji
To polecenie usuwa certyfikat z magazynu certyfikatów urzędu certyfikacji, ale pozostawia skojarzony klucz prywatny bez zmian.
Cert:
Na dysku Remove-Item
polecenie cmdlet obsługuje tylko parametry DeleteKey, Path, WhatIf i Confirm. Wszystkie inne parametry są ignorowane.
Remove-Item cert:\LocalMachine\CA\5DDC44652E62BF9AA1116DC41DE44AB47C87BDD0
Usuwanie certyfikatu przy użyciu symboli wieloznacznych w nazwie DNS
To polecenie usuwa wszystkie certyfikaty, które mają nazwę DNS zawierającą Fabrikam
. Używa parametru Get-ChildItem
DNSName polecenia cmdlet do pobrania certyfikatów i Remove-Item
polecenia cmdlet w celu ich usunięcia.
Get-ChildItem -Path cert:\LocalMachine -DnsName *Fabrikam* | Remove-Item
Usuwanie kluczy prywatnych z komputera zdalnego
Ta seria poleceń umożliwia delegowanie, a następnie usuwa certyfikat i skojarzony klucz prywatny na komputerze zdalnym. Aby usunąć klucz prywatny na komputerze zdalnym, należy użyć poświadczeń delegowanych.
Enable-WSManCredSSP
Użyj polecenia cmdlet , aby włączyć uwierzytelnianie dostawcy usług zabezpieczeń poświadczeń (CredSSP) na kliencie na komputerze zdalnym S1.
Dostawca CredSSP zezwala na uwierzytelnianie delegowane.
Enable-WSManCredSSP -Role Client -DelegateComputer S1
Connect-WSMan
Użyj polecenia cmdlet , aby połączyć komputer S1 z usługą WinRM na komputerze lokalnym. Po zakończeniu tego polecenia komputer S1 pojawi się na dysku lokalnym WSMan:
w programie PowerShell.
Connect-WSMan -ComputerName S1 -Credential Domain01\Admin01
Teraz możesz użyć Set-Item
polecenia cmdlet na WSMan:
dysku, aby włączyć atrybut CredSSP dla usługi WinRM.
Set-Item -Path WSMan:\S1\Service\Auth\CredSSP -Value $true
Uruchom sesję zdalną na komputerze S1 przy użyciu New-PSSession
polecenia cmdlet i określ uwierzytelnianie CredSSP. Zapisuje sesję w zmiennej $s
.
$s = New-PSSession S1 -Authentication CredSSP -Credential Domain01\Admin01
Na koniec użyj Invoke-Command
polecenia cmdlet, aby uruchomić Remove-Item
polecenie w sesji w zmiennej $s
. Polecenie Remove-Item
używa parametru DeleteKey , aby usunąć klucz prywatny wraz z określonym certyfikatem.
Invoke-Command -Session $s {
$removeItemSplat = @{
Path = 'cert:\LocalMachine\My\D2D38EBA60CAA1C12055A2E1C83B15AD450110C2'
DeleteKey = $true
}
Remove-Item @removeItemSplat
}
Usuwanie wygasłych certyfikatów
To polecenie używa parametru Get-ChildItem
ExpiringInDays polecenia cmdlet z wartością , 0
aby pobrać certyfikaty w WebHosting
magazynie, który wygasł.
Zmienna zawierająca zwrócone certyfikaty jest potokowana do Remove-Item
polecenia cmdlet, które je usuwa. Polecenie używa parametru DeleteKey , aby usunąć klucz prywatny wraz z certyfikatem.
$expired = Get-ChildItem cert:\LocalMachine\WebHosting -ExpiringInDays 0
$expired | Remove-Item -DeleteKey
Tworzenie certyfikatów
Polecenie New-Item
cmdlet nie tworzy nowych certyfikatów u dostawcy certyfikatów . Użyj polecenia cmdlet New-SelfSignedCertificate , aby utworzyć certyfikat na potrzeby testowania.
Tworzenie magazynów certyfikatów
Cert:
Na dysku New-Item
polecenie cmdlet tworzy magazyny certyfikatów w LocalMachine
lokalizacji magazynu. Obsługuje on parametry Name, Path, WhatIf i Confirm . Wszystkie inne parametry są ignorowane. Polecenie zwraca element System.Security.Cryptography.X509Certificates.X509Store , który reprezentuje nowy magazyn certyfikatów.
To polecenie tworzy nowy magazyn certyfikatów o nazwie CustomStore
w LocalMachine
lokalizacji magazynu.
New-Item -Path cert:\LocalMachine\CustomStore
Twórca nowy magazyn certyfikatów na komputerze zdalnym
To polecenie tworzy nowy magazyn certyfikatów o nazwie HostingStore
w LocalMachine
lokalizacji magazynu na komputerze Server01.
Polecenie używa Invoke-Command
polecenia cmdlet do uruchomienia New-Item
polecenia na komputerze Server01. Polecenie zwraca element System.Security.Cryptography.X509Certificates.X509Store , który reprezentuje nowy magazyn certyfikatów.
Invoke-Command -ComputerName Server01 -ScriptBlock {
New-Item -Path cert:\LocalMachine\CustomStore
}
Tworzenie certyfikatów klienta dla WS-Man
To polecenie tworzy wpis ClientCertificate , który może być używany przez klienta WS-Management . Nowy element ClientCertificate jest wyświetlany w katalogu ClientCertificate jako ClientCertificate_1234567890
. Wszystkie parametry są obowiązkowe. Wystawca musi być odciskiem palca certyfikatu wystawcy.
$newItemSplat = @{
Path = 'WSMan:\localhost\ClientCertificate'
Credential = Get-Credential
Issuer = '1b3fd224d66c6413fe20d21e38b304226d192dfe'
URI = 'wmicimv2/*'
}
New-Item @newItemSplat
Usuwanie magazynów certyfikatów
Usuwanie magazynu certyfikatów z komputera zdalnego
To polecenie używa Invoke-Command
polecenia cmdlet do uruchamiania Remove-Item
polecenia na komputerach S1 i S2. Polecenie Remove-Item
zawiera parametr Recurse , który usuwa certyfikaty w magazynie przed usunięciem magazynu.
Invoke-Command -ComputerName S1, S2 -ScriptBlock {
Remove-Item -Path cert:\LocalMachine\TestStore -Recurse
}
Parametry dynamiczne
Parametry dynamiczne to parametry poleceń cmdlet, które są dodawane przez dostawcę programu PowerShell i są dostępne tylko wtedy, gdy polecenie cmdlet jest używane na dysku obsługującym dostawcę. Te parametry są prawidłowe we wszystkich podkatalogach dostawcy certyfikatów , ale obowiązują tylko na certyfikatach.
Uwaga
Parametry, które wykonują filtrowanie względem właściwości EnhancedKeyUsageList , zwracają również elementy z pustą wartością właściwości EnhancedKeyUsageList . Certyfikaty, które mają pusty element EnhancedKeyUsageList , mogą być używane do wszystkich celów.
Następujące parametry dostawcy certyfikatów zostały ponownie wprowadzone w programie PowerShell 7.1.
- Nazwa DNS
- DocumentEncryptionCert
- EKU
- Wygasanie w dniach
- SSLServerAuthentication
CodeSigningCert <System.Management.Automation.SwitchParameter>
Obsługiwane polecenia cmdlet
Ten parametr pobiera certyfikaty, które mają Code Signing
wartość właściwości EnhancedKeyUsageList .
DeleteKey <System.Management.Automation.SwitchParameter>
Obsługiwane polecenia cmdlet
Ten parametr usuwa skojarzony klucz prywatny po usunięciu certyfikatu.
Ważne
Aby usunąć klucz prywatny skojarzony z certyfikatem użytkownika w Cert:\CurrentUser
magazynie na komputerze zdalnym, należy użyć poświadczeń delegowanych. Polecenie Invoke-Command
cmdlet obsługuje delegowanie poświadczeń przy użyciu parametru CredSSP . Przed użyciem funkcji Remove-Item
i delegowania Invoke-Command
poświadczeń należy rozważyć wszelkie zagrożenia bezpieczeństwa.
Ten parametr został przywrócony w programie PowerShell 7.1
DnsName <Microsoft.PowerShell.Commands.DnsNameRepresentation>
Obsługiwane polecenia cmdlet
Ten parametr pobiera certyfikaty, które mają określony wzorzec nazwy domeny lub nazwy we właściwości DNSNameList certyfikatu. Wartość tego parametru może być lub Unicode
ASCII
. Wartości punycode są konwertowane na Unicode. Symbole wieloznaczne (*
) są dozwolone.
Ten parametr został przywrócony w programie PowerShell 7.1
DocumentEncryptionCert <System.Management.Automation.SwitchParameter>
Obsługiwane polecenia cmdlet
Ten parametr pobiera certyfikaty, które mają Document Encryption
wartość właściwości EnhancedKeyUsageList .
EKU <System.String>
Obsługiwane polecenia cmdlet
Ten parametr pobiera certyfikaty, które mają określony wzorzec tekstowy lub tekstowy we właściwości EnhancedKeyUsageList certyfikatu. Symbole wieloznaczne (*
) są dozwolone. Właściwość EnhancedKeyUsageList zawiera przyjazną nazwę i pola OID EKU.
Ten parametr został przywrócony w programie PowerShell 7.1
WygasająceInDays <System.Int32>
Obsługiwane polecenia cmdlet
Ten parametr pobiera certyfikaty wygasające lub przed określoną liczbą dni. Wartość zero (0) pobiera certyfikaty, które wygasły.
Ten parametr został przywrócony w programie PowerShell 7.1
ItemType <System.String>
Ten parametr służy do określania typu elementu utworzonego przez New-Item
program . Polecenie New-Item
cmdlet obsługuje tylko wartość Store
. New-Item
polecenie cmdlet nie może utworzyć nowych certyfikatów.
Obsługiwane polecenia cmdlet
SSLServerAuthentication <System.Management.Automation.SwitchParameter>
Obsługiwane polecenia cmdlet
Pobiera tylko certyfikaty serwera na potrzeby hostingu sieci Web SSL. Ten parametr pobiera certyfikaty, które mają Server Authentication
wartość właściwości EnhancedKeyUsageList .
Ten parametr został przywrócony w programie PowerShell 7.1
Właściwości skryptu
Dodano nowe właściwości skryptu do obiektu x509Certificate2 , który reprezentuje certyfikaty, aby ułatwić wyszukiwanie certyfikatów i zarządzanie nimi.
- DnsNameList: aby wypełnić właściwość DnsNameList , dostawca certyfikatu kopiuje zawartość z wpisu DNSName w rozszerzeniu SubjectAlternativeName (SAN). Jeśli rozszerzenie SIECI SAN jest puste, właściwość jest wypełniana zawartością z pola Podmiot certyfikatu.
- EnhancedKeyUsageList: aby wypełnić właściwość EnhancedKeyUsageList , dostawca certyfikatu kopiuje właściwości OID pola EnhancedKeyUsage (EKU) i tworzy przyjazną nazwę.
- SendAsTrustedIssuer: aby wypełnić właściwość SendAsTrustedIssuer , dostawca certyfikatu kopiuje właściwość SendAsTrustedIssuer z certyfikatu. Aby uzyskać więcej informacji, zobacz Zarządzanie zaufanymi wystawcami na potrzeby uwierzytelniania klienta.
Te nowe funkcje umożliwiają wyszukiwanie certyfikatów na podstawie ich nazw DNS i dat wygaśnięcia oraz rozróżnianie certyfikatów uwierzytelniania klienta i serwera według wartości właściwości rozszerzonego użycia klucza (EKU).
Korzystanie z potoku
Polecenia cmdlet dostawcy akceptują dane wejściowe potoku. Potok umożliwia uproszczenie zadań przez wysyłanie danych dostawcy z jednego polecenia cmdlet do innego polecenia cmdlet dostawcy. Aby dowiedzieć się więcej o sposobie używania potoku z poleceniami cmdlet dostawcy, zobacz odwołania do poleceń cmdlet podane w tym artykule.
Uzyskiwanie pomocy
Począwszy od programu PowerShell 3.0, możesz uzyskać dostosowane tematy pomocy dla poleceń cmdlet dostawcy, które wyjaśniają, jak te polecenia cmdlet zachowują się na dysku systemu plików.
Aby uzyskać tematy pomocy dostosowane dla dysku systemu plików, uruchom polecenie Get-Help na dysku systemu plików lub użyj -Path
parametru , Get-Help
aby określić dysk systemu plików.
Get-Help Get-ChildItem
Get-Help Get-ChildItem -Path cert: