Bir ASP.NET Web uygulaması kimlik doğrulaması için bir istemci sertifikası kullanılarak bir Web hizmetine nasıl

Makale çevirileri Makale çevirileri
Makale numarası: 901183 - Bu makalenin geçerli olduğu ürünleri görün.
Hepsini aç | Hepsini kapa

Bu Sayfada

Özet

Bu makalede, bir istemci sertifikası kimlik doğrulaması için bir Web hizmetine bir ASP.NET Web uygulaması geçirilecek nasıl anlatılmaktadır.

NotHttpWebRequest sınıfı, bir hizmetin. Çağır değil,'ı kullanarak doğrudan bir HTTP isteğindeki yaptığınızda bu makaledeki adımları için de geçerli

Giriş

Genellikle, Web Hizmetleri, Web Hizmetleri çağıran uygulamalar doğrulaması gerekir. Web Hizmetleri, Web Hizmetleri authorizations yapmadan önce uygulamalar'ı çağırmak, kimlik doğrulamalarının gerçekleştirmelisiniz. Bir kimlik doğrulama yöntemi, bir istemci sertifikası sunmak için Web hizmetini çağırmak uygulamalar sağlamaktır.

Sertifika kimlik doğrulaması kullanan bir Web hizmetini çağırmak bir ASP.NET Web uygulaması çalıştığında, "erişim engellendi" hata iletisi alabilirsiniz. Bir konsol uygulaması veya bir Microsoft Windows Forms uygulaması aynı Web hizmeti çağrıları, bir hata iletisi almazsınız.

Bu davranış, bilgisayar iki farklı sertifika depoları tutar oluşur:
  • Yerel makinenin deposunu: istemci sertifikaları bulmak için bu depoda bir ASP.NET Web uygulaması arar.
  • Yerel kullanıcı deposunda: istemci sertifikaları bulmak için bu depoda bir etkileşimli kullanıcı uygulamayı arar.
Genellikle, etkileşimli kullanıcı uygulamayı bir istemci sertifikası yüklediğinde, istemci sertifikası yerel kullanıcı deposunda yüklenir. Bu nedenle, istemci sertifikası uygulamaları etkileşimli kullanıcı olarak çalışır. Ancak, istemci sertifikası için ASP.NET Web çalışmaz uygulamaları.

Daha fazla bilgi

Bir ASP.NET Web uygulaması, bir istemci sertifikası kullanmak üzere etkinleştirmek için <a0></a0>, yerel makine deposunda istemci sertifikası yüklemeniz gerekir. Yerel makine deposunda bir istemci sertifikası yüklediğinizde, istemci sertifikası yalnızca Administrators grubundaki kullanıcı hesaplarının ve istemci sertifikası yükleyen kullanıcı için kullanılabilir. Bu nedenle, istemci sertifikası, ASP.NET Web uygulamasını çalıştırmak için kullanılan kullanıcı hesabı için erişim vermeniz gerekir.

Not Istemci sertifikalarını yerel makine deposunda kullanmak için Microsoft .NET Framework 1.1 Service Pack 1 (SP1) olması gerekir.

Ayrıca, ASP.NET Web uygulaması, Web hizmetinin aradığında, uygulamanın istemci sertifikası sertifika deposundan verin ve sonra istemci sertifikası Web hizmeti çağrısı eklemeniz gerekir.

Istemci sertifikasını yükleyin ve kullanıcı hesabı için erişim verme

Istemci sertifikası yüklemek için ve ASP.NET Web uygulamasını çalıştırmak için kullanılan kullanıcı hesabının, istemci sertifikası için erişim vermek için aşağıdaki adımları izleyin.

1. Adım: yerel makine deposunda istemci sertifikası yükleme

