Aracılığıyla paylaş


Nasıl yapılır: X.509 Sertifikalarını WCF için Erişilebilir Hale Getirme

Bir X.509 sertifikasının Windows Communication Foundation (WCF) tarafından erişilebilir olmasını sağlamak için, uygulama kodunun sertifika deposunun adını ve konumunu belirtmesi gerekir. Bazı durumlarda, işlem kimliğinin X.509 sertifikasıyla ilişkili özel anahtarı içeren dosyaya erişimi olmalıdır. Bir sertifika deposundaki X.509 sertifikasıyla ilişkili özel anahtarı almak için WCF'nin bunu yapma izni olmalıdır. Varsayılan olarak, sertifikanın özel anahtarına yalnızca sahip ve Sistem hesabı erişebilir.

X.509 sertifikalarını WCF için erişilebilir hale getirmek için

  1. WCF'nin altında çalıştığı hesaba X.509 sertifikasıyla ilişkili özel anahtarı içeren dosyaya okuma erişimi verin.

    1. WCF'nin X.509 sertifikası için özel anahtara okuma erişimi gerekip gerekmediğini belirleyin.

      Aşağıdaki tabloda, X.509 sertifikası kullanılırken bir özel anahtarın kullanılabilir olması gerekip gerekmediği açıklandı.

      X.509 sertifika kullanımı Özel anahtar
      Giden SOAP iletisini dijital olarak imzalama. Yes
      Gelen SOAP iletisinin imzasını doğrulama. Hayır
      Giden SOAP iletisini şifreleme. Hayır
      Gelen SOAP iletisinin şifresini çözme. Yes
    2. Sertifikanın depolandığı sertifika deposu konumunu ve adını belirleyin.

      Sertifikanın depolandığı sertifika deposu, uygulama kodunda veya yapılandırmada belirtilir. Örneğin, aşağıdaki örnek sertifikanın adlı Mysertifika deposunda bulunduğunu CurrentUser belirtir.

      cc.ClientCredentials.ClientCertificate.SetCertificate(
          StoreLocation.CurrentUser,
          StoreName.My,
          X509FindType.FindBySubjectName,
          "contoso.com");
      
      cc.ClientCredentials.ClientCertificate.SetCertificate(StoreLocation.CurrentUser, StoreName.My, X509FindType.FindBySubjectName, "contoso.com")
      
    3. FindPrivateKey aracını kullanarak sertifikanın özel anahtarının bilgisayarda nerede bulunduğunu belirleyin.

      FindPrivateKey aracı sertifika deposu adı, sertifika deposu konumu ve sertifikayı benzersiz olarak tanımlayan bir şey gerektirir. Araç sertifikanın konu adını veya parmak izini benzersiz bir tanımlayıcı olarak kabul eder. Sertifikanın parmak izini belirleme hakkında daha fazla bilgi için bkz . Nasıl yapılır: Sertifikanın Parmak İzini Alma.

      Aşağıdaki kod örneği, içindeki bir CurrentUser sertifikanın My özel anahtarının konumunu parmak iziyle 46 dd 0e 7a ed 0b 7a 31 9b 02 a3 a0 43 7a d8 3f 60 40 92 9dbelirlemek için FindPrivateKey aracını kullanır.

      findprivatekey.exe My CurrentUser -t "46 dd 0e 7a ed 0b 7a 31 9b 02 a3 a0 43 7a d8 3f 60 40 92 9d" -a  
      
    4. WCF'nin altında çalıştığı hesabı belirleyin.

      Aşağıdaki tabloda, belirli bir senaryo için WCF'nin çalıştığı hesap ayrıntılı olarak verilmiştir.

      Senaryo İşlem kimliği
      İstemci (konsol veya WinForms uygulaması). Şu anda oturum açmış olan kullanıcı.
      Şirket içinde barındırılan hizmet. Şu anda oturum açmış olan kullanıcı.
      IIS 6.0 (Windows Server 2003) veya IIS 7.0 'da (Windows Vista) barındırılan hizmet. AĞ HİzMETİ
      IIS 5.X'te (Windows XP) barındırılan hizmet. Machine.config dosyasındaki öğesi tarafından <processModel> denetlendi. Varsayılan hesap ASPNET'tir.
    5. icacls.exe gibi bir araç kullanarak WCF'nin altında çalıştığı hesaba özel anahtarı içeren dosyaya okuma erişimi verin.

      Aşağıdaki kod örneği, belirtilen dosya için isteğe bağlı erişim denetim listesini (DACL) düzenleyerek AĞ HİzMETİ hesabına dosyaya okuma (:R) erişimi verir.

      icacls.exe "C:\Documents and Settings\All Users\Application Data\Microsoft\Crypto\RSA\MachineKeys\8aeda5eb81555f14f8f9960745b5a40d_38f7de48-5ee9-452d-8a5a-92789d7110b1" /grant "NETWORK SERVICE":R  
      

Ayrıca bkz.