Server Name Indication a IIS

Vydáno: 6.3.2012

Server Name Indication

Je způsob, jakým lze vyřešit nedostatek šifrovaného připojení k webové stránce - doméně (pomocí https), která je hostovaná na stejné IP adrese jako jiná webová stránka - doména s https. Server Name Indication (SNI) je rozšíření, díky němuž dokáže server při připojení klienta zjisti, na kterou doménu se chce klient podívat a podle toho vrátit správný serverový certifikát (platný pro danou doménu).

Situace před IIS 8

Bohužel Windows servery, až do příchodu IIS 8 ve Windows Server 8 tuto možnost nenabízí. Proto pokud chcete za jednu veřejnou IP adresou schovat více https domén (například webovou stránku dostupnou přes https a Exchange Server s https OWA) nezbývá než mít pro každou tuto doménu jeden Windows Server a vlastní aplikaci, která umí SNI přečíst a přeposlat data správnému serveru.

Toto řešení však není vhodné pro web hostingové společnosti, protože je nutí provozovat pro každou https doménu vlastní (byť virtuální) server.

Vlastní řešení

Tento problém jsme museli řešit i my a proto jsme si tuto aplikaci napsali. Aplikace běží na jednom ze serverů a naslouchá na portu jiném než 443 (https výchozí). Firewall požadavky na naší veřejnou IP na port 443 pošle této aplikaci. Ta přečte SNI a vytvoří spojení k serveru (ve vnitřní síti) obsluhující doménu požadovanou klientem a následně do tohoto spojení začne kopírovat veškerá data přicházející od klienta a opačně. Data nedešifruje, ani to není technicky možné.

Naše aplikace (SSL Redirektor) je tedy velice jednoduchá Windows Service a zvládá obsluhovat desítky klientů (včetně mobilních telefonů přistupujících k Exchange Active Syncu), aniž by zatěžovala procesor.

Pro inspiraci přikládáme část kódu, která vyčte název serveru (doménu) z packetu přijatého SSL Redirectorem od klienta (webového prohlížeče).:

SSL Redirector - přečtení SNI z packetu

Podpora v IIS 8

Microsoft přidal slibovanou podporu SNI do nového Windows Serveru 8, kde lze nyní vytvořit více vazeb (Binding) s https pro různé hosty s různými certifikáty. U druhé a další vazby je nutné zaškrtnou políčko Require Server Name Indication. Je tak možné hostovat na jednom Windows Serveru několik webů, několik domén a přitom mít pro každou vlastní SSL certifikát. A to je pro web hostingové společnosti dobrá zpráva.

IIS Require Server Name Indication