Bir PKCS # 12 (.pfx) dosyası bir istemci sertifikası varsa, Microsoft Windows HTTP Hizmetleri sertifika Configuration Tool'u kullanabilir (WinHttpCertCfg.exe) istemci sertifikasını yüklemek için) ve Network Service hesabı gibi ek kullanıcı hesaplarına istemci sertifikası erişim vermek için. Bunu yapmak için şu adımları izleyin:
  1. Karşıdan yükleyip daha sonra Microsoft Windows HTTP Hizmetleri sertifika yapılandırma aracı. Aracı edinmek için <a0></a0>, aşağıdaki Microsoft Web sitesini ziyaret edin:
    http://www.microsoft.com/downloads/details.aspx?familyid=c42e27ac-3409-40e9-8667-c748e422833f
  2. Komut isteminde, aşağıdaki komutu çalıştırın:
    winhttpcertcfg PFXFile -i - c LOCAL_MACHINE\My - a IWAM_TESTMACHINE -p PFXPassword
    NotPfxFile .pfx dosya adıdır. Password Dosyayı bir parola gerektirmiyorsa, ihmal -p parametresi.

    Genellikle, WinHttpCertCfg.exe dosyası aşağıdaki klasörde bulunur:
    C:\Program Files\Windows Resource Kits\Tools
.Pfx uzantılı bir dosyaya erişiminiz yok ve Microsoft Windows Server 2003 veya Microsoft Windows 2000 Server çalıştıran bir bilgisayarda Microsoft Sertifika Hizmetleri yüklü olan, isteği ve istemci sertifikasının yerel makinenin deposuna yükleyin. Bunu yapmak için şu adımları izleyin:
  1. Istemci bilgisayara yönetici kimlik bilgilerine sahip bir kullanıcı hesabıyla oturum açın.
  2. Microsoft ınternet Explorer'da ziyaret edin, sertifika yetkilisinin (CA) Web sitesi. CA sunucusunun CAServer olarak adlandırılmışsa, örneğin, aşağıdaki Microsoft Web sitesini ziyaret edin:
    http://CAServer/certsrv
  3. Bir görev seçin, bir sertifika isteği ' ni tıklatın ve Gelişmiş Sertifika isteği</a1>'ı tıklatın.
  4. Tıklatın Oluştur ve bu CA'ya istek.
  5. ' De Gelişmiş Sertifika isteği formunda, bir ad ve e-posta adresi girin.
  6. Sertifika türü, gerekli olarak bölümünde, İstemci kimlik doğrulama sertifikası ' nı tıklatın.
  7. Anahtar seçenekleri bölümünde, yerel bilgisayar sertifika deposuna sertifika deposunu onay kutusunu tıklatıp seçin ve ardından Gönder ' i tıklatın.

    Istemci sertifikasının <a2>Request</a2> KIMLIĞINI not alın.
  8. Olası komut dosyası ihlali, iletişim kutusunda, Evet ' i tıklatın.
  9. Istemci sertifikası sertifika YETKILISI tarafından verilmiş olan Giriş ' i tıklatın sonra <a1>Görünüm</a1> beklemedeki bir sertifika isteğinin durumunu tıklatın.
  10. Görüntülemek istediğiniz sertifika isteğini seç altında 7. adımda gönderilen sertifika isteğini tıklatın.
  11. Bu sertifikayı yükle ' yi tıklatın ve sonra EvetOlası Scripting ihlali</a0> iletişim kutusundaki'i tıklatın.

2. Adım: istemci sertifikasına erişimi yapılandırma

Bu adımda, ASP.NET hesabın yerel makine deposunda saklanır istemcisiyle erişim izni vermelisiniz. Windows Server 2003'te Web uygulamalarını çalıştırmak için varsayılan hesap Network Service hesabıdır. Bu nedenle, sertifika ağ hizmeti hesabı için erişim vermeniz gerekir. ASP.NET çalıştırmak için özel bir hesabı yapılandırdıysanız, özel hesabı için erişim vermeniz gerekir.

Not ' De Microsoft ınternet ınformation Server (IIS) 5.0, the ASPNET altında ASP.NET çalıştırır, hesap ve altında değil ağ hizmeti hesabı. Bu nedenle, IIS 5.0 çalışan bir bilgisayarda ASPNET hesabının izinlerini vermek için gerekir.

Belirli bir kullanıcı hesabı için erişim vermek için <a0></a0>, komut isteminde aşağıdaki komutu çalıştırın:
WinHttpCertCfg.exe -g-c LOCAL_MACHINE\MY -s "IssuedToName" - bir "AccountName"
NotAccountName yerel bilgisayar hesabı veya bir etki alanı hesabının adıdır. IssuedToName şirket veya istemci sertifikası verilmiş bir etki alanı adıdır. Bu komut büyük/küçük harf duyarlı bir arama dizesi içerir. Arama dizesi, konu adı dizesini içeren ilk numaralandırılmış sertifika bulur.

