Udostępnij przez


Dostawca certyfikatów

Nazwa dostawcy

Certyfikat

Napędy

Cert:

Możliwości

PowinienPrzetworzyć

Krótki opis

Zapewnia dostęp do magazynów certyfikatów X.509 i certyfikatów w programie PowerShell.

Szczegółowy opis

Dostawca certyfikatów programu PowerShell umożliwia uzyskiwanie, dodawanie, zmienianie, czyszczenie i usuwanie certyfikatów oraz magazynów certyfikatów w programie PowerShell.

Dysk certyfikatów to hierarchiczna przestrzeń nazw zawierająca magazyny certyfikatów i certyfikaty na komputerze.

Dostawca certyfikatów obsługuje następujące polecenia cmdlet omówione w tym artykule.

Typy udostępnione przez tego dostawcę

Dysk certyfikatu uwidacznia następujące typy.

  • Lokalizacje magazynów (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ę magazynu CurrentUser i LocalMachine (wszyscy użytkownicy).

  • Magazyny certyfikatów (System.Security.Cryptography.X509Certificates.X509Store), które są magazynami fizycznymi, w których certyfikaty są zapisywane i zarządzane.

  • X.509 System.Security.Cryptography.X509Certificates.X509Certificate2 certyfikaty, z których każdy reprezentuje certyfikat X.509 na komputerze. Certyfikaty są identyfikowane przez ich odciski palca.

Dostawca certyfikatów uwidacznia przestrzeń nazw certyfikatów jako dysk Cert: w programie PowerShell. To polecenie używa polecenia Set-Location w celu zmiany bieżącej lokalizacji na główny magazyn certyfikatów w lokalizacji magazynu LocalMachine. Użyj ukośnika odwrotnego (\) lub ukośnika przewijającego 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 nazwy dysku Cert: 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 / Notatka

Program PowerShell używa aliasów, aby umożliwić ci znany sposób pracy ze ścieżkami dostawcy usług. Polecenia, takie jak dir i ls, są teraz aliasami dla Get-ChildItem, podczas gdy cd jest aliasem dla Set-Location. i pwd jest aliasem dla Get-Location.

Wyświetlanie zawartości dysku Cert:

Nowe parametry dynamiczne, DnsName, EKU, SSLServerAuthenticationi ExpiringInDays zostały dodane do Get-ChildItem polecenia cmdlet na Cert: dysku. Nowe parametry dynamiczne są dostępne w Windows PowerShell 3.0 i nowszych wersjach programu PowerShell. Parametry dostawcy współpracują z usługami IIS 8.0 w systemie Windows Server 2012 i nowszych.

To polecenie używa Get-ChildItem polecenia cmdlet do wyświetlania magazynów certyfikatów w lokalizacji magazynu certyfikatów CurrentUser.

Jeśli nie jesteś w napędzie Cert: , użyj ścieżki bezwzględnej.

PS Cert:\CurrentUser\> Get-ChildItem

Wyświetlanie właściwości certyfikatu w ramach dysku Cert:

Ten przykład pobiera certyfikat z Get-Item i przechowuje go w zmiennej. W przykładzie przedstawiono nowe właściwości skryptu certyfikatu (DnsNameList, EnhancedKeyUsageList, SendAsTrustedIssuer) przy użyciu 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 CodeSigningCert i Get-ChildItem polecenia cmdlet w celu pobrania wszystkich certyfikatów na komputerze, które mają uprawnienia do podpisywania kodu.

Get-ChildItem -Path cert: -CodeSigningCert -Recurse

Znajdowanie wygasłych certyfikatów

To polecenie używa parametru Get-ChildItem polecenia cmdlet w celu uzyskania certyfikatów, które wygasną 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 SSLServerAuthentication polecenia Get-ChildItem cmdlet w celu uzyskania wszystkich certyfikatów SSL serwera w sklepach My i WebHosting.

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

Znajdowanie wygasłych certyfikatów na komputerach zdalnych

To polecenie używa polecenia cmdlet Invoke-Command do uruchomienia polecenia Get-ChildItem na komputerach Srv01 i Srv02. Wartość zero (0) w parametrze ExpiringInDays powoduje pobranie certyfikatów na komputerach Srv01 i Srv02, które wygasły.

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

Łączenie filtrów w celu znalezienia określonego zestawu certyfikatów

To polecenie pobiera wszystkie certyfikaty w lokalizacji magazynu LocalMachine, które mają następujące atrybuty:

  • "fabrikam" w nazwie DNS
  • "Uwierzytelnianie klienta" w ich EKU
  • wartość $true dla właściwości SendAsTrustedIssuer
  • Nie wygasają w ciągu najbliższych 30 dni.

Właściwość NotAfter przechowuje datę wygaśnięcia certyfikatu.

Get-ChildItem -Path cert:\* -Recurse -DNSName "*fabrikam*" `
  -EKU "*Client Authentication*" | Where-Object {
                                     $_.SendAsTrustedIssuer -and `
                                     $_.NotAfter -gt (get-date).AddDays.(30)
                                   }

