12-12-2014, 16:26 door Anoniem: Een certificaat is bedoeld voor de beveiliging van de verbinding, niet voor de betrouwbaarheid van de website.
Een certificaat is
niet bedoeld voor de beveiliging van de verbinding.
12-12-2014, 16:26 door Anoniem: Een normaal certificaat hoort alleen te controleren of de domeinnaam bij de private sleutel hoort
Dat klopt een beetje.
Het
doel van een SSL certificaat is dat derden, met "enige" betrouwbaarheid, kunnen vaststellen dat de domeinnaam van een website daadwerkelijk toebehoort aan een specifieke organisatie. Bijv. in het certificaat van mijn.ing.nl vind je onder meer de volgende informatie ("CN"=common name, domeinnaam in dit geval, en "O"=organisatie):
CN = mijn.ing.nl
O = ING BANK N.V.
Het type betreffende
EV-certificaat hoort hierbij een minimale garantie te bieden voor het vertrouwen dat je, als gebruiker, mag hebben dat je daadwerkelijk met een site van ING BANK N.V. communiceert als de URL in jouw webbrowser begint met "https://mijn.ing.nl/".
Het
middel om een website te authenticeren middels een X.509 certificaat, is een public key
in het gesigneerde deel van het certificaat, waarbij de eigenaar van de website, elke connectie opnieuw, aantoont over de bijbehorende private key te beschikken (en waarbij je moet hopen dat die private key niet in verkeerde handen valt).
Terug naar het
doel: bij een
self-signed certificaat is die betrouwbaarheid nul, en bij een gratis Cloudflare certificaat is dat niet veel hoger. Ook "domain-validated" zegt niet zoveel. EV-certificaten suggereren een hogere betrouwbaarheid bij de "echtheid" van een site, maar de implementatie daarvan in webbrowsers is compleet brak.
Het eerste grote probleem met certificaten is dat webbrowsers te beperkt zichtbaar onderscheid maken tussen soorten certificaten (d.w.z. hoe nauwkeurig de certificaatuitgever heeft vastgesteld dat de domeinnaam aan de betreffende organisatie toebehoort,
en dat de aanvrager gerechtigd is dat certificaat aan te vragen
namens die organisatie), waardoor voor gebruikers het "server authenticatieniveau" niet duidelijk is.
Als gebruiker kun je in zo'n certificaat zoeken naar een "CPS" (Certification Practice Statement) URL. In het certificaat van mijn.ing.nl is dat
https://d.symcb.com/cps. Daarin vind je wat de certificate provider doet voordat deze een certrificaat "uitgeeft" (feitelijk een "certificate signing request" digitaal ondertekent waarmee de browser de echtheid van dat
certificaat kan controleren). In de praktijk gaat een doorsnee gebruiker niet op zoek naar dergelijke informatie (ik vermoed dat slechts weinigen beseffen dat dit soort informatie überhaupt beschikbaar is).
Ronduit verwarrend is dat http
geen foutmelding geeft, en https met een self-signed certificaat
wel. Die waarschuwing is domweg een zwaktebod in de plaats van een indicator van de betrouwbaarheid waarmee de
identiteit van de site is vastgesteld (is geauthenticeerd). Ooit zullen gebruikers, en daardoor webbrowser fabrikanten, inzien dat zo'n visuele "authenticiteits-betrouwbaarheid-indicator" onmisbaar is, en zal deze worden toegevoegd.
Pas
nadat de website is geauthenticeerd heeft het zin (en is het een goed idee) om de verbinding met die site te versleutelen. Op zich heeft het certificaat weinig tot niets te maken met de versleutelde verbinding (bij een Diffie-Hellman key agreement wordt helemaal niets uit het certificaat gebruikt bij de uiteindelijke versleuteling).