Aşağıdaki komut satırı komutu, ağ hizmeti hesabının Microsoft ınternet ınformation Services (IIS) 6.0 istemci sertifikasına erişimi vermek nasıl bir örnektir:
WinHttpCertCfg.exe -g-c LOCAL_MACHINE\MY -s "IssuedToName" - bir "NetworkService"
Aşağıdaki komut satırı komutu, istemci sertifikası IIS 5.0 ASPNET hesabı için erişim vermek nasıl bir örnektir:
WinHttpCertCfg.exe -g-c LOCAL_MACHINE\MY -s "IssuedToName" - bir "ASPNET"
Not Windows HTTP Hizmetleri ve sertifika Yapılandırma Aracı'nı kullandığınızda, istemci sertifikası ve tek bir adımda istemci sertifikasının erişimini yapılandırma işlemi alma işleminde birleştirebilirsiniz. Örneğin, aşağıdaki komut satırı komutu, her iki işlemleri gerçekleştirir:
Winhttpcertcfg.exe PFXFile -i - c LOCAL_MACHINE\My - a “ AccountName ”

3. Adım: istemci sertifikası için yerel makinenin deposunu yerel kullanıcı depodan Kopyala

Etkileşimli bir uygulama Windows Forms uygulaması veya bir komut satırı uygulaması gibi bir istemci sertifikası erişebiliyorsanız, istemci sertifikası, önceden yerel kullanıcı deposunda saklanır. Bir ASP.NET Web uygulaması gibi bir hizmetin uygulama aynı istemci sertifikası erişemiyorsanız, ancak, istemci sertifikası yerel makine deposunda depolanabilir değil.

Bu adımı, bir istemci sertifikası, Sertifika Verme Sihirbazı'nı kullanarak yerel makine deposu için yerel kullanıcı deposunda kopyalama açıklar.

Not Istemci sertifikası yerel makine deposunda değilse veya doğrudan yerel makinenin deposunu adım 1'deki gibi istemci sertifikasının yükleyebilirseniz, adım 4'e gidin. Adım 3 kullanırsanız, ancak, sonra Adım 2'in istemci sertifikasına erişimi vermek için döndürmelidir.

Istemci sertifikası için yerel makinenin deposunu kopyalamak için aşağıdaki adımları izleyin:
  1. Başlat ' ı tıklatın, Çalıştır ' ı tıklatın, mmc yazın ve Tamam ' ı tıklatın.
  2. Dosya menüsünde, Ek Bileşen Ekle/Kaldır'ı tıklatın ve sonra Ekle ' yi tıklatın.
  3. Tek başına ek eklentileri iletişim kutusunda, Sertifikalar ' ı tıklatın, Ekle ' yi tıklatın, bilgisayar hesabı ' nı tıklatın, ileri ' yi tıklatın ve sonra da <a2>son</a2>'u tıklatın.
  4. Tek başına ek eklentileri iletişim kutusunda, Sertifikalar ' ı tıklatın, Ekle ' yi tıklatın, Kullanıcı hesabım ' ı tıklatın ve sonra da <a2>son</a2>'u tıklatın.
  5. Kapat ' ı tıklatın ve sonra da Tamam ' ı tıklatın.
  6. Yerel kullanıcı depodan istemci sertifikası vermek için aşağıdaki adımları izleyin:
    1. Sertifikalar - geçerli kullanıcı'nı genişletin, Personal ' ı genişletin ve sonra Sertifikalar ' ı tıklatın.
    2. Istemci sertifikası'nı sağ tıklatın, Tüm görevler ' i tıklatın, Ver ' i tıklatın ve sonra ileri ' yi tıklatın.
    3. Evet, özel anahtarı ver) seçeneği kullanılamıyorsa, ASP.NET Web uygulaması, istemci sertifikası kullanamazsınız. Başka bir istemci sertifikası almanız gerekir. Bunu yapmak için <a0></a0>, adım 1 ve adım 2'ndaki yönergeleri izleyin. Aksi halde, Evet, özel anahtarı ver ' i tıklatın ve sonra da iki kez ileri ' yi tıklatın.
    4. Parola kutusuna Parolayı Onayla</a0> kutusuna, bir parola yazın ve sonra ileri ' yi tıklatın.
    5. Dosya adı</a0> kutusunda bir dosya adı yazın. Ileri ' yi tıklatın ve sonra da <a2>son</a2>'u tıklatın.
    6. Sertifika Verme Sihirbazı iletişim kutusunda, Tamam ' ı tıklatın.
  7. Yerel makinenin deposunu için istemci sertifikası almak için aşağıdaki adımları izleyin:
    1. Sertifikalar (yerel bilgisayar) genişletin ve sonra da Kişisel genişletin.
    2. Sertifikalar ' ı sağ tıklatın, Tüm görev ' i tıklatın, Al ' ı tıklatın ve sonra ileri ' yi tıklatın.
    3. Dosya adı kutusuna, adım 6e belirttiğiniz dosya adı yazın ve sonra ileri ' yi tıklatın.
    4. Parola) kutusunda, adım 6 d belirttiğiniz bir parola yazın ve sonra da iki kez ileri ' yi tıklatın.
    5. Son ' u tıklatın ve sonra Tamam ' ı tıklatın.

