Konfigurace služby IIS pro použití vlastnoručně podepsaných certifikátů s aplikací včetně ověřování mapováním klientských certifikátů služby IIS – blog.

, Author

Předpokládám, že jste nyní četli můj předchozí příspěvek o tom, jak vytvořit vlastnoručně podepsané certifikáty pro vývoj, a možná jste si v něm řekli: „Hurá, skvělé! ….Ale jak je mám vlastně použít?“. Tento příspěvek na blogu vás krok za krokem provede ručním procesem konfigurace služby IIS na vašem počítači nebo serveru se systémem Windows, abyste mohli používat své vlastnoručně podepsané certifikáty spolu s ověřováním mapováním klientských certifikátů služby IIS.

Upozorňuji, že ve svých příkladech používám svůj hosting localhost a náhodné doménové jméno, ale můžete to udělat i na skutečném serveru IIS, pokud máte statickou IP adresu od poskytovatele internetových služeb nebo společnosti poskytující hosting domény a také správně nakonfigurovanou bránu firewall, směrovač atd., kde nakonec můžete na tuto adresu nasměrovat své doménové jméno. ALE nedoporučuji ani jedno, ani druhé společně s vlastnoručně podepsanými certifikáty, pokud vaši klienti/uživatelé nejsou ochotni přijímat a instalovat váš vlastnoručně podepsaný kořenový a klientský certifikát. Dobrým příkladem je uzavřená intranetová síť, kde máte přístup ke všem počítačům koncových uživatelů, protože pak můžete certifikáty nainstalovat na jejich počítače, což je nezbytné, pokud nechcete, aby vaši uživatelé dostali velké tučné varování o problémech s důvěryhodností vašeho vlastnoručně podepsaného serverového certifikátu. Pokud hledáte řešení vhodné pro komerční produkci, měli byste si certifikáty místo vlastního podepisování zakoupit. Tak a teď to máme za sebou, používám počítač s Windows 8.1 Pro, IIS 8.5 a Visual Studio Premium 2013. (Testoval jsem také s virtuálním počítačem Hyper-V se systémem Windows Server 2012 R2 na mém PC).

Instalace IIS
Pokud jste ještě nenainstalovali IIS na počítači, který bude fungovat jako hostitelský server, udělejte to stisknutím tlačítka Windows pro PC a vyhledáním „Zapnout nebo vypnout funkce systému Windows“ (nebo přejděte do Ovládacích panelů a vyhledejte). Zkontrolujte Internetovou informační službu a následující podřízené uzly. 1 kompletní instalace IIS
(Pokud používáte systém .NET 3.5, musíte zkontrolovat rozšíření .NET 3.5 a ASP.NET 3.5)

V případě systému Windows Server 2012 přejděte na ovládací panel Správce serveru ➜ klepněte na tlačítko přidat role a funkce ➜ vyberte možnost role nebo funkce.založené na funkcích a přejděte k dalšímu kroku ➜ Vyberte server ➜ Povolte roli serveru s názvem Webový server (IIS) a následující podřízené prvky Server IIS

Také se ujistěte, že je zaškrtnuta volba Vývoj aplikací s následujícími podřízenými prvky Server IIS application dev

Klikněte na OK a nechte systém Windows nainstalovat.

Vytvoření našeho ukázkového projektu
Pro účely této ukázky vytvoříme opravdu jednoduchou miniaplikaci, kterou budeme hostovat v lokálním IIS. (Můžete také jen forknout můj přímo na Githubu)

V aplikaci Visual Studio vytvořte novou prázdnou webovou aplikaci a odkaz na web api 5 New Project

Budeme potřebovat jen reeeealně jednoduchý kontrolér:

using System.Web.Http;namespace IISWithCertificatesSample.WebApi.Controllers{ public class CatsController : ApiController { public IHttpActionResult Get() { return Ok("A lot of cats meowing for food"); } }}

