about_Certificate_Provider

Nama penyedia

Sertifikat

Drive

Cert:

Kemampuan

ShouldProcess

Deskripsi singkat

Menyediakan akses ke penyimpanan sertifikat X.509 dan sertifikat di PowerShell.

Deskripsi terperinci

Informasi ini hanya berlaku untuk PowerShell yang berjalan di Windows.

Penyedia Sertifikat PowerShell memungkinkan Anda mendapatkan, menambahkan, mengubah, menghapus, dan menghapus sertifikat dan penyimpanan sertifikat di PowerShell.

Drive Sertifikat adalah namespace hierarkis yang berisi penyimpanan sertifikat dan sertifikat di komputer Anda.

Penyedia Sertifikat mendukung cmdlet berikut.

Jenis yang diekspos oleh penyedia ini

Drive Sertifikat mengekspos jenis berikut.

  • Microsoft.PowerShell.Commands.X509StoreLocation, yang merupakan kontainer tingkat tinggi yang mengelompokkan sertifikat untuk pengguna saat ini dan untuk semua pengguna. Setiap sistem memiliki CurrentUser lokasi penyimpanan dan LocalMachine (semua pengguna).
  • System.Security.Cryptography.X509Certificates.X509Store, yang merupakan penyimpanan fisik tempat sertifikat disimpan dan dikelola.
  • System.Security.Cryptography.X509Certificates.X509Certificate2, masing-masing mewakili sertifikat X.509 di komputer. Sertifikat diidentifikasi oleh thumbprint mereka.

Penyedia Sertifikat mengekspos namespace sertifikat sebagai Cert: drive di PowerShell. Perintah ini menggunakan Set-Location perintah untuk mengubah lokasi saat ini ke penyimpanan Root sertifikat di lokasi penyimpanan LocalMachine . Gunakan garis miring terbelakang (\) atau garis miring (/) untuk menunjukkan tingkat Cert: drive.

Set-Location Cert:

Anda juga dapat bekerja dengan penyedia sertifikat dari drive PowerShell lainnya. Untuk mereferensikan alias dari lokasi lain, gunakan Cert: nama drive di jalur.

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

Untuk kembali ke drive sistem file, ketik nama drive. Misalnya, ketik:

Set-Location C:

Catatan

PowerShell menggunakan alias untuk memungkinkan Anda cara yang familier untuk bekerja dengan jalur penyedia. Perintah seperti dir dan ls sekarang menjadi alias untuk Get-ChildItem, cd adalah alias untuk Set-Location, dan pwd merupakan alias untuk Get-Location.

Menampilkan Konten Cert: drive

Perintah ini menggunakan Get-ChildItem cmdlet untuk menampilkan penyimpanan sertifikat di lokasi penyimpanan CurrentUser sertifikat.

Jika Anda tidak berada di Cert: drive, gunakan jalur absolut.

PS Cert:\CurrentUser\> Get-ChildItem

Menampilkan properti sertifikat dalam drive Cert:

Contoh ini mendapatkan sertifikat dengan Get-Item dan menyimpannya dalam variabel. Contoh menunjukkan properti skrip sertifikat baru (DnsNameList, EnhancedKeyUsageList, SendAsTrustedIssuer) menggunakan 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

Menemukan semua sertifikat CodeSigning

Perintah ini menggunakan parameter CodeSigningCert dan Recurse cmdlet Get-ChildItem untuk mendapatkan semua sertifikat di komputer yang memiliki otoritas penandatanganan kode.

Get-ChildItem -Path cert: -CodeSigningCert -Recurse

Menemukan sertifikat yang kedaluwarsa

Perintah ini menggunakan parameter ExpiringInDays cmdlet Get-ChildItem untuk mendapatkan sertifikat yang kedaluwarsa dalam 30 hari ke depan.

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

Menemukan Sertifikat SSL Server

Perintah ini menggunakan parameter SSLServerAuthentication cmdlet Get-ChildItem untuk mendapatkan semua Sertifikat SSL Server di My penyimpanan dan WebHosting .

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

Menemukan sertifikat yang kedaluwarsa pada komputer jarak jauh

Perintah ini menggunakan Invoke-Command cmdlet untuk menjalankan Get-ChildItem perintah pada komputer Srv01 dan Srv02. Nilai nol (0) dalam parameter ExpiringInDays mendapatkan sertifikat pada komputer Srv01 dan Srv02 yang telah kedaluwarsa.

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

Menggabungkan filter untuk menemukan sekumpulan sertifikat tertentu

