Sertifika Sağlayıcısı

Sağlayıcı adı

Sertifika

Sürücüler

Cert:

Özellikler

ShouldProcess

Kısa açıklama

PowerShell'deki X.509 sertifika depolarına ve sertifikalara erişim sağlar.

Ayrıntılı açıklama

PowerShell Sertifika sağlayıcısı, PowerShell'deki 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ı, bu makalede ele alınan 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ı ve tüm kullanıcılar için sertifikaları gruplandıran üst düzey kapsayıcılar olan konumları (Microsoft.PowerShell.Commands.X509StoreLocation) depolayın. 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 sertifika depoları (System.Security.Cryptography.X509Certificates.X509Store).

  • X.509 System.Security.Cryptography.X509Certificates.X509Certificate2 sertifikaları, her biri 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 LocalMachine deposu konumundaki Kök sertifika deposu olarak 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 bir PowerShell sürücüsünden de çalışabilirsiniz. Başka bir konumdaki diğer adlara 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 ls gibi dir komutlar artık Get-ChildItem için diğer adlardır, cdSet-Location için bir diğer addır. ve pwdGet-Location için bir diğer addır.

Cert: sürücüsünün İçeriğini Görüntüleme

Bu komut, Get-ChildItem sertifika depolarını CurrentUser sertifika deposu konumunda görüntülemek için cmdlet'ini kullanır.

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 kullanılarak 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 CodeSigningCert ve Recurse parametrelerini Get-ChildItem kullanır.

Get-ChildItem -Path cert: -CodeSigningCert -Recurse

Süresi dolan sertifikaları bulma

Bu komut, sonraki 30 gün içinde süresi dolacak sertifikaları almak için cmdlet'in ExpireingInDays parametresini Get-ChildItem kullanır.

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

Sunucu SSL Sertifikalarını Bulma

Bu komut, My ve WebHosting depolarındaki tüm Sunucu SSL Sertifikalarını almak için cmdlet'in SSLServerAuthentication parametresini Get-ChildItem kullanır.

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

Uzak bilgisayarlarda süresi dolan sertifikaları bulma

Bu komut, Srv01 ve Srv02 bilgisayarlarda bir Get-ChildItem komut çalıştırmak için cmdlet'ini kullanırInvoke-Command. ExpireingInDays parametresindeki sıfır (0) değeri, süresi dolan Srv01 ve Srv02 bilgisayarlarındaki sertifikaları alır.

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

Belirli bir sertifika kümesini bulmak için filtreleri birleştirme

Bu komut, LocalMachine depolama konumunda aşağıdaki özniteliklere sahip tüm sertifikaları alır:

  • DNS adlarında "fabrikam"
  • EKU'larında "İstemci Kimlik Doğrulaması"
  • SendAsTrustedIssuer özelliği için değeri $true
  • süresi sonraki 30 gün içinde dolmaz.

NotAfter özelliği sertifika son kullanma tarihini depolar.

[DateTime] $ValidThrough = (Get-Date) + (New-TimeSpan -Days 30)
Get-ChildItem -Path cert:\* -Recurse -DNSName "*fabrikam*" `
  -EKU "*Client Authentication*" | Where-Object {
                                     $_.SendAsTrustedIssuer -and `
                                     $_.NotAfter -gt $ValidThrough
                                   }

Sertifikalar MMC Ek Bileşenini Açma

Cmdlet, Invoke-Item belirttiğiniz 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 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

Sertifikaları Taşıma

Tüm SSL Sunucusu kimlik doğrulama sertifikalarını WebHosting deposuna taşıma

Bu komut, cmdlet'ini Move-Item kullanarak my store'dan WebHosting deposuna bir sertifika taşır.

Move-Item sertifika depolarını taşımaz ve sertifikaları LocalMachine'den CurrentUser'a taşıma gibi farklı bir depolama konumuna taşımaz. Move-Item Cmdlet sertifikaları taşır, ancak özel anahtarları taşımaz.

Bu komut, MY sertifika deposunda SSL sunucusu kimlik doğrulama sertifikalarını almak için cmdlet'in Get-ChildItemSSLServerAuthentication parametresini kullanır.

Döndürülen sertifikalar, sertifikaları WebHosting deposuna Move-Item taşıyan cmdlet'ine gönderilir.

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

Sertifikaları ve Özel Anahtarları Silme

