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.

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 ve LocalMachine (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 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 RootLocalMachine 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-Objectyeni 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-ChildItemMy 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ında
  • Client 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 CurrentUsertaşı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 Fabrikambir 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 0WebHosting 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ı CustomStoreLocalMachine 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_1234567890gö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 ASCIIolabilirUnicode. 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-Itemoluşturulan öğenin türünü belirtmek için kullanılır. New-Item Cmdlet yalnızca değerini Storedestekler. 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.