image

Waarom het web nog niet achter HTTPS zit

dinsdag 16 november 2010, 00:10 door Redactie, 14 reacties

Het aanbieden van alle websites over HTTPS in plaats van HTTP is een stuk eenvoudiger gezegd dan gedaan. Door de Firefox plugin Firesheep is 'session-sidejacking' een probleem dat massaal in de aandacht staat. Hierbij kunnen aanvallers de accounts van Twitter en Facebook-gebruikers kapen, ook al loggen die via HTTPS in. Het gebruik van SSL voor de complete sessie is de enige manier om luistervinken op onbeschermde draadloze netwerken op afstand te houden. Het gebruik van HTTPS kan echter voor 10% tot 20% meer processorbelasting zorgen, zegt Julien Sobrier van Zscaler Research. Een opmerkelijk getal, aangezien onderzoek van Google uitwijst dat de belasting minder dan één procent is.

Toch is dit niet het enige obstakel. Ook de toegenomen vertraging speelt een rol. Het opzetten van een SSL-verbinding vereist meer pakketjes. Eén HTTPS transactie bestaat al uit vier SSL handshake packets en zes data packets. Door alle extra bewerkingen zou dit het laden van websites vertragen.

Waarschuwing
Ook is het volgens Sobrier een uitdaging voor Content Delivery Networks (CDN), die snel content aan gebruikers willen leveren. Doordat veel partijen een alias gebruiken omdat ze niet willen dat de download van akamai.com zichtbaar is, kan dit voor een SSL-waarschuwing zorgen, aangezien het SSL-certificaat voor Akamai en niet voor de alias is uitgegeven.

Een ander probleem is dat HTTPS pagina's alleen externe content van andere HTTPS pagina's mogen bevatten, anders verschijnt er een waarschuwing dat er ook content van HTTP pagina's wordt aangeboden. Elke website moet ervoor zorgen dat zijn partners ook op HTTPS zitten. De waarschuwingen die browsers tonen zijn namelijk "eng", merkt Sobrier op. Zo waarschuwt Internet Explorer 8 gebruikers dat ze websites met SSL-fouten niet moeten bezoeken.

Reacties (14)
16-11-2010, 08:05 door Anoniem
Nog een probleem met HTTPS is dat (in ieder geval bij oudere browsers) het certificaat wordt gecontroleerd voordat de hostname wordt doorgegeven. Aangezien in het certificaat ook de hostname zit, betekent dat dat er op een IP-adres (met een default port) maar één HTTPS website actief kan zijn. Met HTTP kunnen dat er veel en veel meer zijn. Om alle websites over te zetten op HTTPS, zijn er dus veel meer IP-adressen nodig. IPv4 zit nu al krap. Zolang IPv6 nog niet volledig is uitgerold, of zolang een nieuwe standaard van SSL (die meer HTTPS websites op één IP-adres mogelijk maken) nog niet in alle browsers zitten (o.a. IE in Windows XP), is het dus onmogelijk om alles op HTTPS te zetten.
Zie http://en.wikipedia.org/wiki/Server_Name_Indication
16-11-2010, 09:13 door [Account Verwijderd]
[Verwijderd]
16-11-2010, 09:22 door Anoniem
Goede artikel, ik vroeg me altijd af waarom iedereen niet gewoon SSL als standaard hanteerde.
Het zal gewoon een overgangsfase zijn, net als IPv6. Maar laten we maar hopen dat dit wat sneller gaat.
Ik ben wel nieuwsgierig naar hoe langzamer websites laden, 5% procent trager ofzo misschien?
16-11-2010, 09:34 door _Peterr
Zie eerste reactie...
Zolang we nog niet masaal over zijn op IPv6 is het dus godsonmogelijk om alles SSL te draaien.
16-11-2010, 10:14 door Anoniem
SSL kost ook weer moeite voor opsporingsdiensten ipv clear text.
16-11-2010, 10:37 door Mysterio
Oh, gezien de processorbelasting (leuker kunnen we het niet maken...) zal ik HTTPS vermijden op mijn 486 met inbelmodem verbinding.