Nyní byste měli být schopni spustit obě trasy (F5) a surfovat na url localhostu pomocí /api/cats (můj vypadá jako http://localhost:62172/api/cats). Paráda, pojďme tuto aplikaci hostovat pomocí našeho lokálního IIS.

POZNÁMKA: Aplikaci již nebudeme spouštět přímo z Visual Studia (F5), které je nastaveno na použití IIS Express.

Konfigurace IIS
Otevřete Správce IIS (tlačítko Windows + vyhledávání). Přidejte novou webovou stránku a fond aplikací s naší ukázkovou aplikací. (Klepněte pravým tlačítkem myši na Webové stránky ➜ Přidat webovou stránku) Cesta musí být ve složce, kde jsou umístěny dokumenty vašeho webu, takže pokud jste webovou stránku publikovali, nasměrujte cestu tam. Pro tento velmi jednoduchý příklad použiji pouze přímou cestu k projektu ve Visual Studiu.

Nyní pojďme tento web lokálně hostovat zadáním názvu hostitele AKA. název vaší domény. 7 yourdomain.com

Protože budu hostovat pouze lokálně, musím web přidat do svého místního souboru hosts, aby se IP adresa localhostu svázala s názvem hostitele. To provedu tak, že spustím Poznámkový blok jako správce a otevřu soubor hosts v cestě: %systemroot%\System32\drivers\etc soubor hosts

Na konec přidám následující text: 127.0.0.1 yourdomain.com www.yourdomain.com 8 hosts file

Nyní, kdykoli budu surfovat na yourdomain.com a www.yourdomain.com na svém počítači, bude stránka s nově přidanými vazbami přeložena na IP adresu 127.0.0.1 (což je IP adresa localhostu).

Přidáme www. Vazba na váš web také ve Správci IIS 9 Vazby IIS 10 přidat vazbu http 11 doména s www12 obě http přidány

Surfujte na název domény, který jste nastavili ve vazbách s nebo bez www. a přidejte koncovku /api/cats a měli byste dostat mňoukající kočky. (Pokud ne, zkuste vyprázdnit mezipaměť)

DŮLEŽITÉ: Toto se bude dít POUZE na místním počítači, protože jsme změnili soubor hosts, aby přesměroval naše požadavky přidaného doménového jména na IP adresu localhostu. Je to určeno pro vývoj a pro možnost otestování změn před jejich nasazením na skutečný webhostingový server.

Zabezpečení serveru pomocí SSL
Nyní chceme zabezpečit kočky přidáním certifikátu SSL na náš server.
Ve Správci IIS přejděte na svůj server (Horní část stromu vlevo) ➜ Přejděte dolů a poklepejte na položku Certifikáty serveru. 13 Server IIS

(Pokud je zde již váš vlastnoručně podepsaný certifikát, přeskočte dopředu na kroky týkající se vazeb)

Potřebujeme importovat náš vlastnoručně podepsaný certifikát serveru, abychom umožnili komunikaci https s protokolem SSL, proto klikněte na tlačítko Importovat… 14 Importovat certifikát serveru

Klikněte na … a najděte svůj .pfx, vyplňte heslo (parametr -po v dávkovém souboru příkazu) a klikněte na tlačítko OK 15 procházet server cert

Váš certifikát je nyní přidán 16 cert přidán

Dvakrát klikněte na nově přidaný cert a ověřte, zda je důvěryhodný (Vaše vlastnoručně podepsané certifikáty byly přidány do správných úložišť v mém předchozím příspěvku, takže ještě jednou: Přečtěte si ho, pokud jste se právě ztratili ;-))

17 důvěryhodný serverový cert

Tak zatím je to dobré! Nyní můžeme přidat vazbu https, stejným způsobem jako předtím, ale zvolíme https s portem 443, vaši doménu jako název hostitele a v rozevíracím seznamu najdeme váš vlastnoručně podepsaný certifikát

18 vazby přidat ssl

Zaškrtněte políčko Server Name Indication, které umožní našemu serveru mít nainstalováno více certifikátů na stejné IP adrese tím, že v první fázi SSL handshake pošle název hostitele. Stejné kroky zopakujte pro přidání SSL pro www.yourdomain.com, ale s certifikátem, kde se název CN shoduje s názvem domény, nebo s certifikátem se zástupným znakem
19 https www se zástupným znakem

Naše vazby jsou prozatím kompletní

19 Všechny vazby

Tadaa, nyní můžete použít https://yourdomain.com/api/cats a https://www.yourdomain.com/api/cats

POZN: Firefox nepoužívá úložiště certifikátů systému Windows, takže kořenovou certifikační autoritu budete muset přidat ručně. Přejděte do Nastavení Firefoxu ➜ Možnosti ➜ Upřesnit ➜ Zobrazit certifikáty ➜ Autority ➜ importovat váš soubor CARoot.cer

Ověřování mapováním klientských certifikátů IIS
Tímto jsme prošli použití kořenového certifikátu a serverového certifikátu a pravděpodobně vás zajímá, co dělat s klientským certifikátem, který jsme také vytvořili v mém předchozím příspěvku. Ten je určen pro situace, kdy například potřebujeme ověřit klienty bez přístupu pomocí přihlašovacího jména a hesla, ale spíše chceme, aby server požádal klienta o předložení jeho certifikátu, a pokud je správný, klient bude vpuštěn. To lze provést pomocí mapování Many-To-One nebo One-To-One a já vám ukážu, jak obojí provést ručně ve Správci IIS.

Nejprve musíme tuto funkci nainstalovat, takže znovu vyvolejte „Zapnout nebo vypnout funkce systému Windows“ a nainstalujte následující 20 Mapování klientského certifikátu IIS

Přikážeme našemu serveru, aby vyžadoval od klienta certifikát SSL 21 Nastavení SSL 22 použít require ssl

Poté musíme nakonfigurovat server, aby věděl, který klientský certifikát má ověřit, proto přejděte do Editoru konfigurace a vyberte sekci iisClientCertificateMappingAuthentication (můžete také zadat cestu system.webServer/security/authentication/iisClientCertificateMappingAuthentication do pole Section) 24 iisClientCertMapAuth section

