Jak volání webové služby pomocí klientských certifikátů pro ověřování v ASP.NET webové aplikace

Překlady článku Překlady článku
ID článku: 901183 - Produkty, které se vztahují k tomuto článku.
Rozbalit všechny záložky | Minimalizovat všechny záložky

Na této stránce

Souhrn

Tento článek popisuje, jak lze předat webové služby pro ověřování klientských certifikátů z ASP.Aplikace pro síť WWW.

Poznámka: Kroky v tomto článku se vztahují i na kdy je Vytvoření přímého požadavku HTTP pomocí HttpWebRequest Třída, pokud nemůže vyvolat webové služby.

ÚVOD

Často se musí ověřit webové služby aplikace, které při volání webové služby. Webové služby, musíte provést ověřování volání aplikací před webové služby mohou provádět povolení. Jeden Postup ověřování je požadovat, aby aplikace, které volání webové služby k prezentaci klientský certifikát.

Pokud ASP.NET webové aplikace se pokusí volání webové služby, která používá ověřování pomocí certifikátů, může se zobrazit chybová zpráva "přístup odepřen". Pokud do konzoly aplikace nebo aplikace Microsoft model Windows Forms volá stejné webové službě, obdržíte chybu zpráva.

K tomuto chování dochází, protože počítač udržuje dva úložiště různých certifikátů:
  • Úložiště místního počítače: ASP.NET webové aplikace vypadá v tomto úložišti vyhledejte klienta certifikáty.
  • Úložiště místního uživatele: Vzhled interaktivní uživatel aplikace v tomto úložišti vyhledejte klienta certifikáty.
Obvykle při aplikaci Interaktivní uživatel nainstaluje certifikát klienta klientský certifikát nainstalovaný v úložišti místního uživatele. Proto klientský certifikát lze použít pro interaktivní uživatel aplikace. Certifikát klienta však nefunguje prostředí ASP.SÍŤ WWW aplikace.

Další informace

Povolit ASP.NET webové aplikace pomocí klienta certifikát, je třeba nainstalovat klientský certifikát do úložiště místního počítače. Při instalaci klientského certifikátu v úložišti místního počítače klientský certifikát je dostupná pouze pro uživatelské účty ve skupině Administrators a pro uživatele, kteří nainstalovali certifikát klienta. Proto je nutné udělit přístup k certifikátu klienta pro uživatelský účet, který slouží ke spuštění ASP.Aplikace pro síť WWW.

Poznámka: Musíte mít Microsoft.NET Framework 1.1 Service Pack 1 (SP1) nainstalován pomocí klientské certifikáty v úložišti místního počítače.

Kromě toho, kdy ASP.NET Volání webové aplikace, webové služby, musí exportovat aplikaci klientský certifikát certifikát uložit a potom přidejte klienta certifikát k volání webové služby.

Nainstalujte klientský certifikát a udělit přístup pro uživatelský účet

Instalace certifikátu klienta a udělit přístup k certifikátu klienta pro uživatelský účet, který slouží ke spuštění ASP.NETTO webové aplikace, postupujte následujícím způsobem.

Krok 1: Instalace klientského certifikátu v úložišti místního počítače

Máte-li klientský certifikát do souboru PKCS č. 12 (PFX), můžete pomocí nástroje Konfigurace systému Microsoft Windows HTTP Services certifikátu (WinHttpCertCfg.exe), nainstalujte klientský certifikát a udělit přístup k certifikátu klienta pro další uživatelské účty, jako je například účet Network Service. Chcete-li to provést, postupujte kroky:
  1. Stáhněte a nainstalujte Microsoft Windows HTTP Nástroj pro konfiguraci Certifikační služby. Chcete-li získat nástroj, navštivte následující Web společnosti Microsoft:
    http://www.microsoft.com/downloads/details.aspx?FamilyId=c42e27ac-3409-40E9-8667-c748e422833f
  2. Na příkazovém řádku spusťte následující příkaz:
    winhttpcertcfg -i Soubor_pfx -c LOCAL_MACHINE\My - a IWAM_TESTMACHINE -p PFXPassword
    Poznámka: Soubor_pfx název souboru PFX. Heslo je heslo souboru PFX. Pokud soubor nevyžaduje heslo, vynechat -p parametr.

    Obvykle je soubor WinHttpCertCfg.exe umístěn v následující Složka:
    C:\Program Files\Windows Resource Kits\Tools
Pokud nemáte přístup k souboru PFX a máte nainstalované certifikační služby společnosti Microsoft v počítači se systémem Microsoft Windows Server 2003 nebo Microsoft Windows 2000 Server, můžete vyžádat a nainstalovat certifikát klienta přímo do úložiště místního počítače. Chcete-li to provést, postupujte takto:
  1. Přihlaste se ke klientskému počítači pomocí uživatelského účtu který má pověření správce.
  2. V aplikaci Microsoft Internet Explorer navštivte certifikačního úřadu (CA) Webový server. Například pokud je na serveru certifikačního úřadu s názvem CAServer, naleznete na následujícím webu:
    http://CAServer/certsrv
  3. Ve skupinovém rámečku Vyberte úkol, klepněte na tlačítko Žádost o certifikáta klepněte na tlačítko Upřesnit žádost o certifikát.
  4. Klepněte na tlačítko Vytvořit a odeslat žádost o to CERTIFIKAČNÍ ÚŘAD.
  5. V Rozšířené žádosti o certifikátformuláře, zadejte název a e-mailovou adresu.
  6. V Zamýšlený účelKlepněte na položku Certifikát ověření klienta.
  7. V Možnosti klíče oddíl klepnutím Vyberte Úložiště certifikátů v místním počítači certifikátu úložiště Zaškrtněte políčko a klepněte na tlačítko Odeslat.

    Poznámka: ID požadavku klientského certifikátu.
  8. V Potenciální narušení skriptováníDialogové okno, klepněte na tlačítko Ano.
  9. Poté, co byl vydán certifikační úřad klientský certifikát, klepněte na tlačítko Domovská stránkaa klepněte na tlačítko Zobrazení stav žádosti o certifikát čekající na vyřízení.
  10. Ve skupinovém rámečku Vyberte žádost o certifikát, který chcete Zobrazit, klepněte na žádost o certifikát, který jste odeslali v kroku 7.
  11. Klepněte na tlačítko Nainstalovat tento certifikát, a Klepněte na tlačítko Ano v Potenciální narušení skriptování Dialogové okno.

Krok 2: Konfigurace přístupu k certifikátu klienta

V tomto kroku je třeba udělit oprávnění pro ASP.Účet NET přístup klientského certifikátu, který je uložen v úložišti místního počítače. Účet Network Service je ve výchozím nastavení účet pro spouštění webových aplikací v systému Windows Server 2003. Proto je třeba udělit přístup k certifikátu pro účet síťové služby. Pokud máte konfigurovat vlastní účet, který chcete spustit prostředí ASP.NET, je nutné udělit přístup pro vlastní účet.

Poznámka: Microsoft Internet Information Server (IIS) 5.0, ASP.NET spouštěna ASPNET účtu a není v rámci služby síťového účtu. Proto je třeba udělit oprávnění pro účet ASPNET v počítači se spuštěnou službou IIS 5.0.

Chcete-li udělit přístup pro konkrétní uživatelský účet, spusťte následující příkaz příkazového řádku příkaz:
WinHttpCertCfg.exe -g - c LOCAL_MACHINE\MY -s.IssuedToName" -a "Název_účtu"
Poznámka: Název_účtu je název účtu místního počítače nebo účtu domény. IssuedToName název společnosti nebo domény, ke které je certifikát klienta byl vydán. Tento příkaz obsahuje řetězec hledání velká a malá písmena. Vyhledávací řetězec najde první Výčtové certifikát, který má název subjektu, který obsahuje řetězec.

V příkazovém řádku následující příkaz je příkladem jak udělit přístup klientský certifikát pro účet síťové služby v (IIS) 6.0:
WinHttpCertCfg.exe -g - c LOCAL_MACHINE\MY -s.IssuedToName"-a"NetworkService."
V příkazovém řádku následující příkaz je příkladem, jak udělit přístup k klientský certifikát pro účet ASPNET ve službě IIS 5.0:
WinHttpCertCfg.exe -g - c LOCAL_MACHINE\MY -s.IssuedToName"-a"ASPNET."
Poznámka: Při použití systému Windows HTTP Nástroj Konfigurace certifikační služby, můžete kombinovat proces importu certifikátu klienta a proces konfigurace přístupu k certifikátu klienta v jednom kroku. Pro například následující příkaz provede oba procesy:
Winhttpcertcfg.exe -i Soubor_pfx -c LOCAL_MACHINE\My - a "Název_účtu

Krok 3: Zkopírujte klientský certifikát z úložiště místního uživatele do úložiště místního počítače

Pokud interaktivní aplikace, jako je například aplikace model Windows Forms nebo příkazového řádku aplikace přístup klientského certifikátu klienta certifikát je již uložen v úložišti místního uživatele. Avšak pokud služba aplikace, jako je například ASP.Nelze získat přístup k ČISTÉ webové aplikace stejný certifikát klienta, nemusí být certifikát klienta uloženy v úložišti místního počítače.

Tento krok, vysvětluje, jak lze zkopírovat klientský certifikát v úložišti místního uživatele úložiště místního počítače pomocí Průvodce exportem certifikátu.

Poznámka: Pokud je již klientský certifikát do úložiště místního počítače nebo pokud nainstalujete certifikát klienta přímo do úložiště místního počítače jako Krok 1, přejděte ke kroku 4. Však použijete kroku 3, musíte potom vrátit ke kroku 2 a Udělte přístup klientského certifikátu.

Místní kopírování certifikátu klienta úložiště počítače, postupujte takto:
  1. Klepněte na tlačítko Spustit, klepněte na tlačítko Spustit, typ konzoly MMCa klepněte na tlačítko OK.
  2. V Soubor nabídky, klepněte na tlačítko Přidat nebo odebrat modul Snap-ina klepněte na tlačítko Přidat.
  3. V Přidat samostatný modul Snap in Dialogové okno Klepněte na tlačítko Certifikáty, klepněte na tlačítko Přidat, klepněte na tlačítko Účet počítače, klepněte na tlačítko Dalšía klepněte na tlačítko Dokončit.
  4. V Přidat samostatný modul Snap in Dialogové okno Klepněte na tlačítko Certifikáty, klepněte na tlačítko Přidat, klepněte na tlačítko Můj uživatelský účeta klepněte na tlačítko Dokončit.
  5. Klepněte na tlačítko Zavříta klepněte na tlačítko OK.
  6. Chcete-li exportovat klientský certifikát z úložiště místního uživatele, postupujte takto:
    1. Rozbalit Certifikáty - aktuální uživatel, Rozbalit Osobnía klepněte na tlačítko Certifikáty.
    2. Klepněte pravým tlačítkem myši klientský certifikát, klepněte na tlačítko Všechny Úkoly, klepněte na tlačítko Exportovata klepněte na tlačítko Další.
    3. Pokud Ano, exportovat soukromý klíč možnost není k dispozici, ASP.NET webové aplikace nelze použít certifikát klienta. Musíte získat jiný klientský certifikát. Chcete-li to provést, postupujte podle pokynů v kroku 1 a 2. V opačném případě klepněte na tlačítko Ano, exportovat soukromý klíča klepněte na tlačítko Další dvě časy.
    4. V Heslo pole a Potvrzení hesla Zadejte heslo, a potom klepněte na tlačítko Další.
    5. V Název souboru Zadejte soubor název. Klepněte na tlačítko Dalšía klepněte na tlačítko Dokončit.
    6. V Průvodce exportem certifikátuDialogové okno, klepněte na tlačítko OK.
  7. Chcete-li importovat certifikát klienta do úložiště místního počítače, postupujte takto:
    1. Rozbalit Certifikáty (místní), a potom rozbalte položku Osobní.
    2. Klepněte pravým tlačítkem myši Certifikáty, klepněte na tlačítko Všechny úkolů, klepněte na tlačítko Importa klepněte na tlačítko Další.
    3. V Název souboru Zadejte soubor název zadaný v kroku 6e, a klepněte na tlačítko Další.
    4. V Heslo Zadejte heslo zadaný v kroku 6 d a potom klepněte na tlačítko Další dvě časy.
    5. Klepněte na tlačítko Dokončita klepněte na tlačítko OK.

Krok 4: Nainstalujte kořenový certifikát certifikačního úřadu

Je-li klientský certifikát je již podepsán externí Certifikační Autority, jako je například společnost VeriSign, nebo pokud jste již nainstalovali kořen certifikát pro certifikační úřad, můžete vynechat krok 4.

Ve výchozím nastavení systém Windows má kořenové certifikáty mnoho vnějších Již předinstalována v důvěryhodné kořenové certifikační úřady Úložiště certifikátů.
Ověřte, zda je nainstalována kořenový certifikát
Ověřit, zda kořenový adresář certifikát pro certifikační úřad je nainstalována, postupujte kroky:
  1. Klepněte na tlačítko Spustit, klepněte na tlačítko Spustit, typ konzoly MMCa klepněte na tlačítko OK.
  2. V Soubor nabídky, klepněte na tlačítko Přidat nebo odebrat modul Snap-ina klepněte na tlačítko Přidat.
  3. V Přidat samostatný modul Snap in Dialogové okno Klepněte na tlačítko Certifikáty, klepněte na tlačítko Přidat, klepněte na tlačítko Účet počítače, klepněte na tlačítko Dalšía klepněte na tlačítko Dokončit.
  4. Klepněte na tlačítko Zavříta klepněte na tlačítko OK.
  5. Rozbalit Certifikáty (místní), Rozbalit Důvěryhodné kořenové certifikační úřadya klepněte na tlačítko Certifikáty.
  6. V pravém podokně zjistěte, zda je uvedena kořenový certifikát certifikačního úřadu, který chcete použít.
Nainstalujte kořenový certifikát
Kořenový certifikát certifikačního úřadu, který chcete použít, není-li v seznamu uveden, je nutné nainstalovat kořenový certifikát. Je-li kořenový certifikát certifikačního úřadu, který chcete použít byl vydán vám v souboru certifikátu jako soubor CER, .der souboru nebo souboru s příponou PFX postupujte takto:
  1. Rozbalit Certifikáty (místní), Klepněte pravým tlačítkem myši Důvěryhodné kořenové certifikační úřady, klepněte na tlačítko Všechny úkolya klepněte na tlačítko Import.
  2. V Průvodce importem certifikátuDialogové okno, klepněte na tlačítko Dalšía klepněte Soubor název Zadejte název souboru certifikátu a potom klepněte na tlačítko Další dvakrát.
  3. Klepněte na tlačítko Dokončita klepněte na tlačítko OK.
Žádost o certifikát kořenové
Pokud certifikační úřad, který chcete použít, je zahrnuta v databázi instalace certifikační služby společnosti Microsoft, můžete požádat o kořenový certifikát. Chcete-li to provést, postupujte takto:
  1. V aplikaci Internet Explorer na webu WWW certifikačního úřadu. Například pokud je na serveru certifikačního úřadu s názvem CAServer, naleznete na následujícím webu:
    http://CAServer/certsrv
  2. Klepněte na tlačítko Stáhnout certifikační úřad certifikát, osvědčení řetězec nebo seznam CRLa klepněte na tlačítko Stáhnout certifikačního úřadu certifikát.
  3. V Stažení souboru Dialogové okno, klepněte na tlačítko Uložit.
  4. V Uložit jako Dialogové okno zadejte umístění, kam chcete uložit soubor certifikátu a klepněte na tlačítko Uložit.
  5. Po uložení souboru kořenového certifikátu použijte. kroky v části "Instalace kořenového certifikátu" nainstalovat soubor certifikátu v Důvěryhodné že kořenové certifikační úřady uložit.

Volání webové služby

Po instalaci klientského certifikátu v buď úložiště místního počítače nebo místní uživatele, můžete přistupovat z ASP klientského certifikátu.NET webové aplikace k volání webové služby. Kroky přístup klientského certifikátu jsou stejné pro aplikaci model Windows Forms nebo ASP.SÍŤ WWW aplikace.