Cmdlet Remove-Item , belirttiğiniz sertifikaları kaldırır. -DeleteKey Dinamik parametre ö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, "Fabrikam" içeren dns adına sahip tüm sertifikaları siler. Sertifikaları almak için cmdlet'in Get-ChildItemDNSName 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 bir ö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 temsilcili 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

Artık WSMan: sürücüsündeki Set-Item cmdlet'ini kullanarak WinRM hizmeti için CredSSP özniteliğini etkinleştirebilirsiniz.

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 { Remove-Item `
  -Path cert:\LocalMachine\My\D2D38EBA60CAA1C12055A2E1C83B15AD450110C2 `
  -DeleteKey
  }

Süresi dolan Sertifikaları sil

Bu komut, süresi dolmuş WebHosting deposundaki sertifikaları almak için cmdlet'in 0 değerine sahip ExpiringInDays parametresini Get-ChildItem kullanır.

Döndürülen sertifikaları içeren değişken cmdlet'ine Remove-Item gönderilir 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-ItemSertifika 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

Cert: sürücüsünde New-Item , cmdlet LocalMachine depolama konumunda sertifika depoları 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, LocalMachine deposu konumunda "CustomStore" adlı 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 deposu konumunda "HostingStore" adlı 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 { New-Item -Path cert:\LocalMachine\CustomStore } `
  -ComputerName Server01

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 "ClientCertificate_1234567890" olarak gösterilir. Tüm parametreler zorunlu. Verenin, verenler sertifikasının parmak izi olması gerekir.

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

Sertifika Depolarını Silme

Uzak bilgisayardan sertifika depolarını silme

Bu komut, S1 ve S2 bilgisayarlarda bir Remove-Item komut çalıştırmak için cmdlet'ini kullanırInvoke-Command. Komut, Remove-Item depoyu silmeden önce depodaki sertifikaları silen Recurse parametresini içerir.

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

Dinamik parametreler

Dinamik parametreler, bir PowerShell sağlayıcısı tarafından eklenen cmdlet parametreleridir ve yalnızca cmdlet sağlayıcının etkin olduğu 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 sertifikalarda etkilidir.

Not

özelliğine göre EnhancedKeyUsageList filtreleme gerçekleştiren parametreler de boş EnhancedKeyUsageList özellik değerine sahip öğeler 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 6.0'da kaldırıldı.

  • DNSName
  • DocumentEncryptionCert
  • EKU
  • Süre SonuInDays
  • SSLServerAuthentication

CodeSigningCert <System.Management.Automation.SwitchParameter>

Desteklenen cmdlet'ler

Bu parametre , EnhancedKeyUsageList özellik değerinde "Kod İmzalama" olan sertifikaları 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-CommandCredSSP parametresini kullanarak kimlik bilgisi temsilcisi seçmeyi destekler. ve kimlik bilgisi temsilcisini Invoke-Command kullanmadan Remove-Item önce güvenlik risklerini göz önünde bulundurmalısınız.

Bu parametre Windows PowerShell 3.0'da kullanıma sunulmuştur.

ItemType <Dizesi>

Bu parametre, tarafından New-Itemoluşturulan öğenin türünü belirtmenize olanak tanır.

Bir Certificate sürücüde aşağıdaki değerlere izin verilir:

  • Sertifika Sağlayıcısı
  • Sertifika
  • Depolama
  • Storelocation

Desteklenen Cmdlet'ler

Betik özellikleri

Sertifikaları aramayı ve yönetmeyi kolaylaştırmak için sertifikaları temsil eden x509Certificate2 nesnesine yeni betik özellikleri eklendi.

  • DnsNameList: Sertifika sağlayıcısı, özelliği doldurmak DnsNameList için 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: Sertifika sağlayıcısı özelliği doldurmak EnhancedKeyUsageList için sertifikadaki EnhancedKeyUsage (EKU) alanının OID özelliklerini kopyalar ve bunun için kolay bir ad oluşturur.

  • SendAsTrustedIssuer: Özelliği doldurmak SendAsTrustedIssuer için Sertifika sağlayıcısı özelliği sertifikadan kopyalar SendAsTrustedIssuer . Daha fazla bilgi için bkz. İstemci kimlik doğrulaması için güvenilen verenlerin yönetimi.

Bu yeni özellikler, DNS adlarına ve son kullanma tarihlerine göre sertifikaları 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örevi 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

Windows PowerShell 3.0 sürümünden 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.

about_Providers

about_Signing

Get-AuthenticodeSignature

Set-AuthenticodeSignature

Get-PfxCertificate