Aracılığıyla paylaş


Nasıl yapılır: Geliştirme Sırasında Kullanmak için Geçici Sertifikalar Oluşturma

Windows Communication Foundation (WCF) kullanarak güvenli bir hizmet veya istemci geliştirirken, genellikle kimlik bilgisi olarak kullanılacak bir X.509 sertifikası sağlamak gerekir. Sertifika genellikle bilgisayarın Güvenilen Kök Sertifika Yetkilileri deposunda bulunan kök yetkiliye sahip bir sertifika zincirinin parçasıdır. Sertifika zincirine sahip olmak, genellikle kök yetkilinin kuruluşunuzdan veya iş biriminizden geldiği bir sertifika kümesinin kapsamını belirlemenizi sağlar. Geliştirme zamanında buna öykünmek için güvenlik gereksinimlerini karşılamak için iki sertifika oluşturabilirsiniz. Birincisi, Güvenilen Kök Sertifika Yetkilileri deposuna yerleştirilen otomatik olarak imzalanan bir sertifikadır ve ikinci sertifika ilk sertifikadan oluşturulur ve Yerel Makine konumunun Kişisel deposuna veya Geçerli Kullanıcı konumunun Kişisel deposuna yerleştirilir. Bu konuda, PowerShell New-SelfSignedCertificate) cmdlet'ini kullanarak bu iki sertifikayı oluşturma adımları açıklanmaktadır.

Önemli

New-SelfSignedCertificate cmdlet'inin oluşturduğu sertifikalar yalnızca test amacıyla sağlanır. Bir hizmeti veya istemciyi dağıtırken, bir sertifika yetkilisi tarafından sağlanan uygun bir sertifikayı kullandığınızdan emin olun. Bu, kuruluşunuzdaki bir Windows Server sertifika sunucusundan veya üçüncü bir tarafa ait olabilir.

Varsayılan olarak, New-SelfSignedCertificate cmdlet'i otomatik olarak imzalanan sertifikalar oluşturur ve bu sertifikalar güvenli değildir. Otomatik olarak imzalanan sertifikaları Güvenilen Kök Sertifika Yetkilileri deposuna yerleştirmek, dağıtım ortamınızın simülasyonunu daha yakından sağlayan bir geliştirme ortamı oluşturmanıza olanak tanır.

Sertifika oluşturma ve kullanma hakkında daha fazla bilgi için bkz . Sertifikalarla Çalışma. Kimlik bilgisi olarak sertifika kullanma hakkında daha fazla bilgi için bkz . Hizmetleri ve İstemcileri Güvenli Hale Getirme. Microsoft Authenticode teknolojisini kullanma hakkında bir öğretici için bkz . Authenticode'a Genel Bakışlar ve Öğreticiler.

Otomatik olarak imzalanan kök yetkili sertifikası oluşturmak ve özel anahtarı dışarı aktarmak için

Aşağıdaki komut, Geçerli Kullanıcı Kişisel deposunda konu adı "RootCA" olan otomatik olarak imzalanan bir sertifika oluşturur.

$rootCert = New-SelfSignedCertificate -CertStoreLocation Cert:\CurrentUser\My -DnsName "RootCA" -TextExtension @("2.5.29.19={text}CA=true") -KeyUsage CertSign,CrlSign,DigitalSignature

Sonraki bir adımda gerekli olduğu yere içeri aktarılabilmesi için sertifikayı bir PFX dosyasına aktarmamız gerekir. Özel anahtarla bir sertifika dışarı aktarılırken, sertifikayı korumak için bir parola gerekir. Parolayı bir SecureString dosyasına kaydedip Export-PfxCertificate cmdlet'ini kullanarak sertifikayı ilişkili özel anahtarla bir PFX dosyasına aktarıyoruz. Ayrıca, Dışarı Aktarma-Sertifika cmdlet'ini kullanarak yalnızca genel sertifikayı bir CRT dosyasına kaydederiz.

[System.Security.SecureString]$rootCertPassword = ConvertTo-SecureString -String "password" -Force -AsPlainText
[String]$rootCertPath = Join-Path -Path 'cert:\CurrentUser\My\' -ChildPath "$($rootCert.Thumbprint)"
Export-PfxCertificate -Cert $rootCertPath -FilePath 'RootCA.pfx' -Password $rootCertPassword
Export-Certificate -Cert $rootCertPath -FilePath 'RootCA.crt'

Kök yetkili sertifikası tarafından imzalanan yeni bir sertifika oluşturmak için

