Nasadit moře virtuálních webů na jeden jediný server dnes není vůbec žádný problém (naopak, je to běžná praxe). Vše může bez problémů jet i na jedné IPv4 adrese, kterých, jak asi víte, je teď už kritický nedostatek. Problémem je, že takto mohou weby jet jen přes HTTP, ale už ne přes HTTPS. Proč je tomu tak? Přistupujete-li k nějakému webu, třeba na www.shadow.cz, protože si chcete přečíst tento článek, zašle váš prohlížeč serveru následující požadavek:
GET /blog/1106 Host: www.shadow.cz
Jak je patrné, webový server běžící na příslušné IP adrese z požadavku zjistí, ke kterému webu chcete přistupovat, a zobrazí vám požadovanou stránku. Na jedné IP adrese tak můžou běžet klidně tisíce webů, resp. virtuálních webů (virtual host).
Když chcete k serveru přistupovat přes HTTPS, je situace jiná. Prohlížeč totiž musí nejprve vytvořit šifrované spojení, a teprve potom může přes toto spojení zaslat požadavek s názvem virtuálního webu, ke kterému chcete přistupovat. Webový server tedy nemá žádnou šanci poznat, který certifikát (ty jsou obvykle vydávány pro jednu konkrétní doménu) má prohlížeči naservírovat.
Řešení tohoto problému samozřejmě existuje, je jím rozšíření TLS protokolu (což je nástupce SSL protokolu) s názvem SNI (Server Name Indication), které problém řeší tím, že klient dodá jméno serveru, ke kterému se chce připojit, ještě před tím, než mu server odešle příslušný certifikát.
Situace však není až tak růžová. Servery SNI jakž takž už nějakou dobu podporují. Celé SNI tedy v tuto chvíli stojí a padá především na podpoře prohlížečů. Což o to, takový Firefox podporuje SNI od verze 2.0 (prostředek 2006), ale u IE je situace jiná. Ten sice SNI umí také (od IE 7), jenomže ne na XP, které jsou bohužel stále velice rozšířené. Dokonce ani aktuální osmička na XP stále SNI nepodporuje. Microsoft zde skutečně má očekávání nezklamal, stále brzí pokrok jako brzdila TV Nova digitalizaci. A tak vám na XP nezbyde než uživatelům sdělit, aby vyměnili ošoupaný a neschopný IE za něco produktivnějšího. Jenomže k tomu, abyste to jako provozovatelé webů mohli udělat, musí váš web být schopen toto uživatelům sdělit, což bude těžké, pokud se uživatelům bude zobrazovat chybové hlášení o tom, jak je použitý certifikát nebezpečný a že vzdálený server je určitě nějaký podvodník, který chce uživatele na dálku sežrat. Ach jo.
Abych nenadával jen na Microsoft, ani Google se svým Androidem a Chromem v podpoře SNI neoslnil. Na XP musíte použít až šestku (vydána v září 2010), jinak vám stačí 5.0.342.1 z března 2010. No a co se Androidu týče, tam to možná půjde, ale až ve verzi 3.0, která dosud nebyla vydána. Dřívější verze SNI prostě nepodporují.
Jak dlouho budeme muset čekat, než bude SNI přístupné z běžně dostupného klientského softwaru? Stihneme to ještě před přechodem na IPv6?
