Aracılığıyla paylaş


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ı, 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 depo konumları (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 sertifika depoları (System.Security.Cryptography.X509Certificates.X509Store).
  • Her biri bilgisayardaki bir X.509 sertifikasını temsil eden X.509 System.Security.Cryptography.X509Certificates.X509Certificate2 sertifikaları. Sertifikalar parmak izleriyle tanımlanır.

Sertifika sağlayıcısı, PowerShell'de sürücü olarak Cert: sertifika ad alanını 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 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

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 size 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ı sertifika deposu konumunda görüntülemek için cmdlet'ini CurrentUser 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österilir.

$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 ExpiringInDays parametresini Get-ChildItem kullanır.

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

Sunucu SSL Sertifikalarını Bulma

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

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

Uzak bilgisayarlarda süresi dolan sertifikaları bulma

Bu komut, Srv01 ve Srv02 bilgisayarlarında bir Get-ChildItem komut çalıştırmak için cmdlet'ini kullanırInvoke-Command. ExpiringInDays 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, depo konumunda aşağıdaki özniteliklere LocalMachine sahip 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 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, bir sertifikayı Move-Item depodan My depoya taşımak için cmdlet'ini WebHosting kullanır.

Move-Item sertifika depolarını taşımaz ve sertifikayı uygulamasından LocalMachine konumuna taşıma gibi farklı bir depolama konumuna CurrentUsertaşımaz. Move-Item Cmdlet sertifikaları taşır, ancak özel anahtarları taşımaz.

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

Döndürülen sertifikalar cmdlet'ine Move-Item gönderilir 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

Remove-Item Cmdlet belirttiğiniz sertifikaları kaldırır. 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-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 özel anahtarı silmek için temsilci kimlik bilgilerini kullanmanız gerekir.

S1 uzak bilgisayardaki bir istemcide Enable-WSManCredSSP 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

Connect-WSMan S1 bilgisayarı 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 üzere 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 { Remove-Item `
  -Path cert:\LocalMachine\My\D2D38EBA60CAA1C12055A2E1C83B15AD450110C2 `
  -DeleteKey
  }

Süresi dolan Sertifikaları sil

Bu komut, süresi dolan depodaki sertifikaları almak için cmdlet'in WebHostingExpiringInDays parametresini Get-ChildItem değeriyle 0 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

Sürücüde Cert: , New-Item cmdlet depo 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 İçerik Oluşturucu

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 { 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 olarak ClientCertificate_1234567890gösterilir. Tüm parametreler zorunlu. Verenin, verenin 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

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
  • Süre SonuInDays
  • SSLServerAuthentication

CodeSigningCert <System.Management.Automation.SwitchParameter>

Desteklenen cmdlet'ler

Bu parametre, EnhancedKeyUsageList özellik değerinde bulunan Code Signing 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 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ğerinde bulunan Document Encryption sertifikaları 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ı

Süre SonuInDays <System.Int32>

Desteklenen cmdlet'ler

Bu parametre, belirtilen sayıda gün 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ü belirtmenize olanak tanır.

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

  • Certificate Provider
  • Certificate
  • Store
  • StoreLocation

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ğerinde bulunan Server Authentication sertifikaları 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'da 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.