Perintah ini mendapatkan semua sertifikat di LocalMachine lokasi penyimpanan yang memiliki atribut berikut:

  • fabrikam dalam nama DNS mereka
  • Client Authentication di EKU mereka
  • nilai $true untuk properti SendAsTrustedIssuer
  • tidak kedaluwarsa dalam 30 hari ke depan.

Properti NotAfter menyimpan tanggal kedaluwarsa sertifikat.

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

Membuka Snap-in MMC Sertifikat

Invoke-Item Cmdlet menggunakan aplikasi default untuk membuka jalur yang Anda tentukan. Untuk sertifikat, aplikasi defaultnya adalah snap-in MMC Sertifikat.

Perintah ini membuka snap-in MMC Sertifikat untuk mengelola sertifikat yang ditentukan.

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

Menyalin Sertifikat

Menyalin sertifikat tidak didukung oleh penyedia Sertifikat . Ketika Anda mencoba menyalin sertifikat, Anda akan melihat kesalahan ini.

$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

Memindahkan Sertifikat

Memindahkan semua sertifikasi autentikasi SSL Server ke penyimpanan WebHosting

Perintah ini menggunakan Move-Item cmdlet untuk memindahkan sertifikat dari penyimpanan My ke penyimpanan WebHosting .

Move-Item tidak dapat memindahkan penyimpanan sertifikat dan tidak dapat memindahkan sertifikat ke lokasi penyimpanan yang berbeda, seperti memindahkan sertifikat dari LocalMachine ke CurrentUser. Move-Item Cmdlet dapat memindahkan sertifikat dalam penyimpanan, tetapi tidak memindahkan kunci privat.

Perintah ini menggunakan parameter SSLServerAuthentication cmdlet Get-ChildItem untuk mendapatkan sertifikat autentikasi server SSL di penyimpanan My sertifikat.

Sertifikat yang dikembalikan disalurkan ke Move-Item cmdlet, yang memindahkan sertifikat ke penyimpanan WebHosting .

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

Menghapus Sertifikat dan Kunci Privat

Remove-Item Cmdlet menghapus sertifikat yang Anda tentukan. Parameter dinamis DeleteKey menghapus kunci privat.

Menghapus Sertifikat dari penyimpanan CA

Perintah ini menghapus sertifikat dari penyimpanan sertifikat CA, tetapi membiarkan kunci privat terkait tetap utuh.

Cert: Di drive, Remove-Item cmdlet hanya mendukung parameter DeleteKey, Path, WhatIf, dan Confirm. Semua parameter lainnya diabaikan.

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

Menghapus Sertifikat menggunakan kartubebas dalam nama DNS

Perintah ini menghapus semua sertifikat yang memiliki nama DNS yang berisi Fabrikam. Ini menggunakan parameter DNSName cmdlet Get-ChildItem untuk mendapatkan sertifikat dan Remove-Item cmdlet untuk menghapusnya.

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

Menghapus kunci privat dari komputer jarak jauh

Rangkaian perintah ini memungkinkan delegasi lalu menghapus sertifikat dan kunci privat terkait pada komputer jarak jauh. Untuk menghapus kunci privat pada komputer jarak jauh, Anda harus menggunakan kredensial yang didelegasikan.

Enable-WSManCredSSP Gunakan cmdlet untuk mengaktifkan autentikasi Penyedia Layanan Keamanan Kredensial (CredSSP) pada klien di komputer jarak jauh S1. CredSSP mengizinkan autentikasi yang didelegasikan.

Enable-WSManCredSSP -Role Client -DelegateComputer S1

Connect-WSMan Gunakan cmdlet untuk menyambungkan komputer S1 ke layanan WinRM di komputer lokal. Ketika perintah ini selesai, komputer S1 muncul di drive lokal WSMan: di PowerShell.

Connect-WSMan -ComputerName S1 -Credential Domain01\Admin01

Sekarang, Anda dapat menggunakan Set-Item cmdlet di WSMan: drive untuk mengaktifkan atribut CredSSP untuk layanan WinRM.

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

Mulai sesi jarak jauh di komputer S1 menggunakan New-PSSession cmdlet, dan tentukan autentikasi CredSSP. Menyimpan sesi dalam $s variabel.

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

Terakhir, gunakan Invoke-Command cmdlet untuk menjalankan Remove-Item perintah dalam sesi dalam $s variabel. Perintah Remove-Item menggunakan parameter DeleteKey untuk menghapus kunci privat bersama dengan sertifikat yang ditentukan.

Invoke-Command -Session $s {
    $removeItemSplat = @{
        Path = 'cert:\LocalMachine\My\D2D38EBA60CAA1C12055A2E1C83B15AD450110C2'
        DeleteKey = $true
    }
    Remove-Item @removeItemSplat
}

Menghapus Sertifikat yang kedaluwarsa

Perintah ini menggunakan parameter ExpiringInDays cmdlet Get-ChildItem dengan nilai 0 untuk mendapatkan sertifikat di penyimpanan yang telah kedaluwarsaWebHosting.

Variabel yang berisi sertifikat yang dikembalikan disalurkan ke Remove-Item cmdlet, yang menghapusnya. Perintah menggunakan parameter DeleteKey untuk menghapus kunci privat bersama dengan sertifikat.

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

Membuat Sertifikat

New-Item Cmdlet tidak membuat sertifikat baru di penyedia Sertifikat. Gunakan cmdlet New-SelfSignedCertificate untuk membuat sertifikat untuk tujuan pengujian.

Membuat Penyimpanan Sertifikat

Cert: Di drive, New-Item cmdlet membuat penyimpanan sertifikat di LocalMachine lokasi penyimpanan. Ini mendukung parameter Nama, Jalur, WhatIf, dan Konfirmasi . Semua parameter lainnya diabaikan. Perintah mengembalikan System.Security.Cryptography.X509Certificates.X509Store yang mewakili penyimpanan sertifikat baru.

Perintah ini membuat penyimpanan sertifikat baru bernama CustomStore di LocalMachine lokasi penyimpanan.

New-Item -Path cert:\LocalMachine\CustomStore

Membuat penyimpanan sertifikat baru di komputer jarak jauh

Perintah ini membuat penyimpanan sertifikat baru bernama HostingStore di LocalMachine lokasi penyimpanan pada komputer Server01.

Perintah menggunakan Invoke-Command cmdlet untuk menjalankan New-Item perintah di komputer Server01. Perintah mengembalikan System.Security.Cryptography.X509Certificates.X509Store yang mewakili penyimpanan sertifikat baru.

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

Membuat Sertifikat Klien untuk WS-Man

Perintah ini membuat entri ClientCertificate yang dapat digunakan oleh klien WS-Management . ClientCertificate baru muncul di bawah direktori ClientCertificate sebagai ClientCertificate_1234567890 . Semua parameter bersifat wajib. Penerbit perlu menjadi thumbprint sertifikat penerbit.

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

Menghapus Penyimpanan Sertifikat

Menghapus penyimpanan sertifikat dari komputer jarak jauh

Perintah ini menggunakan Invoke-Command cmdlet untuk menjalankan Remove-Item perintah pada komputer S1 dan S2. Perintah Remove-Item ini mencakup parameter Recurse , yang menghapus sertifikat di penyimpanan sebelum menghapus penyimpanan.

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

Parameter dinamis

Parameter dinamis adalah parameter cmdlet yang ditambahkan oleh penyedia PowerShell dan hanya tersedia ketika cmdlet digunakan dalam drive yang diaktifkan penyedia. Parameter ini valid di semua subdirektori penyedia Sertifikat , tetapi hanya efektif pada sertifikat.

Catatan

Parameter yang melakukan pemfilteran terhadap properti EnhancedKeyUsageList juga mengembalikan item dengan nilai properti EnhancedKeyUsageList kosong. Sertifikat yang memiliki EnhancedKeyUsageList kosong dapat digunakan untuk semua tujuan.

Parameter penyedia Sertifikat berikut diperkenalkan kembali di PowerShell 7.1.

  • DNSName
  • DocumentEncryptionCert
  • EKU
  • ExpiringInDays
  • SSLServerAuthentication

CodeSigningCert <System.Management.Automation.SwitchParameter>

Cmdlet yang didukung

Parameter ini mendapatkan sertifikat yang memiliki Code Signing nilai properti EnhancedKeyUsageList.

DeleteKey <System.Management.Automation.SwitchParameter>

Cmdlet yang didukung

Parameter ini menghapus kunci privat terkait saat menghapus sertifikat.

Penting

Untuk menghapus kunci privat yang terkait dengan sertifikat pengguna di Cert:\CurrentUser penyimpanan di komputer jarak jauh, Anda harus menggunakan kredensial yang didelegasikan. Invoke-Command Cmdlet mendukung delegasi kredensial menggunakan parameter CredSSP. Anda harus mempertimbangkan risiko keamanan apa pun sebelum menggunakan Remove-Item dengan Invoke-Command dan delegasi kredensial.

Parameter ini diperkenalkan kembali di PowerShell 7.1

DnsName <Microsoft.PowerShell.Commands.DnsNameRepresentation>

Cmdlet yang didukung

Parameter ini mendapatkan sertifikat yang memiliki nama domain atau pola nama yang ditentukan di properti DNSNameList sertifikat. Nilai parameter ini dapat berupa Unicode atau ASCII. Nilai punycode dikonversi ke Unicode. Karakter kartubebas (*) diizinkan.

Parameter ini diperkenalkan kembali di PowerShell 7.1

DocumentEncryptionCert <System.Management.Automation.SwitchParameter>

Cmdlet yang didukung

Parameter ini mendapatkan sertifikat yang memiliki Document Encryption nilai properti EnhancedKeyUsageList.

EKU <System.String>

Cmdlet yang didukung

Parameter ini mendapatkan sertifikat yang memiliki pola teks atau teks yang ditentukan di properti EnhancedKeyUsageList sertifikat. Karakter kartubebas (*) diizinkan. Properti EnhancedKeyUsageList berisi nama yang mudah diingat dan bidang OID EKU.

Parameter ini diperkenalkan kembali di PowerShell 7.1

ExpiringInDays <System.Int32>

Cmdlet yang didukung

Parameter ini mendapatkan sertifikat yang kedaluwarsa di atau sebelum jumlah hari yang ditentukan. Nilai nol (0) mendapatkan sertifikat yang telah kedaluwarsa.

Parameter ini diperkenalkan kembali di PowerShell 7.1

ItemType <System.String>

Parameter ini digunakan untuk menentukan jenis item yang dibuat oleh New-Item. New-Item Cmdlet hanya mendukung nilai Store. New-Item cmdlet tidak dapat membuat sertifikat baru.

Cmdlet didukung

SSLServerAuthentication <System.Management.Automation.SwitchParameter>

Cmdlet yang didukung

Hanya mendapatkan sertifikat server untuk hosting web SSL. Parameter ini mendapatkan sertifikat yang memiliki Server Authentication nilai properti EnhancedKeyUsageList.

Parameter ini diperkenalkan kembali di PowerShell 7.1

Properti skrip

Properti skrip baru telah ditambahkan ke objek x509Certificate2 yang mewakili sertifikat untuk memudahkan pencarian dan pengelolaan sertifikat.

  • DnsNameList: Untuk mengisi properti DnsNameList , penyedia Sertifikat menyalin konten dari entri DNSName di ekstensi SubjectAlternativeName (SAN). Jika ekstensi SAN kosong, properti diisi dengan konten dari bidang Subjek sertifikat.
  • EnhancedKeyUsageList: Untuk mengisi properti EnhancedKeyUsageList , penyedia Sertifikat menyalin properti OID dari bidang EnhancedKeyUsage (EKU) di sertifikat dan membuat nama yang mudah diingat untuknya.
  • SendAsTrustedIssuer: Untuk mengisi properti SendAsTrustedIssuer , penyedia Sertifikat menyalin properti SendAsTrustedIssuer dari sertifikat. Untuk informasi selengkapnya, lihat Manajemen penerbit tepercaya untuk autentikasi klien.

Fitur baru ini memungkinkan Anda mencari sertifikat berdasarkan nama DNS dan tanggal kedaluwarsanya, dan membedakan sertifikat autentikasi klien dan server dengan nilai properti Enhanced Key Usage (EKU) mereka.

Menggunakan alur

Cmdlet penyedia menerima input alur. Anda dapat menggunakan alur untuk menyederhanakan tugas dengan mengirim data penyedia dari satu cmdlet ke cmdlet penyedia lain. Untuk membaca selengkapnya tentang cara menggunakan alur dengan cmdlet penyedia, lihat referensi cmdlet yang disediakan di seluruh artikel ini.

Mendapatkan bantuan

Dimulai di PowerShell 3.0, Anda bisa mendapatkan topik bantuan yang disesuaikan untuk cmdlet penyedia yang menjelaskan bagaimana cmdlet tersebut bereaksi dalam drive sistem file.

Untuk mendapatkan topik bantuan yang disesuaikan untuk drive sistem file, jalankan perintah Get-Help di drive sistem file atau gunakan -Path parameter Get-Help untuk menentukan drive sistem file.

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

Baca juga