about_Certificate_Provider
Sağlayıcı adı
Sertifika
Sürücüler
Cert:
Özellikler
ShouldProcess
Kısa açıklama
PowerShell'de X.509 sertifika depolarına ve sertifikalarına erişim sağlar.
Ayrıntılı açıklama
Bu bilgiler yalnızca Windows üzerinde çalışan PowerShell için geçerlidir.
PowerShell Sertifika sağlayıcısı, PowerShell'de sertifikaları ve sertifika depolarını almanıza, eklemenize, değiştirmenize, temizlemenize ve silmenize olanak tanır.
Sertifika sürücüsü, bilgisayarınızdaki sertifika depolarını ve sertifikaları içeren hiyerarşik bir ad alanıdır.
Sertifika sağlayıcısı aşağıdaki cmdlet'leri destekler.
- Get-Location
- Konum Ayarla
- Öğe Al
- Get-ChildItem
- ÖğeYi Çağır
- ÖğeYi Taşı
- Yeni Öğe
- Öğeyi Kaldır
- Get-ItemProperty
- Set-ItemProperty
- Clear-ItemProperty
- Get-AuthenticodeSignature
- Set-AuthenticodeSignature
Bu sağlayıcı tarafından kullanıma sunulan türler
Sertifika sürücüsü aşağıdaki türleri kullanıma sunar.
- Geçerli kullanıcının ve tüm kullanıcıların sertifikalarını gruplandıran üst düzey kapsayıcılar olan Microsoft.PowerShell.Commands.X509StoreLocation. Her sistemin bir
CurrentUser
veLocalMachine
(tüm kullanıcılar) depolama konumu vardır. - Sertifikaların kaydedildiği ve yönetildiği fiziksel depolar olan System.Security.Cryptography.X509Certificates.X509Store.
- System.Security.Cryptography.X509Certificates.X509Certificate2, her birinin bilgisayardaki bir X.509 sertifikasını temsil eder. Sertifikalar parmak izleriyle tanımlanır.
Sertifika sürücüsünde gezinme
Sertifika sağlayıcısı, sertifika ad alanını PowerShell'de sürücü olarak Cert:
kullanıma sunar. Bu komut, Set-Location
geçerli konumu depo konumundaki sertifika deposuyla Root
LocalMachine
değiştirmek için komutunu kullanır. Sürücünün düzeyini Cert:
belirtmek için ters eğik çizgi (\
) veya eğik çizgi (/
) kullanın.
Set-Location Cert:
Sertifika sağlayıcısıyla başka herhangi bir PowerShell sürücüsünden de çalışabilirsiniz. Başka bir konumdan bir diğer ada başvurmak için yoldaki Cert:
sürücü adını kullanın.
PS Cert:\> Set-Location -Path LocalMachine\Root
Bir dosya sistemi sürücüsüne dönmek için sürücü adını yazın. Örneğin, şunu yazın:
Set-Location C:
Not
PowerShell, sağlayıcı yollarıyla çalışmak için tanıdık bir yol sağlamak için diğer adları kullanır. ve gibi dir
komutlar artık Get-ChildItem için diğer addır, cd
Set-Location için bir diğer addır ve pwd
Get-Location için bir diğer addırls
.
Sertifika: sürücüsünün İçeriğini Görüntüleme
Bu komut, sertifika depolarını sertifika deposu konumunda görüntülemek için cmdlet'ini CurrentUser
kullanırGet-ChildItem
.
Sürücüde Cert:
değilseniz mutlak bir yol kullanın.
PS Cert:\CurrentUser\> Get-ChildItem
Sertifika özellikleri Cert: sürücüsünde görüntüleniyor
Bu örnek ile Get-Item
bir sertifika alır ve bunu bir değişkende depolar.
Örnekte, kullanarak Select-Object
yeni sertifika betiği özellikleri (DnsNameList, EnhancedKeyUsageList, SendAsTrustedIssuer) gösterilmektedir.
$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
Tüm CodeSigning sertifikalarını bulma
Bu komut, kod imzalama yetkilisine sahip bilgisayardaki tüm sertifikaları almak için cmdlet'in Get-ChildItem
CodeSigningCert ve Recurse parametrelerini kullanır.
Get-ChildItem -Path cert: -CodeSigningCert -Recurse
Süresi dolan sertifikaları bulma
Bu komut, sonraki 30 gün içinde süresi dolan sertifikaları almak için cmdlet'in ExpiringInDays parametresini Get-ChildItem
kullanır.
Get-ChildItem -Path cert:\LocalMachine\WebHosting -ExpiringInDays 30
Sunucu SSL Sertifikalarını Bul
Bu komut, ve WebHosting
depolarındaki tüm Sunucu SSL Sertifikalarını almak için cmdlet'in SSLServerAuthentication parametresini Get-ChildItem
My
kullanır.
$getChildItemSplat = @{
Path = 'cert:\LocalMachine\My', 'cert:\LocalMachine\WebHosting'
SSLServerAuthentication = $true
}
Get-ChildItem @getChildItemSplat
Uzak bilgisayarlarda süresi dolan sertifikaları bulma
Bu komut, cmdlet'ini Invoke-Command
kullanarak Srv01 ve Srv02 bilgisayarlarında bir Get-ChildItem
komut çalıştırır. ExpiringInDays parametresindeki sıfır (0
) değeri, süresi dolan Srv01 ve Srv02 bilgisayarlarındaki sertifikaları alır.
$invokeCommandSplat = @{
ComputerName = 'Srv01', 'Srv02'
ScriptBlock = {
Get-ChildItem -Path cert:\* -Recurse -ExpiringInDays 0
}
}
Invoke-Command @invokeCommandSplat
Belirli bir sertifika kümesini bulmak için filtreleri birleştirme
Bu komut, aşağıdaki özniteliklere LocalMachine
sahip depo konumundaki tüm sertifikaları alır:
fabrikam
dns adlarındaClient Authentication
EKU'larında- SendAsTrustedIssuer özelliği için değeri
$true
- süresi sonraki 30 gün içinde dolmaz.
NotAfter özelliği sertifikanın son kullanma tarihini depolar.
[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 }
Sertifikalar MMC Ek Bileşenini Açma
Cmdlet, Invoke-Item
belirttiğiniz bir yolu açmak için varsayılan uygulamayı kullanır. Sertifikalar için, varsayılan uygulama Sertifikalar MMC ek bileşenidir.
Bu komut, belirtilen sertifikayı yönetmek için Sertifikalar MMC ek bileşenini açar.
Invoke-Item cert:\CurrentUser\my\6B8223358119BB08840DEE50FD8AF9EA776CE66B
Sertifikaları Kopyalama
Sertifika kopyalama, Sertifika sağlayıcısı tarafından desteklenmez. Bir sertifikayı kopyalamaya çalıştığınızda bu hatayı görürsünüz.
$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
Sertifikaları Taşıma
Tüm SSL Sunucusu kimlik doğrulama sertifikalarını WebHosting deposuna taşıma
Bu komut, bir sertifikayı Move-Item
depodan My
depoya taşımak için cmdlet'ini WebHosting
kullanır.
Move-Item
sertifika depolarını taşıyamaz ve sertifikayı uygulamasından LocalMachine
konumuna taşıma gibi farklı bir depolama konumuna CurrentUser
taşıyamaz. Move-Item
Cmdlet bir depo içindeki sertifikaları taşıyabilir, ancak özel anahtarları taşımaz.
Bu komut, sertifika deposunda SSL sunucusu kimlik doğrulama sertifikalarını almak için cmdlet'in Get-ChildItem
SSLServerAuthentication parametresini My
kullanır.
Döndürülen sertifikalar cmdlet'ine Move-Item
taşınır ve bu da sertifikaları depoya WebHosting
taşır.
Get-ChildItem cert:\LocalMachine\My -SSLServerAuthentication |
Move-Item -Destination cert:\LocalMachine\WebHosting
Sertifikaları ve Özel Anahtarları Silme
cmdlet'i Remove-Item
belirttiğiniz sertifikaları siler. DeleteKey dinamik parametresi özel anahtarı siler.
CA deposundan sertifika silme
Bu komut CA sertifika deposundan bir sertifikayı siler, ancak ilişkili özel anahtarı olduğu gibi bırakır.
Sürücüde Cert:
Remove-Item
, cmdlet yalnızca DeleteKey, Path, WhatIf ve Confirm parametrelerini destekler. Diğer tüm parametreler yoksayılır.
Remove-Item cert:\LocalMachine\CA\5DDC44652E62BF9AA1116DC41DE44AB47C87BDD0
DNS adında joker karakterler kullanarak Sertifika silme
Bu komut, içeren Fabrikam
bir DNS adına sahip tüm sertifikaları siler. Sertifikaları almak için cmdlet'in Get-ChildItem
DNSName parametresini ve Remove-Item
bunları silmek için cmdlet'ini kullanır.
Get-ChildItem -Path cert:\LocalMachine -DnsName *Fabrikam* | Remove-Item
Uzak bilgisayardan özel anahtarları silme
Bu komut dizisi temsilci seçmeyi etkinleştirir ve ardından uzak bilgisayardaki sertifikayı ve ilişkili özel anahtarı siler. Uzak bilgisayardaki özel anahtarı silmek için temsilci kimlik bilgilerini kullanmanız gerekir.
Enable-WSManCredSSP
S1 uzak bilgisayardaki bir istemcide Kimlik Bilgisi Güvenlik Hizmeti Sağlayıcısı (CredSSP) kimlik doğrulamasını etkinleştirmek için cmdlet'ini kullanın.
CredSSP temsilci kimlik doğrulamasına izin verir.
Enable-WSManCredSSP -Role Client -DelegateComputer S1
S1 bilgisayarını Connect-WSMan
yerel bilgisayardaki WinRM hizmetine bağlamak için cmdlet'ini kullanın. Bu komut tamamlandığında, S1 bilgisayarı PowerShell'deki yerel WSMan:
sürücüde görünür.
Connect-WSMan -ComputerName S1 -Credential Domain01\Admin01
Şimdi, WinRM hizmeti için CredSSP özniteliğini etkinleştirmek için sürücüdeki cmdlet'ini WSMan:
kullanabilirsinizSet-Item
.
Set-Item -Path WSMan:\S1\Service\Auth\CredSSP -Value $true
cmdlet'ini kullanarak S1 bilgisayarında bir uzak oturum başlatın ve CredSSP kimlik doğrulamasını New-PSSession
belirtin. Oturumu değişkene $s
kaydeder.
$s = New-PSSession S1 -Authentication CredSSP -Credential Domain01\Admin01
Son olarak, değişkenindeki Invoke-Command
oturumda bir Remove-Item
komut çalıştırmak için cmdlet'ini $s
kullanın. Komut, Remove-Item
belirtilen sertifikayla birlikte özel anahtarı kaldırmak için DeleteKey parametresini kullanır.
Invoke-Command -Session $s {
$removeItemSplat = @{
Path = 'cert:\LocalMachine\My\D2D38EBA60CAA1C12055A2E1C83B15AD450110C2'
DeleteKey = $true
}
Remove-Item @removeItemSplat
}
Süresi dolan Sertifikaları sil
Bu komut, süresi dolan depodaki sertifikaları almak için cmdlet'in 0
WebHosting
ExpiringInDays parametresini Get-ChildItem
değeriyle kullanır.
Döndürülen sertifikaları içeren değişken cmdlet'ine Remove-Item
aktarılır ve bu da bunları siler. komut, sertifikayla birlikte özel anahtarı silmek için DeleteKey parametresini kullanır.
$expired = Get-ChildItem cert:\LocalMachine\WebHosting -ExpiringInDays 0
$expired | Remove-Item -DeleteKey
Sertifika Oluşturma
Cmdlet, New-Item
Sertifika sağlayıcısında yeni sertifikalar oluşturmaz. Test amacıyla bir sertifika oluşturmak için New-SelfSignedCertificate cmdlet'ini kullanın.
Sertifika Depoları Oluşturma
Sürücüde Cert:
New-Item
, cmdlet depolama konumunda sertifika depoları LocalMachine
oluşturur. Name, Path, WhatIf ve Confirm parametrelerini destekler. Diğer tüm parametreler yoksayılır. Komut, yeni sertifika deposunu temsil eden bir System.Security.Cryptography.X509Certificates.X509Store döndürür.
Bu komut, depo konumunda adlı CustomStore
LocalMachine
yeni bir sertifika deposu oluşturur.
New-Item -Path cert:\LocalMachine\CustomStore
Uzak bilgisayarda yeni bir sertifika deposu oluşturma
Bu komut, Server01 bilgisayarındaki LocalMachine
depo konumunda adlı HostingStore
yeni bir sertifika deposu oluşturur.
komutu, Server01 bilgisayarında bir New-Item
komut çalıştırmak için cmdlet'ini kullanırInvoke-Command
. Komut, yeni sertifika deposunu temsil eden bir System.Security.Cryptography.X509Certificates.X509Store döndürür.
Invoke-Command -ComputerName Server01 -ScriptBlock {
New-Item -Path cert:\LocalMachine\CustomStore
}
WS-Man için İstemci Sertifikaları Oluşturma
Bu komut, WS-Management istemcisi tarafından kullanılabilecek ClientCertificate girdisi oluşturur. Yeni ClientCertificate, ClientCertificate dizini altında olarak ClientCertificate_1234567890
gösterilir. Tüm parametreler zorunlu. Verenin sertifikanın parmak izi olması gerekir.
$newItemSplat = @{
Path = 'WSMan:\localhost\ClientCertificate'
Credential = Get-Credential
Issuer = '1b3fd224d66c6413fe20d21e38b304226d192dfe'
URI = 'wmicimv2/*'
}
New-Item @newItemSplat
Sertifika Depolarını Silme
Uzak bilgisayardan sertifika depolarını silme
Bu komut, S1 ve S2 bilgisayarlarında bir Remove-Item
komut çalıştırmak için cmdlet'ini kullanırInvoke-Command
. Komutu, Remove-Item
depoyu silmeden önce depodaki sertifikaları silen Recurse parametresini içerir.
Invoke-Command -ComputerName S1, S2 -ScriptBlock {
Remove-Item -Path cert:\LocalMachine\TestStore -Recurse
}
Dinamik parametreler
Dinamik parametreler, bir PowerShell sağlayıcısı tarafından eklenen cmdlet parametreleridir ve yalnızca cmdlet sağlayıcı etkin sürücüde kullanıldığında kullanılabilir. Bu parametreler Sertifika sağlayıcısının tüm alt dizinlerinde geçerlidir, ancak yalnızca sertifikalar üzerinde etkilidir.
Not
EnhancedKeyUsageList özelliğine göre filtreleme gerçekleştiren parametreler, boş bir EnhancedKeyUsageList özellik değerine sahip öğeleri de döndürür. Boş bir EnhancedKeyUsageList içeren sertifikalar tüm amaçlar için kullanılabilir.
Aşağıdaki Sertifika sağlayıcısı parametreleri PowerShell 7.1'de yeniden tanıtıldı.
- DNSName
- DocumentEncryptionCert
- EKU
- ExpiringInDays
- SSLServerAuthentication
CodeSigningCert <System.Management.Automation.SwitchParameter>
Desteklenen cmdlet'ler
Bu parametre, EnhancedKeyUsageList özellik değerindeki sertifikaları Code Signing
alır.
DeleteKey <System.Management.Automation.SwitchParameter>
Desteklenen cmdlet'ler
Bu parametre sertifikayı sildiğinde ilişkili özel anahtarı siler.
Önemli
Uzak bilgisayardaki depodaki Cert:\CurrentUser
bir kullanıcı sertifikasıyla ilişkili özel anahtarı silmek için temsilci kimlik bilgilerini kullanmanız gerekir. Cmdlet, Invoke-Command
CredSSP parametresini kullanarak kimlik bilgisi temsilcisi seçmeyi destekler. ve kimlik bilgisi temsilcisini kullanmadan Remove-Item
önce tüm güvenlik risklerini Invoke-Command
dikkate almanız gerekir.
Bu parametre PowerShell 7.1'de yeniden tanıtıldı
DnsName <Microsoft.PowerShell.Commands.DnsNameRepresentation>
Desteklenen cmdlet'ler
Bu parametre, sertifikanın DNSNameList özelliğinde belirtilen etki alanı adına veya ad düzenine sahip sertifikaları alır. Bu parametrenin değeri veya ASCII
olabilirUnicode
. Punycode değerleri Unicode'a dönüştürülür. Joker karakterlere (*
) izin verilir.
Bu parametre PowerShell 7.1'de yeniden tanıtıldı
DocumentEncryptionCert <System.Management.Automation.SwitchParameter>
Desteklenen cmdlet'ler
Bu parametre, EnhancedKeyUsageList özellik değerindeki sertifikaları Document Encryption
alır.
EKU <System.String>
Desteklenen cmdlet'ler
Bu parametre, sertifikanın EnhancedKeyUsageList özelliğinde belirtilen metin veya metin desenini içeren sertifikaları alır. Joker karakterlere (*
) izin verilir. EnhancedKeyUsageList özelliği, EKU'nun kolay adını ve OID alanlarını içerir.
Bu parametre PowerShell 7.1'de yeniden tanıtıldı
ExpiringInDays <System.Int32>
Desteklenen cmdlet'ler
Bu parametre, belirtilen gün sayısı içinde veya öncesinde süresi dolan sertifikaları alır. Sıfır (0) değeri süresi dolmuş sertifikaları alır.
Bu parametre PowerShell 7.1'de yeniden tanıtıldı
ItemType <System.String>
Bu parametre tarafından New-Item
oluşturulan öğenin türünü belirtmek için kullanılır. New-Item
Cmdlet yalnızca değerini Store
destekler. New-Item
cmdlet yeni sertifika oluşturamıyor.
Desteklenen Cmdlet'ler
SSLServerAuthentication <System.Management.Automation.SwitchParameter>
Desteklenen cmdlet'ler
Yalnızca SSL web barındırma için sunucu sertifikalarını alır. Bu parametre, EnhancedKeyUsageList özellik değerindeki sertifikaları Server Authentication
alır.
Bu parametre PowerShell 7.1'de yeniden tanıtıldı
Betik özellikleri
Sertifikaları aramayı ve yönetmeyi kolaylaştırmak için sertifikaları temsil eden x509Certificate2 nesnesine yeni betik özellikleri eklendi.
- DnsNameList: DnsNameList özelliğini doldurmak için Sertifika sağlayıcısı içeriği SubjectAlternativeName (SAN) uzantısındaki DNSName girdisinden kopyalar. SAN uzantısı boşsa, özelliği sertifikanın Konu alanındaki içerikle doldurulur.
- EnhancedKeyUsageList: EnhancedKeyUsageList özelliğini doldurmak için, Sertifika sağlayıcısı sertifikadaki EnhancedKeyUsage (EKU) alanının OID özelliklerini kopyalar ve bunun için kolay bir ad oluşturur.
- SendAsTrustedIssuer: SendAsTrustedIssuer özelliğini doldurmak için, Sertifika sağlayıcısı SendAsTrustedIssuer özelliğini sertifikadan kopyalar. Daha fazla bilgi için bkz. İstemci kimlik doğrulaması için güvenilen verenlerin yönetimi.
Bu yeni özellikler, SERTIFIKALARı DNS adlarına ve son kullanma tarihlerine göre aramanıza ve istemci ve sunucu kimlik doğrulama sertifikalarını Gelişmiş Anahtar Kullanımı (EKU) özelliklerine göre ayırt etmenizi sağlar.
İşlem hattını kullanma
Sağlayıcı cmdlet'leri işlem hattı girişini kabul eder. Bir cmdlet'ten başka bir sağlayıcı cmdlet'ine sağlayıcı verileri göndererek görevleri basitleştirmek için işlem hattını kullanabilirsiniz. İşlem hattını sağlayıcı cmdlet'leriyle kullanma hakkında daha fazla bilgi edinmek için bu makalenin tamamında sağlanan cmdlet başvurularına bakın.
Yardım alma
PowerShell 3.0'dan başlayarak, bu cmdlet'lerin bir dosya sistemi sürücüsünde nasıl davrandığını açıklayan sağlayıcı cmdlet'leri için özelleştirilmiş yardım konuları alabilirsiniz.
Dosya sistemi sürücüsü için özelleştirilmiş yardım konularını almak için, bir dosya sistemi sürücüsünde Get-Help komutunu çalıştırın veya parametresini Get-Help
kullanarak -Path
bir dosya sistemi sürücüsü belirtin.
Get-Help Get-ChildItem
Get-Help Get-ChildItem -Path cert:
Ayrıca bkz.
PowerShell