Einführung in HTTPS

Hypertext Transfer Protocol Secure (englisch: Hypertext Transfer Protocol Secure, abgekürzt HTTPS, oft bezeichnet als HTTP over TLS, HTTP over SSL oder HTTP Secure) ist ein Netzwerksicherheits-Übertragungsprotokoll. Bevor wir es im Detail vorstellen, führen wir zunächst das gängige HTTP-Protokoll ein. HTTP ist ein Protokoll, das verwendet wird, wenn wir normalerweise Webseiten durchsuchen. Die vom HTTP-Protokoll übertragenen Daten sind unverschlüsselt, d. h. Klartext, daher ist die Verwendung von HTTP zur Übertragung privater Informationen sehr unsicher. HTTP verwendet Port 80 für die Kommunikation, während HTTPS Port 443 für die Kommunikation verwendet. In Computernetzwerken kommuniziert HTTPS über das Hypertext Transfer Protocol (HTTP), verwendet jedoch SSL/TLS, um Datenpakete zu verschlüsseln. Der Hauptzweck der Entwicklung von HTTPS besteht darin, Webservern eine Identitätsauthentifizierung bereitzustellen und die Privatsphäre und Integrität ausgetauschter Daten zu schützen. Dieses Protokoll wurde erstmals 1994 von Netscape vorgeschlagen und später auf das Internet ausgeweitet.

Wie HTTPS funktioniert

Vor der Übertragung von Daten erfordert HTTPS einen Handshake zwischen dem Client (Browser) und dem Server (Website). Während des Handshakes werden die Kennwortinformationen festgelegt, die beide Parteien zum Verschlüsseln der übertragenen Daten verwenden. Das TLS/SSL-Protokoll ist nicht nur eine Sammlung verschlüsselter Übertragungsprotokolle; es ist ein Kunstwerk, das von Künstlern sorgfältig entworfen wurde. TLS/SSL verwendet asymmetrische Verschlüsselung, symmetrische Verschlüsselung und HASH-Algorithmen. Der detaillierte Handshake-Ablauf wird wie folgt beschrieben:

  • 1) Der Browser sendet eine Reihe von Verschlüsselungsregeln, die er unterstützt, an die Website.
  • 2) Die Website wählt daraus eine Reihe von Verschlüsselungsalgorithmen und HASH-Algorithmen aus und sendet ihre eigenen Identitätsinformationen in Form eines Zertifikats an den Browser zurück. Das Zertifikat enthält Informationen wie die Website-Adresse, den öffentlichen Verschlüsselungsschlüssel und den Zertifikatsaussteller.
  • 3) Nachdem der Browser das Website-Zertifikat erhalten hat, muss er Folgendes tun: a) Die Rechtmäßigkeit des Zertifikats überprüfen (ob die ausstellende Organisation legitim ist, ob die im Zertifikat enthaltene Website-Adresse mit der besuchten Adresse übereinstimmt usw.). Wenn das Zertifikat vertrauenswürdig ist, erscheint ein kleines Schloss in der Browserleiste; andernfalls wird ein Hinweis angezeigt, dass das Zertifikat nicht vertrauenswürdig ist. b) Wenn das Zertifikat vertrauenswürdig ist oder der Benutzer ein nicht vertrauenswürdiges Zertifikat akzeptiert, erzeugt der Browser ein Passwort aus einer Zeichenfolge zufälliger Zahlen und verschlüsselt es mit dem im Zertifikat bereitgestellten öffentlichen Schlüssel. c) Mit dem vereinbarten HASH-Algorithmus die Handshake-Nachricht berechnen, die Nachricht mit der erzeugten Zufallszahl verschlüsseln und schließlich alle zuvor erzeugten Informationen an die Website senden.
  • 4) Nachdem die Website die vom Browser gesendeten Daten empfangen hat, muss sie die folgenden Vorgänge ausführen: a) Mit ihrem eigenen privaten Schlüssel die Informationen entschlüsseln und das Passwort extrahieren, mit dem Passwort die vom Browser gesendete Handshake-Nachricht entschlüsseln und überprüfen, ob der HASH mit dem vom Browser gesendeten übereinstimmt. b) Mit dem Passwort eine Handshake-Nachricht verschlüsseln und an den Browser senden.
  • 5) Der Browser entschlüsselt die Handshake-Nachricht und berechnet deren HASH. Wenn er mit dem vom Server gesendeten HASH übereinstimmt, endet der Handshake-Vorgang. Danach werden alle Kommunikationsdaten mit dem symmetrischen Verschlüsselungsalgorithmus und dem vom Browser zuvor erzeugten Zufallspasswort verschlüsselt.

Hierbei senden sich der Browser und die Website gegenseitig verschlüsselte Handshake-Nachrichten und überprüfen sie. Der Zweck besteht darin, sicherzustellen, dass beide Parteien dasselbe Passwort erhalten haben und Daten normal ver- und entschlüsseln können; dies dient als Test für die anschließende Übertragung echter Daten. Darüber hinaus sind die von HTTPS üblicherweise verwendeten Verschlüsselungs- und HASH-Algorithmen wie folgt:

  • Asymmetrische Verschlüsselungsalgorithmen: RSA, DSA/DSS
  • Symmetrische Verschlüsselungsalgorithmen: AES, RC4, 3DES
  • HASH-Algorithmen: MD5, SHA1, SHA256

Das Kommunikationssequenzdiagramm für HTTPS ist wie folgt:

Unterschiede zwischen dem HTTPS-Protokoll und dem HTTP-Protokoll:

  • Das HTTPS-Protokoll erfordert die Beantragung eines Zertifikats bei einer CA. Im Allgemeinen gibt es nur sehr wenige kostenlose Zertifikate, und es ist eine Gebühr erforderlich.
  • HTTP ist das Hypertext Transfer Protocol, und Informationen werden im Klartext übertragen, während HTTPS ein sicheres SSL-verschlüsseltes Übertragungsprotokoll ist.
  • HTTP und HTTPS verwenden völlig unterschiedliche Verbindungsmethoden und unterschiedliche Ports: Ersteres verwendet 80, Letzteres verwendet 443.
  • HTTP-Verbindungen sind sehr einfach und zustandslos.
  • Das HTTPS-Protokoll ist ein Netzwerkprotokoll, das mit SSL + HTTP aufgebaut ist, verschlüsselte Übertragung und Identitätsauthentifizierung ermöglicht und sicherer als das HTTP-Protokoll ist.

SSL-Zertifikat

Aus dem Obigen können wir verstehen, dass ein Kernbestandteil von HTTPS der Handshake vor der Datenübertragung ist, während dessen das Passwort für die Datenverschlüsselung festgelegt wird. Während des Handshakes sendet die Website ein SSL-Zertifikat an den Browser. Ähnlich wie der Personalausweis, den wir im Alltag verwenden, ist das SSL-Zertifikat der Identitätsnachweis einer Website, die HTTPS unterstützt. Das SSL-Zertifikat enthält Informationen wie den Domainnamen der Website, die Gültigkeitsdauer des Zertifikats, den Zertifikatsaussteller und den öffentlichen Schlüssel, der zur Verschlüsselung des Übertragungspassworts verwendet wird. Da das mit dem öffentlichen Schlüssel verschlüsselte Passwort nur mit dem privaten Schlüssel entschlüsselt werden kann, der beim Beantragen des Zertifikats erzeugt wurde, muss der Browser zunächst prüfen, ob der aktuell besuchte Domainname mit dem an das Zertifikat gebundenen Domainnamen übereinstimmt, bevor er das Passwort generiert, und außerdem den Zertifikatsaussteller verifizieren. Wenn die Verifizierung fehlschlägt, zeigt der Browser eine Zertifikatsfehlermeldung an. In diesem Abschnitt beschreibe ich den Verifizierungsprozess von SSL-Zertifikaten und die Sicherheitsprobleme, die einzelne Benutzer beim Besuch von HTTPS-Websites bei der Verwendung von SSL-Zertifikaten beachten müssen.

Arten von Zertifikaten

Tatsächlich gibt es viele Arten von Zertifikaten, die wir verwenden, und SSL-Zertifikate sind nur eine davon. Das Zertifikatsformat ist durch den X.509-Standard definiert. SSL-Zertifikate sind für die Übertragung öffentlicher Schlüssel verantwortlich und sind eine Art von PKI-Zertifikat (Public Key Infrastructure). Die uns häufig begegnenden Zertifikate lassen sich nach ihrem Zweck grob in die folgenden Typen einteilen:

  • 1. SSL-Zertifikate, die zur Verschlüsselung des HTTP-Protokolls, d. h. HTTPS, verwendet werden.
  • 2. Codesignaturzertifikate, die zum Signieren von Binärdateien verwendet werden, wie z. B. Windows-Kernel-Treiber, Firefox-Plugins, Java-Codesignierung usw.
  • 3. Client-Zertifikate, die zur Verschlüsselung von E-Mails verwendet werden.
  • 4. Zwei-Faktor-Zertifikate. Der im professionellen Online-Banking verwendete USB Key nutzt diesen Zertifikatstyp.

Diese Zertifikate werden alle von zertifizierten Zertifizierungsstellen ausgestellt, die wir CA-Organisationen (Certificate Authority) nennen. Je nachdem, ob der Antragsteller ein Unternehmen oder eine Einzelperson ist, sind die Arten von Zertifikaten, die beantragt werden können, unterschiedlich, und auch die Preise sind unterschiedlich. Von CA-Organisationen ausgestellte Zertifikate sind vertrauenswürdige Zertifikate. Bei SSL-Zertifikaten gilt: Wenn die besuchte Website mit der an das Zertifikat gebundenen Website übereinstimmt, kann sie die Browser-Verifizierung bestehen, ohne einen Fehler anzuzeigen.

Beantragung und Regeln für SSL-Zertifikate

SSL-Zertifikate können gegen Gebühr bei CA-Organisationen beantragt oder selbst erstellt werden. Von CA-Organisationen ausgestellte Zertifikate sind sehr teuer, und ihre Gültigkeitsdauer reicht im Allgemeinen von einem bis zu drei Jahren (unterschiedliche Jahreszahlen, unterschiedliche Preise). Nach Ablauf müssen Sie erneut bezahlen, um sie zu beantragen, daher beantragen im Allgemeinen nur Unternehmen Zertifikate. Mit der Zunahme persönlicher Websites gibt es jedoch inzwischen SSL-Zertifikatsdienste für Einzelpersonen, die relativ günstiger sind. In China können Sie eines für etwas mehr als 400 Yuan beantragen, und im Ausland gibt es sogar kostenlose SSL-Zertifikate zur Beantragung. Bei der Beantragung eines SSL-Zertifikats müssen Sie der CA-Organisation den Website-Domainnamen, die Gewerbeerlaubnis und die Identitätsinformationen des Antragstellers angeben. Der Website-Domainname ist sehr wichtig; der Antragsteller muss nachweisen, dass er der Eigentümer des Domainnamens ist. Wenn SSL-Zertifikate, die Hotmail.com und Gmail.com unterstützen, einfach so beantragt werden könnten, bräuchten Hacker keine gefälschten Zertifikate zur Täuschung zu verwenden.

Außerdem ist ein Zertifikat in der Regel nur an einen einzigen Domänennamen gebunden. Wenn die CA-Organisation gut gelaunt ist, bindet sie möglicherweise kostenlos noch einen weiteren. Wenn der bei der Beantragung gebundene Domänenname beispielsweise www.example.com ist, dann ist das Zertifikat nur dann vertrauenswürdig, wenn die Browseradresse https://www.example.com lautet. Wenn die Adresse https://tt.example.com oder https://login.example.com lautet, wird sie, da der besuchte Domänenname sich von dem an das Zertifikat gebundenen Domänennamen unterscheidet, vom Browser weiterhin als nicht vertrauenswürdig angezeigt.

CA-Organisationen bieten auch Anträge für Wildcard-Domänen an (zum Beispiel *.example.com). Eine Wildcard-Domäne entspricht der Bindung aller Subdomänen unter der Hauptdomäne, daher ist sie sehr praktisch zu verwenden, aber der Preis ist ebenfalls extrem hoch. Eine Wildcard-Domäne kostet etwa 5.000 Yuan pro Jahr, und nur Unternehmen können sie beantragen.

Schauen wir uns nun die Informationen in einem Zertifikat an:

Beim Besuch von Hotmail erfolgt eine Weiterleitung zu login.live.com. Zu diesem Zeitpunkt befindet sich ein kleines Vorhängeschloss im IE-Browser. Klicken Sie auf dieses kleine Vorhängeschloss und dann auf „Zertifikat anzeigen“, um das oben gezeigte Zertifikatsfenster zu sehen. Hier können wir sehen, dass dieses Zertifikat nur einen Zweck hat – Identitätsinformationen gegenüber einem Remote-Computer nachzuweisen. Zertifikate haben viele Verwendungszwecke, und SSL ist nur einer davon. Im Feld „Ausgestellt für“ steht der Domänenname, der bei der Beantragung des Zertifikats gebunden wurde; das darunter stehende „Ausgestellt von“ ist der Zertifikatsaussteller. Die beiden Daten unten sind der Zeitpunkt der Zertifikatsbeantragung und die Ablaufzeit. Hier können wir auf die Informationen in „Ausgestellt von“ achten. Sie enthalten die Worte „Extended Validation SSL“, was darauf hinweist, dass dieses Zertifikat ein EV-SSL-Zertifikat ist (Extended Validation SSL-Zertifikat). EV-SSL-Zertifikate haben eine Besonderheit: Sie können die Adressleiste des Browsers grün werden lassen und den Namen des Unternehmens anzeigen, dem das Zertifikat gehört, wie unten gezeigt:

Im Vergleich zu anderen Zertifikaten sind EV-SSL-Zertifikate teurer.

Das Obige beschreibt die Situation bei der Beantragung von Zertifikaten bei CA-Organisationen. Wenn eine persönliche Website nur eine verschlüsselte Übertragung benötigt, kann sie auch ein eigenes SSL-Zertifikat erstellen. Ein selbst erstelltes Zertifikat wird vom Browser nicht als vertrauenswürdig eingestuft, und beim Zugriff wird eine Warnung angezeigt, weil die Zertifikatsüberprüfung fehlschlägt.

Prozess der Zertifikatsüberprüfung

Zertifikate sind in Form einer Zertifikatskette organisiert. Beim Ausstellen eines Zertifikats muss es zunächst ein von einer Root-CA ausgestelltes Root-Zertifikat geben, dann stellt die Root-CA ein Zwischen-CA-Zertifikat aus, und schließlich stellt die Zwischen-CA das konkrete SSL-Zertifikat aus. Wir können es so verstehen: Eine Root-CA ist wie ein Unternehmen, und das Root-Zertifikat ist sein Identitätsnachweis. Jedes Unternehmen hat verschiedene Abteilungen, die Zertifikate für unterschiedliche Zwecke ausstellen. Diese verschiedenen Abteilungen sind die Zwischen-CAs, und sie verwenden Zwischenzertifikate als ihren Identitätsnachweis. Eine der Abteilungen ist speziell für die Ausstellung von SSL-Zertifikaten zuständig. Wenn das Root-Zertifikat, das Zwischenzertifikat und das schließlich angeforderte SSL-Zertifikat miteinander verknüpft werden, bilden sie eine Zertifikatskette, auch Zertifikatspfad genannt. Bei der Überprüfung eines Zertifikats ruft der Browser die Schnittstelle des Zertifikatsmanagers des Systems auf, um alle Zertifikate im Zertifikatspfad Ebene für Ebene zu überprüfen. Nur wenn alle Zertifikate im Pfad vertrauenswürdig sind, ist das Gesamtergebnis der Überprüfung vertrauenswürdig. Verwenden wir weiterhin das Zertifikat von login.live.com als Beispiel. Wenn Sie das Zertifikat anzeigen, klicken Sie auf die Registerkarte „Zertifikatspfad“, und die Anzeige sieht wie unten dargestellt aus:

Das Root-Zertifikat ist das wichtigste Zertifikat. Wenn das Root-Zertifikat nicht vertrauenswürdig ist, sind auch alle darunter ausgestellten Zertifikate nicht vertrauenswürdig. Während der Installation installiert das Betriebssystem standardmäßig einige vertrauenswürdige CA-Root-Zertifikate. Sie können "certmgr.msc" im Dialogfeld "Ausführen" ausführen, um den Zertifikat-Manager zu starten, wie unten gezeigt:

Root-Zertifikate haben eine lange Gültigkeitsdauer und unterstützen viele Verwendungszwecke, wodurch es bequem ist, Zwischenzertifikate für verschiedene Verwendungszwecktypen auszustellen. Zwischenzertifikate haben einen einzelnen Verwendungszweck und eine relativ kürzere Gültigkeitsdauer, aber eine viel längere als spezifische SSL-Zertifikate.

Wenn die SSL-Zertifikatsüberprüfung fehlschlägt, zeigen verschiedene Browser die folgenden Fehlermeldungen an:

Es gibt drei Gründe für das Fehlschlagen der SSL-Zertifikatsüberprüfung:

  • 1. Das SSL-Zertifikat wurde nicht von einer vertrauenswürdigen CA ausgestellt.
  • 2. Das Zertifikat ist abgelaufen.
  • 3. Der Domänenname der Website, auf die zugegriffen wird, stimmt nicht mit dem an das Zertifikat gebundenen Domänennamen überein.

Diese drei Gründe sind auch die Meldungen, die IE-Browser anzeigen.

Tipp: Wenn Sie eine Root-CA besonders hassen, können Sie ihr Root-Zertifikat löschen; danach sind alle von ihr ausgestellten Zertifikate nicht mehr vertrauenswürdig.

Sicherheitsprobleme bei SSL-Zertifikaten

Die häufigste Angriffsmethode gegen HTTPS ist SSL-Zertifikatsspoofing, auch SSL-Hijacking genannt, eine typische Man-in-the-Middle-Attacke. Allerdings wird SSL-Hijacking nicht nur für Angriffszwecke eingesetzt. In einigen speziellen Fällen können wir SSL-Hijacking verwenden, um reibungsloser auf das Netzwerk zuzugreifen. Darauf werde ich später eingehen.

Wenn Sie die Sicherheitswarnungen des Browsers nicht beachten, können Sie leicht Opfer von SSL-Hijacking werden, das für Angriffszwecke eingesetzt wird. Wenn ein Man-in-the-Middle im Netzwerk einen SSL-Hijacking-Angriff startet, muss der Angreifer ein SSL-Zertifikat fälschen und es an den Browser senden. Zu diesem Zeitpunkt gibt der Browser eine Warnung aus, weil das gefälschte SSL-Zertifikat nicht vertrauenswürdig ist.

Hier liegt ein Missverständnis vor. Wenn ein SSL-Zertifikat nicht vertrauenswürdig ist, bedeutet das nicht unbedingt, dass ein SSL-Hijacking stattfindet. Eine Ausnahme ist, dass manche privaten Websites sich keine legitimen SSL-Zertifikate leisten können und deshalb ihre eigenen SSL-Zertifikate erstellen, um übertragene Daten zu verschlüsseln. Wenn Sie häufig eine private Website besuchen und wissen, wofür die Website ist, müssen Sie sich über diese Situation keine Sorgen machen. Aber wenn Sie Online-Banking, Online-Bezahlung oder Unternehmenswebsites wie hotmail.com, gmail.com usw. besuchen, werden solche Websites definitiv legitime SSL-Zertifikate beantragen (außer 12306.cn). Sobald das SSL-Zertifikat nicht vertrauenswürdig ist, sollten Sie den Besuch entschlossen abbrechen. Zu diesem Zeitpunkt muss anormales Verhalten im Netzwerk vorliegen, und Nutzer von Community-Breitband sollten besonders darauf achten.

Daher müssen Sie als einzelner Nutzer wissen, welche Website Sie besuchen. Wenn Sie nur ein gewöhnlicher Internetnutzer ohne große Computerkenntnisse sind, werden Sie, glaube ich, nicht oft jene privaten Websites besuchen, die ihre eigenen SSL-Zertifikate erstellen (außer 12306.cn). Wenn Sie also nicht feststellen können, ob das Netzwerk anormal ist, brechen Sie den Besuch einfach ab, sobald es ein Problem mit dem Zertifikat gibt.

Tipp: Befolgen Sie bei 12306.cn unbedingt die Angaben der Website: „Um einen reibungslosen Ticketkauf zu gewährleisten, laden Sie bitte das Stammzertifikat herunter und installieren Sie es.“

Zum Schluss fassen wir zusammen, worauf bei der Verwendung von SSL-Zertifikaten zu achten ist:

  • 1. Installieren Sie Stammzertifikate nicht leichtfertig, es sei denn, es ist notwendig. Wenn Sie ein Stammzertifikat installieren, müssen Sie unbedingt die Quelle des Zertifikats klären.
  • 2. Bei Websites wie Online-Banking, Online-Bezahlung und wichtigen E-Mails müssen Sie sicher sein, dass das SSL-Zertifikat fehlerfrei ist. Wenn der Browser eine Fehlerwarnung zum SSL-Zertifikat ausgibt, müssen Sie den Besuch verweigern. Einige Nutzer von Community-Breitband sollten besonders darauf achten.
  • 3. Da es für Einzelpersonen inzwischen relativ günstig ist, SSL-Zertifikate zu beantragen, sollten Sie unbedingt auf Phishing-Websites achten, die über legitime SSL-Zertifikate verfügen (im Ausland häufiger). Bei Phishing-Websites prüfen Sie unbedingt den Domainnamen sorgfältig. Glauben Sie außerdem keinen Lotterie- oder Gewinnbenachrichtigungen und installieren Sie Sicherheitssoftware mit Phishing-Schutz.