Many-To-One Mappings
Pokud chcete mapovat více klientských certifikátů na jednoho uživatele, je tento přístup to, co potřebujete. Takto můžete také sdílet klientské certifikáty tak, že klientský certifikát (a kořenovou certifikační autoritu, protože se jedná o self-signing certifikát) nainstalujete ostatním uživatelům na libovolném počítači, aby získali přístup, pokud klientský certifikát odpovídá kritériím pravidel mapování. Hodilo by se to například v situaci, kdy byste chtěli, aby všichni uživatelé v organizaci získali přístup prostřednictvím jediného mapování uživatelů.

Povolte ověřování mapování klientských certifikátů 25 enable client auth

Pro přidání mapování klikněte na … z manyToOneMappings 26 add mapping

Tady přidáte uživatele, kterým chcete udělit přístup.27 add new mapping

Vlastnosti mapování vyplňte a opakujte pro každého uživatele, kterému chcete nastavit přístup nebo odepřít přístup. Nezapomeňte, že na mmc všech uživatelů musíte mít nainstalovaný klientský certifikát a certifikát kořenové certifikační autority.
28 manytoone mapping

DŮLEŽITÉ: Aby to fungovalo, musíte zadat platné uživatelské jméno a heslo, a protože můj počítač je server, přihlašovací údaje budou moje uživatelské jméno a heslo Windows.

Nyní musíme vytvořit nějaká pravidla, která budou s tímto mapováním souviset, aby server mohl určit, zda je klientovi povolen přístup, nebo ne. Je to tak klikněte na vlastnost rules a tlačítko …

29 přidat pravidlo

Jako příklad přidám jedno pravidlo, kde server zkontroluje klientský certifikát, zda je podepsán správnou kořenovou certifikační autoritou. Pokračujte v přidávání dalších pravidel pro větší bezpečnost, další dokumentaci naleznete v referenci Mapování IIS Many-To-One.
31 pravidlo

Nezapomeňte aplikovat změny ve Správci IIS, takže zavřete okna s pravidly a mapováním a klikněte na Použít 32 aplikovat změny

Otevřete nové okno prohlížeče inkognito, abyste se ujistili, že začínáte s čistým štítem, pokud jde o mezipaměť a soubory cookie, a zadejte url adresu s /api/cats a zobrazte výzvu prohlížeče k zadání certifikátu. Vyberte ClientCert a klikněte na ok, abyste získali přístup ke kočkám. 33 ok client cert

Pokud to nefunguje, ujistěte se, že je váš klientský certifikát v úložišti CurrentUser/Personal i v úložišti certifikátů prohlížeče. Pokud ano, přejděte do Ovládacích panelů ➜ Možnosti internetu ➜ Obsah a klikněte na Vymazat stav SSL. 34 vymazat stav ssl

Otevřete nové inkognito okno a zkuste to znovu, prohlížeč by vás nyní měl vyzvat k zadání klientského certifikátu.

POZNÁMKA: Nezapomeňte, že jak jsem již vysvětlil dříve, Firefox má vlastní úložiště certifikátů, takže abyste jej mohli použít, musíte klientský certifikát importovat do „Vašich certifikátů“.

Mapování jeden na jednoho
Projdeme si také mapování jeden na jednoho. Tento přístup znamená, že pro každé mapování uživatele potřebujeme individuální klientský certifikát. Mapování many-to-one můžete buď zakázat a používat stejný certifikát a uživatele, nebo vytvořit nové. Vraťte se do Editoru konfigurace a znovu otevřete část iisClientCertificateMappingAuthentication. Klepněte na tlačítko … sekce oneToOneMappings. 35 enable one-to one mappings

Pro přidání mapování k certifikátu musíme exportovat veřejný klíč souboru s klientským certifikátem. Ten můžete exportovat z konzoly pro správu počítače (stiskněte tlačítko Windows a vyhledejte mmc) Přichytněte osobní úložiště certifikátu místního počítače a exportujte klientský ssl certifikát, který chcete použít, bez soukromého klíče ve formátu base64. Export client cert S privátním klíčem base64 export

Klikněte pravým tlačítkem myši na nově exportovaný certifikát a otevřete jej pomocí Poznámkového bloku. V samotném certifikátu odstraňte všechny řádkové zlomy. Odstraňte řádkové zlomy

Teď to zkopírujte do pole vlastností certifikátu mapování a vyplňte zbytek 38 přidat mapování uživatele

DŮLEŽITÉ: Aby to fungovalo, musíte zadat platné uživatelské jméno a heslo, a protože můj počítač je server, přihlašovací údaje budou uživatelské jméno a heslo systému Windows.

Znovu nezapomeňte změny použít. 39 apply changes

A je to, vyzkoušejte to a po výzvě vyberte certifikát, který jste namapovali na právě namapovaného uživatele.

Doufám, že pro vás byl tento příspěvek užitečný a v dalším příspěvku se budu zabývat tím, jak používat vlastnoručně podepsané certifikáty společně s Windows Azure a jak konfigurovat IIS pomocí kódu C#, podívejte se na něj zde: http://blog.jayway.com/2015/04/21/configure-a-windows-azure-cloud-service-to-use-your-self-signed-certificates-for-iis-client-certificate-mapping-authentication/

Mějte se hezky =)

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna.