SNI neboli Server Name Indication je způsob jak na jedné IP adrese provozovat více domén na protokolu HTTPS.
Proč je SNI potřeba
V pradávných dobách internetu se předpokládalo, že každý stroj bude mít svou vlastní IPv4 adresu. Nikdo si nedovedl představit, že se internet rozroste a prostě jich bude nedostatek. Proto také byla navržena šifrovaná komunikace uživatel – IP adresa.
Standardní připojení probíhá tak, že si počítač uživatele zjistí z DNS jaká IP adresa odpovídá doméně, kam se chce dostat. Následně na tuto IP adresu pošle přes port 443 (určený pro komunikaci HTTPS) pozdrav serveru. Ten obsahuje žádost o šifrovanou komunikaci, jaké verze protokolu umí, nastavení šifrování. Server pozdrav příjme a odpoví mu že šifrovanou komunikaci umí, jaké verze protokolu podporuje, nastavení šifrování a k tomu ještě certifikát serveru. Počítač uživatele si certifikát serveru ověří. Komunikace se zašifruje pomocí šifrovacích klíčů a pak už vše jede jen šifrovaně.
Problém je v tom, že teprve poté, v rámci navázané šifrované komunikace, pošle počítač uživatele serveru název domény s kterou chce komunikovat. Jenomže certifikát se vystavuje pro určitou doménu. V případě, že jedna IP adresa je jedna doména to nevadí. Pokud však na webserveru je domén více, tak to nebude fungovat. Není možné už v navázané komunikaci měnit certifikáty.
Jak to řeší SNI
V podstatě SNI není nic jiného, než poslání názvu domény, kterou chce uživatel navštívit ještě předtím než požádá o certifikát. Server pak ví, který certifikát má vybrat pro nastolení bezpečné komunikace.
Samozřejmě tím musíte slevit trochu z bezpečnosti. U standardního řešení je totiž vidět z komunikace jen kdo komunikuje s kým, respektive jen IP adresy. U SNI se přenáší nešifrovaně ještě doména.
Co je k SNI potřeba
Především obě strany, jak klient tak i webserver, musí SNI umět. Jedná se však o záležitost starou více jak dvanáct let. Webservery s ním nemají problém již řadu let, většina internetových prohlížečů také ne. Výjimkou je Windows XP, který se stále ještě občas používá.
Tento článek byl byl přečten 2341 krát