HTTPS er en kompleks teknologi, da den af natur skal opfylde flere forskellige krav.
Det endelige mål med HTTPS er at tillade kommunikation mellem to parter uden at nogen andre kan se, hvad du enten anmoder om eller modtager. Uden det ville ting som netbank være utroligt farlige.
For at nå dette mål er der to separate dele.
Den første er kryptering. Dette ændrer anmodningerne mellem dig og hjemmesiden, så ingen, der er midt i anmodningen, kan forstå, hvilke data der bliver sendt. Den anden del handler om at kunne stole på, at den anden part (i dette tilfælde hjemmesiden) er, hvem de siger, de er.
At etablere tillid til, at hjemmesiden faktisk er korrekt, sker ved brug af Certifikatudstedere. Disse er etablerede organisationer, der skal overholde strenge standarder for at vise, at de er pålidelige.
En liste over accepterede certifikatudstedere er normalt gemt i din webbrowser (Chrome osv.) og potentielt i dit operativsystem som en liste over rodcertifikater.
For at en hjemmeside kan bruge HTTPS, skal den forhandle med en certifikatudsteder for at få et certifikat. Dette handler om at bevise over for certifikatudstederen, at du er, hvem du siger, du er.
For eksempel, hvis du ønskede at bruge HTTPS på din side example.com, ville du anmode om et certifikat fra en certifikatudsteder, der måske beder dig om at bevise, at du er example.com ved at hoste en fil på example.com/i-control-this-website.txt. Ejeren af hjemmesiden skal derefter installere dette certifikat på webserveren.
Når du derefter ser hjemmesiden, vil den give dig en certifikatkæde, som er en liste over certifikater, hver med information om det overordnede certifikat, der udstedte det. Ved hjælp af kryptografi kan du se på et sæt af overordnede/barn certifikater og verificere, at det overordnede certifikat blev brugt til at skabe barn certifikatet.
Målet med dette er at skabe en tillidskæde, der skal give dig mulighed for at verificere, at rodcertifikatet var ansvarligt for oprettelsen af hjemmesidecertifikatet.
I den mest simple form kan en kæde bestå af blot hjemmesidecertifikatet. Hvis dette peger på et certifikat, du stoler på (mest sandsynligt et rodcertifikat), kan det anse certifikatet for at være pålideligt.
I praksis bruges rodcertifikater meget sjældent til at signere certifikater direkte. De bruges normalt til at signere andre mellemleds certifikater, der enten kan bruges til at signere yderligere mellemleds certifikater eller hjemmesidecertifikatet.
Dette betyder, at en tillidskæde kunne bestå af 5 separate certifikater mellem dit hjemmesidecertifikat og den rodmyndighed, som din computer stoler på.
Manglende Mellemleds Certifikatkæder
En almindelig fejlkonfiguration af hjemmesider er ikke at levere alle mellemleds certifikater fra webserveren og kun levere hjemmesidecertifikatet.
Dette betyder, at browseren ikke korrekt kan afgøre, om certifikatet er pålideligt eller ej.
Dette problem har tendens til at blive mudret af, at mange moderne browsere har tendens til at inkludere almindelige mellemleds certifikater som en del af deres "accepterede certifikater". Dette betyder, at selvom den leverede certifikatkæde ikke er komplet, vil folk, der bruger Chrome og Firefox, ikke se nogen SSL-fejl, mens de bruger siden (dog vil nogle, der bruger ældre browsere, gøre det).
Fra et teknisk perspektiv er løsningen på dette (afhængigt af certifikatudstederen) at sikre, at du bruger fullchain.pem i stedet for chain.pem