Sdílet prostřednictvím


Zabezpečení přenosu HTTP

Při použití protokolu HTTP jako přenosu poskytuje zabezpečení implementace SSL (Secure Sockets Layer). Protokol SSL se široce používá na internetu k ověření služby klientovi a k zajištění důvěrnosti (šifrování) kanálu. Tento článek vysvětluje, jak funguje PROTOKOL SSL a jak je implementovaný ve Windows Communication Foundation (WCF).

Základní SSL

Jak funguje SSL, je nejlépe vysvětleno prostřednictvím typického scénáře, v tomto případě webu banky. Web umožňuje zákazníkovi přihlásit se pomocí uživatelského jména a hesla. Po ověření může uživatel provádět transakce, jako je zobrazení zůstatků účtu, plateb faktur a přesun peněz z jednoho účtu do druhého.

Když uživatel poprvé navštíví web, zahájí mechanismus SSL řadu jednání, označovaný jako handshake, s klientem uživatele (v tomto případě webový prohlížeč). Protokol SSL nejprve ověří bankovní web pro zákazníka. Jedná se o zásadní krok, protože zákazníci musí nejprve vědět, že komunikují se skutečným webem, a ne s falšováním, který se je pokusí nalákat, aby zadali uživatelské jméno a heslo. Ssl toto ověřování zajišťuje pomocí certifikátu SSL poskytnutého důvěryhodnou autoritou, jako je VeriSign. Logika vypadá takto: VeriSign vouches for the identity of the bank site. Vzhledem k tomu, že prohlížeč důvěřuje VeriSign, web je důvěryhodný. Chcete-li se podívat na VeriSign, můžete to provést také kliknutím na logo VeriSign. To představuje prohlášení pravosti s datem vypršení platnosti a tím, komu je vydáno (na bankovní web).

Aby bylo možné zahájit zabezpečenou relaci, klient odešle na server ekvivalent "hello" spolu se seznamem kryptografických algoritmů, které může použít k podepisování, generování hodnot hash a šifrování a dešifrování. V reakci odešle web zpět potvrzení a jeho volbu některého z sad algoritmů. Během tohoto počátečního handshake obě strany posílají a přijímají nonces. Nonce je náhodně generovaná část dat, která se používají v kombinaci s veřejným klíčem lokality k vytvoření hodnoty hash. Hodnota hash je nové číslo odvozené ze dvou čísel pomocí standardního algoritmu, například SHA1. (Klient a lokalita také vyměňují zprávy, aby souhlasily s tím, který hashovací algoritmus se má použít.) Hodnota hash je jedinečná a používá se pouze pro relaci mezi klientem a lokalitou k šifrování a dešifrování zpráv. Klient i služba mají původní nece a veřejný klíč certifikátu, takže obě strany můžou vygenerovat stejnou hodnotu hash. Klient proto ověří hodnotu hash odeslanou službou pomocí (a) pomocí schváleného algoritmu k výpočtu hodnoty hash z dat a (b) porovnání s hodnotou hash odeslanou službou; pokud se oba shodují, pak má klient jistotu, že hodnota hash nebyla manipulována. Klient pak může tuto hodnotu hash použít jako klíč k zašifrování zprávy, která obsahuje další novou hodnotu hash. Služba může zprávu dešifrovat pomocí hodnoty hash a obnovit tuto druhou až konečnou hodnotu hash. Shromážděné informace (neces, veřejný klíč a další data) jsou nyní známé oběma stranám a je možné vytvořit konečnou hodnotu hash (nebo hlavní klíč). Tento konečný klíč se odešle zašifrovaný pomocí hodnoty hash další k poslední. Hlavní klíč se pak použije k šifrování a dešifrování zpráv pro zbytek relace. Vzhledem k tomu, že klient i služba používají stejný klíč, označuje se také jako klíč relace.

