Inhoud

TLS Server Name Indication (SNI)

Op het moment dat een bezoeker een website bezoekt, maakt zijn browser verbinding met de webserver en stuurt daarbij zowel de naam van de gewenste pagina als de naam van het domein mee. Hierdoor weet de webserver om welke website het gaat, en kan vervolgens de juiste bestanden sturen.

Bij het gebruik van SSL wordt dit wat ingewikkelder. Om een SSL verbinding op te zetten dient de webserver het certificaat van de website naar de browser te sturen, nog voordat deze weet in welke pagina de browser geinteresseerd is. Daarom dient elke website die SSL gebruikt een eigen IP-adres te hebben. De webserver kan dan op basis van het IP-adres bepalen welke website de bezoeker bezoekt, en kan het juiste certificaat sturen.

Gezien het aantal beschikbare IP-adressen beperkt is, is het op lange termijn niet praktisch dat voor elke website een eigen IP-adres nodig is. De TLS extensie Server Name Indication (SNI), verhelpt dit probleem. Browsers die deze extensie ondersteunen geven tijdens het opzetten van de beveiligde verbinding reeds meteen de naam van het gewenste domein door, zodat de server weet welk certficiaat hij moet sturen.

Browser ondersteuning

Helaas ondersteunen nog lang niet alle browsers deze extensie. Waardoor het op dit moment nog steeds nodig is voor elke website een eigen IP-aders te reserveren.

De stand van zaken is:

Browser Ondersteuning vanaf versie
Mozilla Firefox 2.0
Opera 9 (ondersteuning in eerdere versies aanwezig maar stond standaard uit)
Internet Explorer 7 / Windows Vista ( http://blogs.msdn.com/ie/archive/2005/10/22/483795.aspx )
Konqueror toekomstige release ( http://bugs.kde.org/show_bug.cgi?id=122433 )
Safari geen ondersteuning

Webservers

Daarnaast is het natuurlijk ook vereist dat de webserver ondersteuning voor SNI heeft.

OpenSSL

Een aantal webservers maken voor het gebruik van de OpenSSL library voor het afhandelen van de encryptie.

Het goede nieuws is dat deze sinds versie 0.9.8f code voor TLS extensies bevat. Het slechte dat dit standaard uitgeschakeld is. OpenSSL dient dan opnieuw gecompileerd te worden ( “./configure –enable-tlsext ; make ; make install” )

Webserver ondersteuning

Webserver Maakt gebruik van OpenSSL Ondersteuning voor SNI
Apache met mod_ssl ja nee (Status)
Apache met mod_gnutls nee ja
Lighttpd ja Experimenteel. Patch

Meer informatie

RFC 3546 (over TLS extensies): http://www.ietf.org/rfc/rfc3546.txt

SNI gebuiken met Apache/mod_gnutls: http://www.g-loaded.eu/2007/08/10/ssl-enabled-name-based-apache-virtual-hosts-with-mod_gnutls/

SNI ondersteuning in Lighttpd (Lighty): http://trac.lighttpd.net/trac/ticket/386