Het vraagt eigenlijk om een geheel andere aanpak van het fenomeen internet. Een reorganisatie... Awel, prima dat het nog niet overal toepasbaar is, het lijkt me wel zaak om privacy gevoelige sites ASAP volledig te reorganiseren. De hobby site van tante Bep geloof ik wel.
16-11-2010, 10:41 door jaapd
Voor veel dingen is HTTPS niet nodig. Een groot nadeel van HTTPS is dat je geen gebruik van caching in proxies e.d. kan maken. De webserver zal het dus extra druk hebben en de wachttijd van bezoekers zal ook toenemen.
16-11-2010, 10:46 door [Account Verwijderd]
[Verwijderd]
16-11-2010, 11:52 door Anoniem
Als ze nou gewoon stoppen met paginas te maken die 50 tcp-sessies nodig hebben om alle elementen op te bouwen maakt die overhead voor ssl ook niet meer uit. Moet je es opletten hoe snel een text-only browser is vergeleken met een 'grote' browser.
16-11-2010, 13:29 door eMilt
Door pe0mot: Als ik secure naar aap.com surf wil ik niet onderwater via een insecure verbinding naar mijnspam.com geleid worden.
Sobrier snapt dus echt niet waar het om gaat, waarom we volledige https willen.
Dat is niet wat hij bedoeld. Hij doelt er op dat (sommige) browsers een waarschuwing tonen als een pagina die geladen wordt over HTTPS ook resources (bijv. images, stylesheets of javascript) laad van niet-HTTPS URL's. Als je op je website dus koppelingen hebt met andere partijen dan moeten die dus ook allemaal HTTPS ondersteunen.

Voorbeeldje: de Twitter button bijvoorbeeld kan je nog steeds niet via HTTPS laden (http://dev.twitter.com/pages/tweet_button_faq#https). Dit komt omdat Twitter gebruik maakt van CDN's.
16-11-2010, 13:47 door eMilt
Alhoewel ik het met Julien Sobrier eens ben met betrekking tot de extra latency bij de handshake en de problemen met SSL bij het gebruik van 3rd party content of CDN's ben ik het met hem oneens dat SSL 10% tot 20% meer belasting geeft op de servers. Google heeft al aangetoond dat het niet zo is en ik kan ook uit eigen ervaring met enkele websites die volledig onder SSL draaien zeggen dat het een onmeetbare invloed heeft.

Alle browsers van tegenwoordig (en sinds minstens 10 jaar) ondersteunen persistent connections (HTTP keep alive) en openen dus slechts enkele (meestal twee) verbindingen met de server. Je hebt die HTTPS handshake dus normaal gesproken maar twee keer per sessie. De extra CPU belasting als gevolg van de encryptie is nihil aangezien alleen de HTTPS handshake met public/private key encryptie (= relatief langzaam) werkt. Daarna spreken server en client een symmetrische sleutel af en wordt alles middels 128 of 256 bits symmetric encryptie versleuteld. Dit is aanzienlijk sneller en veel minder belastend voor de CPU.

Grote websites met webfarms kiezen meestal voor HTTP offloading naar een speciale HTTPS proxy of geïntegreerd met de load balancer(s). De servers zelf draaien dus gewoon HTTP maar al het verkeer wordt door de proxy/loadbalancer vertaald van/naar HTTPS. Anders zou je namelijk op iedere server een SSL certificaat moeten installeren. Nu hoeft dat maar op één of enkele plekken.
16-11-2010, 18:35 door Anoniem
Door pe0mot: ...Weet iemand of dit standaard is in de moderne IIS/Apache servers en de gebruikelijke browsers (oftewel de oplossing en geen probleem)?

van http://en.wikipedia.org/wiki/Server_Name_Indication#Support

Browsers

Browsers with support for TLS server name indication:[6]

* Mozilla Firefox 2.0 or later
* Opera 8.0 or later (the TLS 1.1 protocol must be enabled)
* Internet Explorer 7 (Vista or higher, not XP) or later
* Google Chrome (Vista or higher. XP on Chrome 6 or newer[7]. OS X 10.5.7 or higher on Chrome 5.0.342.1 or newer)
* Safari Safari 3.2.1 and newer on Mac OS X 10.5.6 and Windows Vista or higher, not XP
* Any Apple iDevice running iOS4 has support for TLS server name indication.
* Android
[edit] Servers

* Apache 2.2.12 or later using mod_ssl[8][9][10] (or alternatively with experimental mod_gnutls[11])
o See doc at [1]
* Cherokee if compiled with TLS support
* Versions of lighttpd 1.4.x and 1.5.x with patch [12], or 1.4.24+ without patch[13]
* Nginx with an accompanying OpenSSL built with SNI support
* acWEB[14] with OpenSSL 0.9.8j and later (on Windows)
[/quote]
16-11-2010, 18:36 door Anoniem
ps. helaas werkt Server Name Indication niet op alle Internet Explorer versies onder Windows XP.
17-11-2010, 16:00 door Anoniem
Door jaapd: Voor veel dingen is HTTPS niet nodig. Een groot nadeel van HTTPS is dat je geen gebruik van caching in proxies e.d. kan maken. De webserver zal het dus extra druk hebben en de wachttijd van bezoekers zal ook toenemen.
SSL(de S in HTTPS) kan je gewoon offloaden. De meeste hosting partijen gebruiken gewoon HTTP intern, en zetten een SSL proxy/tunnel tussen het internet en de cache/webserver.
Reageren

Deze posting is gelocked. Reageren is niet meer mogelijk.