Otwieranie przystawki MMC certyfikatów

Polecenie Invoke-Item cmdlet użyje domyślnej aplikacji do otwarcia 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 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

Przenoszenie certyfikatów

Przenoszenie wszystkich certyfikatów uwierzytelniania serwera SSL do magazynu WebHosting

To polecenie używa Move-Item polecenia cmdlet do przeniesienia certyfikatu z obszaru Mój sklep do sklepu WebHosting.

Move-Item nie przeniesie magazynów certyfikatów i nie przeniesie certyfikatów do innej lokalizacji magazynu, na przykład przenosząc certyfikat z LocalMachine do CurrentUser. Polecenie Move-Item cmdlet przenosi certyfikaty, ale nie przenosi kluczy prywatnych.

To polecenie używa parametru SSLServerAuthentication polecenia Get-ChildItem cmdlet w celu uzyskania certyfikatów uwierzytelniania serwera SSL w magazynie certyfikatów MY.

Zwrócone certyfikaty są przesyłane do Move-Item polecenia cmdlet, które przenosi certyfikaty do sklepu WebHosting.

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

Usuwanie certyfikatów i kluczy prywatnych

Polecenie Remove-Item cmdlet usunie określone certyfikaty. Parametr -DeleteKey dynamic 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.

Na dysku Cert: polecenie cmdlet Remove-Item obsługuje tylko parametry DeleteKey, Path, WhatIfi Potwierdź parametry. 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órych nazwa DNS zawiera ciąg "Fabrikam". Używa parametru DNSName polecenia cmdlet Get-ChildItem, aby pobrać certyfikaty i polecenie cmdlet Remove-Item, aby je usunąć.

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.

Użyj polecenia cmdlet Enable-WSManCredSSP, 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

Użyj polecenia cmdlet Connect-WSMan, aby połączyć komputer S1 z usługą WinRM na komputerze lokalnym. Po zakończeniu tego polecenia komputer S1 pojawi się na lokalnym dysku WSMan: w programie PowerShell.

Connect-WSMan -ComputerName S1 -Credential Domain01\Admin01

Teraz możesz użyć polecenia cmdlet Set-Item na dysku WSMan:, 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 polecenia cmdlet Invoke-Command, aby uruchomić polecenie Remove-Item w sesji w zmiennej $s. Polecenie Remove-Item używa parametru DeleteKey w celu usunięcia klucza prywatnego wraz z określonym certyfikatem.

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

Usuwanie wygasłych certyfikatów

To polecenie używa parametru Get-ChildItem polecenia cmdlet o wartości 0 w celu pobrania certyfikatów w sklepie WebHosting, które wygasły.

Zmienna zawierająca zwrócone certyfikaty jest potokowa do polecenia cmdlet Remove-Item, 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 w dostawcy certyfikatów . Użyj polecenia cmdlet New-SelfSignedCertificate, aby utworzyć certyfikat na potrzeby testowania.

Tworzenie magazynów certyfikatów

Na dysku Cert: polecenie New-Item cmdlet tworzy magazyny certyfikatów w lokalizacji magazynu LocalMachine. Obsługuje on nazwa, path, WhatIfi Potwierdzić parametry. Wszystkie inne parametry są ignorowane. Polecenie zwraca System.Security.Cryptography.X509Certificates.X509Store reprezentujące nowy magazyn certyfikatów.

To polecenie tworzy nowy magazyn certyfikatów o nazwie "CustomStore" w lokalizacji magazynu LocalMachine.

New-Item -Path cert:\LocalMachine\CustomStore

Tworzenie nowego magazynu certyfikatów na komputerze zdalnym

To polecenie tworzy nowy magazyn certyfikatów o nazwie "HostingStore" w lokalizacji magazynu LocalMachine na komputerze Server01.

Polecenie używa polecenia cmdlet Invoke-Command do uruchomienia polecenia New-Item na komputerze Server01. Polecenie zwraca System.Security.Cryptography.X509Certificates.X509Store reprezentujące nowy magazyn certyfikatów.

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

Tworzenie certyfikatów klienta dla WS-Man

To polecenie tworzy wpis ClientCertificate, który może być używany przez klienta WS-Management. Nowy ClientCertificate zostanie wyświetlony w katalogu ClientCertificate jako "ClientCertificate_1234567890". Wszystkie parametry są obowiązkowe. Wystawca musi być odciskiem palca certyfikatu wystawców.

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

Usuwanie magazynów certyfikatów

Usuwanie magazynu certyfikatów z komputera zdalnego