Klíč relace je také charakterizován jako symetrický klíč nebo "sdílený tajný klíč". Symetrický klíč je důležitý, protože snižuje výpočet vyžadovaný oběma stranami transakce. Pokud by každá zpráva požadovala novou výměnu hodnot nonce a hash, výkon by se zhoršil. Konečným cílem SSL je proto použít symetrický klíč, který umožňuje volně proudit zprávy mezi oběma stranami s větším stupněm zabezpečení a efektivity.

Předchozí popis je zjednodušená verze toho, co se stane, protože protokol se může lišit od webu po lokalitu. Je také možné, že klient i lokalita oba generují neces, které jsou algoritmicky kombinovány během metody handshake, aby se při procesu výměny dat přidala větší složitost, a proto ochrana.

Certifikáty a infrastruktura veřejných klíčů

Během metody handshake služba také odešle klientovi certifikát SSL. Certifikát obsahuje informace, jako je datum vypršení platnosti, vydávající autorita a identifikátor URI (Uniform Resource Identifier) webu. Klient porovná identifikátor URI s identifikátorem URI, který původně kontaktoval, aby zajistil shodu, a také zkontroluje datum a vydávající autoritu.

Každý certifikát má dva klíče, privátní klíč a veřejný klíč a oba dva klíče se označují jako dvojice výměnných klíčů. Stručně řečeno, privátní klíč je známý pouze vlastníkovi certifikátu, zatímco veřejný klíč je čitelný z certifikátu. Klíč lze použít k šifrování nebo dešifrování hodnoty hash, hodnoty hash nebo jiného klíče, ale pouze jako protichůdné operace. Pokud například klient šifruje pomocí veřejného klíče, může zprávu dešifrovat pouze lokalita pomocí privátního klíče. Podobně platí, že pokud se lokalita šifruje pomocí privátního klíče, klient může dešifrovat pomocí veřejného klíče. To zajišťuje klientovi, že se zprávy vyměňují pouze s vlastníkem privátního klíče, protože pouze zprávy zašifrované pomocí privátního klíče je možné dešifrovat pomocí veřejného klíče. Lokalita je ujištěna, že vyměňuje zprávy s klientem, který je šifrovaný pomocí veřejného klíče. Tato výměna je zabezpečená pouze pro počáteční metodu handshake, což je důvod, proč se mnohem více provádí při vytváření skutečného symetrického klíče. Veškerá komunikace ale závisí na službě, která má platný certifikát SSL.

Implementace SSL pomocí WCF

Přenosové zabezpečení PROTOKOLU HTTP (nebo SSL) je poskytováno externě službě WCF. SSL můžete implementovat jedním ze dvou způsobů; rozhodovacím faktorem je hostovaná vaše aplikace:

  • Pokud jako hostitele WCF používáte Internetová informační služba (IIS), nastavte službu SSL pomocí infrastruktury služby IIS.

  • Pokud vytváříte aplikaci WCF v místním prostředí, můžete vytvořit vazbu certifikátu SSL na adresu pomocí nástroje HttpCfg.exe.

Použití služby IIS pro zabezpečení přenosu

IIS 7,0

Informace o nastavení služby IIS 7.0 jako zabezpečeného hostitele (pomocí PROTOKOLU SSL) najdete v tématu Konfigurace protokolu SECURE Sockets Layer ve službě IIS 7.0.

Pokud chcete nakonfigurovat certifikáty pro použití se službou IIS 7.0, přečtěte si téma Konfigurace certifikátů serveru ve službě IIS 7.0.

Internetová informační služba 6.0

Informace o nastavení služby IIS 6.0 jako zabezpečeného hostitele (pomocí PROTOKOLU SSL) najdete v tématu Konfigurace protokolu Secure Sockets Layer.

Informace o konfiguraci certifikátů pro použití se službou IIS 6.0 najdete v tématu Certificates_IIS_SP1_Ops.

Použití httpCfg pro SSL

Pokud vytváříte aplikaci WCF v místním prostředí, použijte nástroj HttpCfg.exe .

Další informace o použití nástroje HttpCfg.exe k nastavení portu s certifikátem X.509 najdete v tématu Postupy: Konfigurace portu s certifikátem SSL.

Viz také