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.
- Get-Location
- Set-Location
- Dapatkan Item
- Get-ChildItem
- Invoke-Item
- Pindahkan Item
- Item Baru
- Hapus Item
- Get-ItemProperty
- Set-ItemProperty
- Clear-ItemProperty
- Get-AuthenticodeSignature
- Set-AuthenticodeSignature
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 danLocalMachine
(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.
Menavigasi drive Sertifikat
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 merekaClient 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: