Tags voor dit FAQ item:
Apache NGinx SNI

In welke mate heeft dit artikel uw vraag beantwoordt?

Score van 3 sterren, gebaseerd op 2 beoordelingen

Wat is Server Name Indication (SNI)?

Laatste bijgewerkt: 14/06/2018

Server Name Indication is een recente uitbreiding van het TLS en SSL protocol die een browser toelaat om aan het begin van de SSL verbinding aan te geven met welke hostname de browser verbinding zoekt. Het grote voordeel van SNI is dat hierdoor meerdere SSL certificaten aan één en hetzelfde IP-adres van een webserver kunnen gekoppeld worden, en er niet langer één apart IP-adres per SSL website moet voorzien worden.

Het HTTP protocol ondersteunt al sinds versie 1.1 het concept van name-based virtual hosting. Aan het begin van de verbinding met de webserver geeft de browser aan met welke hostname hij wil verbinden, en deze hostname wordt uitgelezen uit de host headers die meegegeven worden in de browser request. Bij een SSL verbinding is dit standaard niet mogelijk, omdat de handshake van de SSL-verbinding plaats vindt voor de browser request ontsleuteld wordt en de webserver kan nagaan welke hostname er gevraagd wordt.
Websites die op hetzelfde IP-adres worden gehost moeten daardoor noodgedwongen gebruik maken van hetzelfde SSL certificaat, of elk een eigen IP-adres hebben, wat met de huidige schaarste van IPv4 adressen niet aangewezen is.

SNI lost dit probleem dus op. SNI is een uitbreiding van het TLS protocol waarbij de hostname als "onderdeel" van de SSL/TLS handshake wordt verzonden.
De webserver kan zo de juiste website selecteren en het juiste certificaat aan de browser voorschotelen.

Jammer genoeg is SNI nog een redelijk nieuwe technologie, waardoor niet alle browsers en webservers SNI ondersteunen. Ongeveer 15% van de browsers ondersteunt SNI niet, en zal bij gebrek hieraan het default certificaat van de webserver te zien krijgen, wat leidt tot een mismatch tussen de naam op het certificaat en de naam van de website. Ondertussen is SNI een ingeburgerde standaard, maar oudere smartphones, operating systemen of oudere webbrowsers kunnen nog problemen hebben met SNI.

Een mogelijke oplossing is om gebruik te maken van een wildcard SSL certificaat, dat een domein en al zijn subdomeinen kan identificeren. Deze oplossing werkt op alle browsers, maar brengt geen zoden aan de dijk als er verschillende niet aan elkaar verwante domeinen op een webserver gehost worden, wat steeds het geval is bij shared webhosting.

Een ander alternatief is het gebruik van een SAN of multi-domein SSL certificaat, dat wel toelaat om een aantal niet-verwante domeinnamen op één certificaat onder te brengen. Certificate Authorities leggen wel beperkingen op aan het maximum aantal domeinen op een SAN certificaat. Daarnaast wordt een SAN certificaat uitgegeven aan één enkele organisatie, zodat bezoekers aan een website www.domein.com bij de organisatiegegevens van het certificaat telkens de bedrijfsgegevens van Kinamo zullen zien, en niet die van de eigenaar van de website, wat evenmin ideaal is.