Pokud používáte.NET Framework 1.1, je nutné nejprve exportujte klíče do souboru s kódováním DER. Je třeba exportovat klíč, protože System.Security.Cryptography.X509Certificates.X509Certificate Třída neobsahuje metody přímý přístup k podrobnosti certifikátu z úložiště certifikátů. Aplikace musí proto přečíst podrobnosti certifikátu ze souboru s kódováním DER.

Poznámka: Vylepšení webových služeb 2.0 společnosti Microsoft.NET (produktu WSE) poskytuje způsob, jakým aplikace získat podrobnosti o certifikátu přímo z úložiště certifikátů.

Následující příklad C# kód ukazuje, jak předáním klientský certifikát volání webové služby ověřování.
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);
      }
    }
  }

Vylepšení webových služeb 2.0 společnosti Microsoft.NET

Vylepšení webových služeb 2.0 společnosti Microsoft.NET (produktu WSE) je aplikace Microsoft.NET Knihovna tříd pro vytváření webových služeb pomocí nejnovějších webových služeb protokoly. Tyto protokoly patří následující:
  • Specifikace WS-Security
  • WS-SecureConversation.
  • WS-Trust
  • WS-Policy.
  • WS-SecurityPolicy
  • WS-Addressing
  • WS-přílohy
Poznámka: Není-li součástí produktu WSE.Rozhraní .NET Framework. Chcete-li získat produktu WSE, navštivte následující Web společnosti Microsoft:
http://www.microsoft.com/downloads/details.aspx?FamilyId = FC5F06C5-821F-41 D 3-A4FE-6C7B56423841
Nemáte přístup k webu použít některý z těchto protokolů Služba, která vyžaduje ověřování klientských certifikátů. Můžete však použít Microsoft.web.Services2.Security.X509 Třída. Na Microsoft.web.Services2.Security.X509 Třída obsahuje metody přímý přístup klientského certifikátu v úložišti certifikátů. Pokud používáte tyto metody, není nutné exportovat certifikát do souboru.

Na C# příklad kódu ukazuje, jak najít první certifikát s názvem SecureMathClient do úložiště místního počítače. Potom tento ukázkový kód použije certifikát volání na Přidat Metoda matematické webové služby. Matematické webová služba vyžaduje klientské certifikáty.
...
  // 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);
    }
  }

Odkazy

Další informace o System.Security.Cryptography.X509Certificates.X509Certificate třídy, navštivte následující Web společnosti Microsoft Developer Network (MSDN) Server:
http://msdn2.microsoft.com/en-us/library/System.Security.Cryptography.x509certificates.x509certificate (vs.71) .aspx
Další informace o tom, jak volat webu zabezpečených pomocí ASP.NET webové aplikace, klepněte na následující číslo článku databáze Microsoft Knowledge Base:
817854OPRAVA: PROSTŘEDÍ ASP.NET webové aplikace nelze doručit webu zabezpečených klientský certifikát

Vlastnosti

ID článku: 901183 - Poslední aktualizace: 22. května 2011 - Revize: 5.0
Informace v tomto článku jsou určeny pro produkt:
  • Microsoft .NET Framework 1.1 na těchto platformách
    • Microsoft Internet Information Services 6.0
    • Microsoft Internet Information Services 5.0
Klíčová slova: 
kbcode kbwebservices kbcertservices kbhowto kbinfo kbmt KB901183 KbMtcs
Strojově přeložený článek
Důležité: Tento článek byl přeložen pomocí software společnosti Microsoft na strojový překlad, ne profesionálním překladatelem. Společnost Microsoft nabízí jak články přeložené překladatelem, tak články přeložené pomocí software na strojový překlad, takže všechny články ve Znalostní databázi (Knowledge Base) jsou dostupné v češtině. Překlad pomocí software na strojový překlad ale není bohužel vždy dokonalý. Obsahuje chyby ve skloňování slov, skladbě vět, nebo gramatice, podobně jako když cizinci dělají chyby při mluvení v češtině. Společnost Microsoft není právně zodpovědná za nepřesnosti, chyby nebo škody vzniklé chybami v překladu, nebo při použití nepřesně přeložených instrukcí v článku zákazníkem. Společnost Microsoft aktualizuje software na strojový překlad, aby byl počet chyb omezen na minimum.
Projděte si také anglickou verzi článku:901183

Dejte nám zpětnou vazbu

 

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