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
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.
Sertifikayı depolamak için yerel bilgisayar veya geçerli kullanıcı klasörünü açın.
Güvenilen Kök Sertifika Yetkilileri klasörünü açın.
Sertifikalar klasörüne sağ tıklayın ve Tüm Görevler'e ve ardından İçeri Aktar'a tıklayın.
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
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>
İ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.