Adım 4: CA kök sertifikasını yükle

Istemci sertifikası VeriSign gibi bir dış CA'dan zaten imzalanmışsa veya kök CA'sı için zaten yüklediyseniz, adım 4 atlayabilirsiniz.

Varsayılan olarak, birçok dış CA'lara güvenilen kök sertifika deposunda önceden zaten yüklenmiş kök sertifikalarının Windows var.
Kök sertifikası'nın yüklü olduğunu doğrulayın.
CA kök sertifikası'nın yüklü olduğunu doğrulamak için <a0></a0>, aşağıdaki adımları izleyin:
  1. Başlat ' ı tıklatın, Çalıştır ' ı tıklatın, mmc yazın ve Tamam ' ı tıklatın.
  2. Dosya menüsünde, Ek Bileşen Ekle/Kaldır'ı tıklatın ve sonra Ekle ' yi tıklatın.
  3. Tek başına ek eklentileri iletişim kutusunda, Sertifikalar ' ı tıklatın, Ekle ' yi tıklatın, bilgisayar hesabı ' nı tıklatın, ileri ' yi tıklatın ve sonra da <a2>son</a2>'u tıklatın.
  4. Kapat ' ı tıklatın ve sonra da Tamam ' ı tıklatın.
  5. Sertifikalar (yerel bilgisayar)'nı genişletin, Güvenilen kök sertifika yetkilileri ' ı genişletin ve sonra Sertifikalar ' ı tıklatın.
  6. Sağ bölmede, kullanmak istediğiniz CA kök sertifikasını listelendiğini doğrulayın.
Kök sertifikası yükleme
Kullanmak istediğiniz CA kök sertifikasını listeleniyorsa, kök sertifikasını da yüklemeniz gerekir. Kullanmak istediğiniz CA kök sertifikasını, .cer uzantılı bir dosya, .der dosya veya bir .pfx dosyası gibi bir sertifika dosyasında verilmiş olan, aşağıdaki adımları izleyin:
  1. Sertifikalar (yerel bilgisayar) genişletin, Güvenilen kök sertifika yetkilileri sağ tıklatın, Tüm görevler ' i tıklatın ve Al ' ı tıklatın.
  2. Sertifika Alma Sihirbazı iletişim kutusunda, ileri ' yi tıklatın ve sonra da Dosya adı kutusuna sertifika dosyasının adını yazın ve sonra iki kez ileri ' yi tıklatın.
  3. Son ' u tıklatın ve sonra Tamam ' ı tıklatın.