Aşağıdaki komut, verenin RootCA özel anahtarını kullanarak konu adı "SignedByRootCA" olan ile imzalanan bir sertifika oluşturur.

$testCert = New-SelfSignedCertificate -CertStoreLocation Cert:\LocalMachine\My -DnsName "SignedByRootCA" -KeyExportPolicy Exportable -KeyLength 2048 -KeyUsage DigitalSignature,KeyEncipherment -Signer $rootCert

Benzer şekilde, özel anahtarla imzalanan sertifikayı bir PFX dosyasına ve yalnızca ortak anahtarı bir CRT dosyasına kaydederiz.

[String]$testCertPath = Join-Path -Path 'cert:\LocalMachine\My\' -ChildPath "$($testCert.Thumbprint)"
Export-PfxCertificate -Cert $testCertPath -FilePath testcert.pfx -Password $rootCertPassword
Export-Certificate -Cert $testCertPath -FilePath testcert.crt

Güvenilen Kök Sertifika Yetkilileri Deposuna Sertifika Yükleme

Otomatik olarak imzalanan bir sertifika oluşturulduktan sonra, bunu Güvenilen Kök Sertifika Yetkilileri deposuna yükleyebilirsiniz. Bu noktada sertifikayla imzalanan tüm sertifikalara bilgisayar tarafından güvenilir. Bu nedenle, artık ihtiyacınız kalmadıkça sertifikayı depodan silin. Bu kök yetkili sertifikayı sildiğinizde, sertifikayla imzalanan diğer tüm sertifikalar yetkisiz hale gelir. Kök yetkili sertifikaları, bir grup sertifikanın gerektiği şekilde kapsamına alınabildiği bir mekanizmadır. Örneğin, eşler arası uygulamalarda genellikle bir kişinin kimliğine sağlanan sertifikasıyla güvendiğiniz için kök yetkiliye gerek yoktur.

Güvenilen Kök Sertifika Yetkilileri'ne otomatik olarak imzalanan bir sertifika yüklemek için

  1. Sertifika ek bileşenini açın. Daha fazla bilgi için bkz . Nasıl yapılır: MMC Ek Bileşeni ile Sertifikaları Görüntüleme.

  2. Sertifikayı depolamak için yerel bilgisayar veya geçerli kullanıcı klasörünü açın.

  3. Güvenilen Kök Sertifika Yetkilileri klasörünü açın.

  4. Sertifikalar klasörüne sağ tıklayın ve Tüm Görevler'e ve ardından İçeri Aktar'a tıklayın.

  5. RootCA.pfx dosyasını depoya aktarmak için ekrandaki sihirbaz yönergelerini izleyin.

WCF ile sertifikaları kullanma

Geçici sertifikaları ayarladıktan sonra, bunları kullanarak sertifikaları istemci kimlik bilgisi türü olarak belirten WCF çözümleri geliştirebilirsiniz. Örneğin, aşağıdaki XML yapılandırması, istemci kimlik bilgisi türü olarak ileti güvenliğini ve sertifikayı belirtir.

İstemci kimlik bilgisi türü olarak bir sertifika belirtmek için

  1. Bir hizmetin yapılandırma dosyasında, güvenlik modunu ileti olarak ve istemci kimlik bilgisi türünü sertifika olarak ayarlamak için aşağıdaki XML'yi kullanın.

    <bindings>
      <wsHttpBinding>
        <binding name="CertificateForClient">
          <security>
            <message clientCredentialType="Certificate" />
          </security>
        </binding>
      </wsHttpBinding>
    </bindings>
    
  2. İstemcinin yapılandırma dosyasında, sertifikanın kullanıcının deposunda bulunduğunu ve SubjectName alanında "CohoWinery" değeri aranarak bulunabileceğini belirtmek için aşağıdaki XML'yi kullanın.

    <behaviors>
      <endpointBehaviors>
        <behavior name="CertForClient">
          <clientCredentials>
            <clientCertificate findValue="CohoWinery" x509FindType="FindBySubjectName" />
          </clientCredentials>
        </behavior>
      </endpointBehaviors>
    </behaviors>
    

WCF'de sertifikaları kullanma hakkında daha fazla bilgi için bkz . Sertifikalarla Çalışma.

.NET Framework güvenliği

Sertifikaya sağ tıklayıp Sil'e tıklayarak Güvenilen Kök Sertifika Yetkilileri ve Kişisel klasörlerinden geçici kök yetkili sertifikalarını sildiğinizden emin olun.

Ayrıca bkz.