To polecenie używa polecenia cmdlet Invoke-Command do uruchomienia 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 { Remove-Item -Path cert:\LocalMachine\TestStore -Recurse } `
  -ComputerName S1, S2

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 w przypadku certyfikatów.

Uwaga / Notatka

Parametry, które wykonują filtrowanie względem właściwości, EnhancedKeyUsageList zwracają również elementy z pustą EnhancedKeyUsageList wartością właściwości. Certyfikaty z pustym EnhancedKeyUsageList mogą być używane we wszystkich celach.

ItemType <ciąg>

Ten parametr pozwala określić typ elementu utworzonego przez New-Item.

Na dysku Certificate dozwolone są następujące wartości:

  • Dostawca certyfikatów
  • Certyfikat
  • Store
  • Lokalizacja sklepu

Obsługiwane polecenia cmdlet

CodeSigningCert <System.Management.Automation.SwitchParameter>

Obsługiwane cmdlety

Ten parametr pobiera certyfikaty, które mają wartość "Code Signing" w wartości właściwości EnhancedKeyUsageList .

DnsName <Microsoft.PowerShell.Commands.DnsNameRepresentation>

Obsługiwane cmdlety

Ten parametr pobiera certyfikaty z określoną nazwą domeny lub wzorcem nazwy w DNSNameList właściwości certyfikatu. Wartość tego parametru może być "Unicode" lub "ASCII". Wartości punycode są konwertowane na Unicode. Symbole wieloznaczne (*) są dozwolone.

Ten parametr został wprowadzony w programie Windows PowerShell 3.0.

<EKU System.String>

Obsługiwane cmdlety

Ten parametr pobiera certyfikaty, które mają określony tekst lub wzorzec tekstu we EnhancedKeyUsageList właściwości certyfikatu. Symbole wieloznaczne (*) są dozwolone. Właściwość EnhancedKeyUsageList zawiera przyjazną nazwę i pola OID modułu EKU.

Ten parametr został wprowadzony w programie Windows PowerShell 3.0.

WygasająceInDays <System.Int32>

Obsługiwane cmdlety

Ten parametr pobiera certyfikaty wygasające lub przed określoną liczbą dni. Wartość 0 (zero) powoduje pobranie certyfikatów, które wygasły.

Ten parametr został wprowadzony w programie Windows PowerShell 3.0.

SSLServerAuthentication <System.Management.Automation.SwitchParameter>

Obsługiwane cmdlety

Pobiera tylko certyfikaty serwera na potrzeby hostingu sieci Web SSL. Ten parametr pobiera certyfikaty, które mają wartość właściwości "Server Authentication" ( EnhancedKeyUsageList Uwierzytelnianie serwera).

Ten parametr został wprowadzony w programie Windows PowerShell 3.0.

DeleteKey <System.Management.Automation.SwitchParameter>

Obsługiwane cmdlety

Ten parametr usuwa skojarzony klucz prywatny po usunięciu certyfikatu.

Ważne

Aby usunąć klucz prywatny skojarzony z certyfikatem użytkownika w magazynie Cert:\CurrentUser na komputerze zdalnym, należy użyć delegowanych poświadczeń. Polecenie cmdlet Invoke-Command obsługuje delegowanie poświadczeń przy użyciu parametru CredSSP. Przed użyciem Remove-Item z delegowaniem Invoke-Command i poświadczeń należy rozważyć wszelkie zagrożenia bezpieczeństwa.

Ten parametr został wprowadzony w programie Windows PowerShell 3.0.

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ć DnsNameList właściwość, 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ć EnhancedKeyUsageList właściwość, dostawca certyfikatu kopiuje właściwości OID pola EnhancedKeyUsage (EKU) w certyfikacie i tworzy dla niego przyjazną nazwę.

  • SendAsTrustedIssuer: Aby wypełnić SendAsTrustedIssuer właściwość, dostawca certyfikatu kopiuje SendAsTrustedIssuer właściwość 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 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 rurociągu

Polecenia cmdlet dostawcy akceptują dane wejściowe potoku. Potok przetwarzania umożliwia uproszczenie zadania poprzez przesyłanie danych dostawcy z jednego polecenia cmdlet do innego polecenia cmdlet tego samego dostawcy. Aby dowiedzieć się więcej na temat używania potoku z dostarczonymi przez dostawcę poleceniami cmdlet, zobacz odniesienia do poleceń cmdlet podanych w tym artykule.

Uzyskiwanie pomocy

Począwszy od Windows PowerShell 3.0, możesz otrzymać dostosowane tematy pomocy dla cmdletów dostawcy, które wyjaśniają, jak te cmdlety 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 parametru -PathGet-Help, aby określić dysk systemu plików.

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

Zobacz także

o_Dostawcach

o_Podpisywaniu

Get-AuthenticodeSignature

Set-AuthenticodeSignature

get-PfxCertificate