IPv4 besparen, SSL certificaten op één IP adres?

De afgelopen jaren zijn er al veel berichten geweest over de slinkende voorraad IPv4 adressen. Niet alleen access providers maar ook steeds meer hosting providers zien hun voorraad IP adressen aanzienlijk kleiner worden.

Waar hosting providers voorzichtiger worden met het uitgeven van IP adressen en steeds hogere kosten per IP adres gaan rekenen komen er aan de andere kant meer verplichtingen voor het gebruik van beveiligde verbindingen. Zo hadden we al langer regelgeving vanuit de Wet Bescherming Persoonsgegevens (artikel 13) en de PCI Security Standaard. Deze regels zorgde er onder andere voor dat e-commerce keurmerken als Thuiswinkel.org de beveiliging van persoonsgegevens over SSL verplicht zijn gaan stellen. Nu we een aantal jaar later zien we dat ook bedrijven als Facebook ontwikkelaars verplichten elke applicatie over een beveiligde verbinding te laat communiceren.

Ondertussen kunnen we stellen dat het gebruik van SSL certificaten eerder de regel dan de uitzondering aan het worden is. Allemaal een goede zaak voor de bescherming van (persoons)gegevens, maar met de snel afnemende voorraad van IP adressen brengt dit ook wel enkele uitdagingen of zelfs problemen me zich mee.

Ik spreek regelmatig hosting providers welke keuzes hebben moeten maken tussen een klant welke een extra IP adres nodig heeft om een SSL certificaat te kunnen installeren en een klant welke een server wil afnemen. Beide producten hebben hun eigen IP adres nodig, als hosting provider is een server waarschijnlijk een onderdeel van je corebusiness en levert die server ook nog eens extra geld in het laatje maar je wilt ook die bestaande klant niet in de kou laten staan. Een moeilijke keuze!

Waarom werkt Name based virtual hosting niet?
In een ver verleden draaide elke website op een eigen IP adres. Omdat het internet explosief groeide is er een methode ontwikkeld om meerdere websites op een enkel IP adres te kunnen hosten, ook wel name based virtual hosting genoemd. Een veel gestelde vraag is dan ook waarom dit niet zou kunnen wanneer je een SSL beveiligde verbinding gebruikt? Eigenlijk is het antwoord daarop niet heel ingewikkeld.

Een verbinding van een browser naar een server vindt nooit plaats door te verbinden naar een domeinnaam, een domeinnaam is slechts een makkelijk te onthouden naam voor een IP adres. De browser maakt dus een verbinding met een een IP adres, bij de server aangekomen weten we dus nog niet om welke website het gaat. Dit staat vermeld in een “Host” header welke wordt meegestuurd naar de server door de browser.

Maar wanneer er gebruik wordt gemaakt van een SSL certificaat wordt alle informatie welke wordt uitgewisseld tussen de server en de browser versleuteld zodat deze niet kan worden gelezen door derden. Dus ook deze “host” header welke door name based virtual hosting wordt gebruikt om aan te geven naar welke website een verbinding wordt gemaakt.

Een logische vraag is dan ook of we deze gegevens niet gewoon kunnen ontsleutelen om dan vervolgens alsnog naar de “Host” header te kijken. Maar elke website heeft zijn eigen SSL certificaat en de informatie welke is uitgewisseld kan alleen met het bijbehorend certificaat worden gedecodeerd. In het geval dat er dus meerdere websites op één IP adres gehost worden weet de server niet met welk certificaat hij deze informatie kan decoderen.

Is Server Name Indication (SNI) de oplossing?
Om dit probleem te verhelpen is er in 2003 een extensie uitgebracht voor het TLS (voorheen SSL) protocol. Deze zeer simpele extensie voegt de hostname van de website toe aan het initiële contact van de browser naar de server, waardoor de server weet met welk SSL certificaat de resterende informatie ontsleuteld kan worden.

Deze methode werkt inmiddels voor het merendeel van de internetgebruikers. Helaas heeft Microsoft nooit support voor Server Name Indication aan Windows XP (en dus alle versies van Internet Explorer op Windows XP) toegevoegd. Ook zijn er nog een aantal mobiele besturing systemen als Blackberry en Android 2.x die geen support hebben voor SNI. Daardoor kan vandaag de dag nog altijd ruim 10% van de internet gebruikers beveiligde websites die op SNI draaien niet bezoeken.

De oplossing
In de afgelopen maanden heb ik namens GlobalSign een oplossing bedacht voor de 10% gebruikers die geen support hebben voor Server Name Indication. De oplossing bestaat uit een programma dat wordt geïnstalleerd op de server of loadbalancer. Dit speciaal door GlobalSign ontwikkelde programma zal automatisch een certificaat aanvragen en valideren zodra er een nieuw SSL certificaat op de server wordt geïnstalleerd, vervangen of verwijderd.

Met deze methode wordt er gebruikt gemaakt van twee SSL certificaten. Eerst wordt er een domein (DV), bedrijfs (OV) of uitgebreid (EV) gevalideerd SSL certificaat geïnstalleerd per website en vervolgens één welke geldig is voor alle namen van de individuele SSL certificaten op dat IP adres.

Via deze simpele methode kunnen honderden SSL websites worden gehost op één enkel IP adres zonder dat dit problemen geeft bij de 10% oudere systemen welke nog niet compatibele zijn met Server Name Indication (SNI).


Paul van Brouwershaven is Business Development Director voor EMEA bij GlobalSign. Als voormalig CTO van een Nederlandse hosting provider en met al meer dan 10 jaar ervaring in de hosting en certificaat industrie heeft Paul een unieke kijk op de markt. GlobalSign is een van ‘s werelds langst gevestigde Certificate Authorities en is onder andere uitgeroepen tot winnaar van de “SSL Certificate Product Line Strategy Award” van 2011 door Frost & Sullivan.

Over Paul van Brouwershaven