Kök sertifika isteme
Microsoft Sertifika Hizmetleri'ni yükleme veritabanında kullanmak istediğiniz CA'yı içeriyorsa, kök sertifika isteyebilirler. Bunu yapmak için şu adımları izleyin:
  1. Internet Explorer'da, CA Web sitesini ziyaret edin. CA sunucusunun CAServer olarak adlandırılmışsa, örneğin, aşağıdaki Microsoft Web sitesini ziyaret edin:
    http://CAServer/certsrv
  2. Bir CA'YA bir sertifika, sertifika zinciri veya CRL Yükle ' yi tıklatın ve ardından Yükleme CA sertifikası.
  3. Dosya yükleme iletişim kutusunda, Kaydet ' i tıklatın.
  4. Kaydet iletişim kutusunda, sertifika dosyasını kaydetmek istediğiniz konumu girin ve sonra da <a2>Kaydet</a2>'i tıklatın.
  5. Kök sertifika dosyasını kaydettikten sonra güvenilen kök sertifika yetkilileri deposunda sertifika dosyasını yüklemek için "kök sertifika yükleme" bölümündeki adımları kullanın.

Web hizmetini çağırmak

Istemci sertifikasının yerel makinenin deposunu veya yerel kullanıcı deposunda yükledikten sonra Web hizmetini çağırmak için ASP.NET Web uygulamasını istemci sertifikası erişebilirsiniz. Istemci sertifikası erişmek için gereken adımları gösterilenlerle aynı Windows Forms uygulaması veya bir ASP.NET Web uygulaması.

.NET Framework 1. 1'i kullanıyorsanız, ilk anahtar DER ile kodlanmış bir dosyaya vermelisiniz. System.Security.Cryptography.X509Certificates.X509Certificate sınıfı, bir sertifikanın ayrıntılarını, sertifika deposundan doğrudan erişmek için kullanılan yöntem içermediğinden anahtarı vermeniz gerekir. Bu nedenle, uygulama DER ile kodlanmış bir dosyadan bir sertifikanın ayrıntılarını okumalısınız.

Not Web Services Enhancements 2.0, Microsoft .NET (WSE) için bir sertifika deposuna sertifika ayrıntıları almak bir uygulama için bir yol sağlar.

Aşağıdaki C# örnek kodu, bir istemci sertifikası kimlik doğrulaması için geçirerek Web hizmetini çağırmak gösterilmiştir.
using System.Security.Cryptography.X509Certificates;
...

  public void CallWebService()
  {
    // TODO: Replace <C:\WSClientCert.cer> with the path of your certificate file.
    string certPath = @"<C:\WSClientCert.cer>";

    // Create an instance of the Web service proxy.
    WebSvc.math mathservice = new WebSvc.math();
    // TODO: Replace <https://wsserver/securemath/math.asmx> with a valid URL.
    mathservice.Url = @"<https://wsserver/securemath/math.asmx>";

    // Create an X509Certificate object from the information 
    // in the certificate export file, and then add the certificate to the 
    // ClientCertificates collection of the Web service proxy.
    mathservice.ClientCertificates.Add(
        X509Certificate.CreateFromCertFile(certPath));

    long lngResult = 0;
    try
    {
      lngResult = mathservice.Add(Int32.Parse(operand1.Text), 
          Int32.Parse(operand2.Text));
      string result = lngResult.ToString();
    }
    catch(Exception ex)
    {
      if(ex is WebException)
      {
        WebException we = ex as WebException;
        WebResponse webResponse = we.Response;
        throw new Exception("Exception calling method. " + ex.Message);
      }
    }
  }

Microsoft .NET için Web Services Enhancements 2.0

Microsoft .NET sınıf kitaplığı, en son Web hizmetlerini iletişim kuralları'nı kullanarak Web hizmetleri oluşturmak için Web Services Enhancements 2.0 için Microsoft .NET (WSE) olur. Bu iletişim kuralları şunlardır:
  • WS-güvenlik
  • WS-SecureConversation
  • WS-Trust
  • WS-Policy
  • WS-SecurityPolicy
  • WS-Addressing
  • WS-ekler
Not WSE, .NET Framework ' bir parçası olarak dahil değildir. WSE'nı edinmek için aşağıdaki Microsoft Web sitesini ziyaret edin:
http://www.microsoft.com/downloads/details.aspx?FamilyId=FC5F06C5-821F-41D3-A4FE-6C7B56423841
Bir Web'e erişmek için bu protokollerden birini kullanmak zorunda istemci sertifikası kimlik doğrulaması gerektiren bir hizmet. Ancak, Microsoft.Web.Services2.Security.X509 sınıfı kullanmak isteyebilirsiniz. Microsoft.Web.Services2.Security.X509 sınıfı, bir istemci sertifikası sertifika deposunda'na doğrudan erişmek için yöntemler içerir. Bu yöntemi kullanırsanız, sertifika verme gerekmez.

Aşağıdaki C# örnek kod, yerel makine deposunda SecureMathClient adlı ilk sertifikayı nasıl gösterir. Sonra bu kod örneği, Web hizmeti matematik <a1>Ekle</a1> yöntemini çağırmak için sertifikayı kullanır. Matematik Web hizmeti, istemci sertifikası gerektirir.
...
  // TODO: Replace <SecureMathClient> with the name of the client certificate.
  string certName = "<SecureMathClient>";

  // WSE 2.0 method
  X509CertificateStore store =
    X509CertificateStore.LocalMachineStore(X509CertificateStore.MyStore);
  store.OpenRead();
  // Look for the first certificate that is named SecureMathClient.
  // Look in the local machine store.
  X509CertificateCollection col= 
    (X509CertificateCollection)store.FindCertificateBySubjectString(certName);
  X509Certificate cert =null;
  try
  { 

// This sample obtains the first matching certificate from the collection.
    cert = col[0];
  } 
  catch(Exception ex)
  {
    throw new Exception("Certificate not Found!");
  }

  // Create an instance of the Web service proxy.
  math mathservice = new math();
  // TODO: Replace <https://wsserver/securemath/math.asmx> with a valid URL.
  mathservice.Url = @"<https://wsserver/securemath/math.asmx>";
  mathservice.ClientCertificates.Add(cert);

  long lngResult = 0;
  try
  {
    lngResult = mathservice.Add(Int32.Parse(operand1.Text), 
        Int32.Parse(operand2.Text));
    result.Text = lngResult.ToString();
  }
  catch(Exception ex)
  {
    if(ex is WebException)
    {
      WebException we = ex as WebException;
      WebResponse webResponse = we.Response;
      throw new Exception("Exception calling method. " + ex.Message);
    }
  }

Referanslar

System.Security.Cryptography.X509Certificates.X509Certificate sınıfı hakkında daha fazla bilgi için aşağıdaki Microsoft Developer Network (MSDN) Web sitesini ziyaret edin:
http://msdn2.microsoft.com/en-us/library/system.security.cryptography.x509certificates.x509certificate(vs.71).aspx
Bir ASP.NET Web uygulaması kullanarak güvenliği artırılmış Web sitesi nasıl hakkında daha fazla bilgi için Microsoft Knowledge Base'deki makaleyi görüntülemek üzere aşağıdaki makale numarasını tıklatın:
817854Düzeltme: ASP.NET Web uygulaması güvenliği artırılmış Web sitesine bir istemci sertifikası teslim edemiyor

Özellikler

Makale numarası: 901183 - Last Review: 13 Aralık 2007 Perşembe - Gözden geçirme: 3.2
Bu makaledeki bilginin uygulandığı durum:
  • Microsoft .NET Framework 1.1, Ne zaman ne ile kullanilir:
    • Microsoft Internet Information Services 6.0
    • Microsoft Internet Information Services 5.0
Anahtar Kelimeler: 
kbmt kbcode kbwebservices kbcertservices kbhowto kbinfo KB901183 KbMttr
Machine-translated Article
ÖNEMLİ: Bu makale, bir kişi tarafından çevrilmek yerine, Microsoft makine-çevirisi yazılımı ile çevrilmiştir. Microsoft size hem kişiler tarafından çevrilmiş, hem de makine-çevrisi ile çevrilmiş makaleler sunar. Böylelikle, bilgi bankamızdaki tüm makalelere, kendi dilinizde ulaşmış olursunuz. Bununla birlikte, makine tarafından çevrilmiş makaleler mükemmel değildir. Bir yabancının sizin dilinizde konuşurken yapabileceği hatalar gibi, makale; kelime dağarcığı, söz dizim kuralları veya dil bilgisi açısından yanlışlar içerebilir. Microsoft, içeriğin yanlış çevrimi veya onun müşteri tarafından kullanımından doğan; kusur, hata veya zarardan sorumlu değildir. Microsoft ayrıca makine çevirisi yazılımını sıkça güncellemektedir.
Makalenin İngilizcesi aşağıdaki gibidir:901183

Geri Bildirim Ver

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com