Geschrieben von

SSL, TLS und HTTPS

MarTech/AdTech

Abgesicherte Datenverbindungen

Die Absicherung von Datenverbindungen zwischen zwei Systemen im Internet ist immer sehr wichtig gewesen. Bei den Systemen kann es sich um die Datenübertragung zwischen Client und Server handeln oder auch zwischen zwei Servern. Vor allem beim Online-Banking und Online-Shopping ist eine sichere Datenverbindung essentiell. Die Verschlüsselung der Verbindung verfolgt dabei folgende Hauptziele:

  • Vertraulichkeit: Die verschlüsselte Verbindung garantiert dem Nutzer, dass persönliche Daten beim Online-Shopping nicht von Dritten abgefangen werden können.
  • Datenintegrität: Dadurch wird garantiert, dass eine Manipulation der übertragenen Daten nicht möglich ist. Beim Online-Kauf bspw. darf die angegebene Adresse nicht manipuliert werden können.
  • Authentizität: Mit Authentizität ist gemeint, dass der Nutzer die Identität des Online-Anbieters überprüfen kann, um sich bspw. vor Fake-Shops schützen zu können.

Um Datenverbindungen abzusichern und um diese genannten Hauptziele sicherzustellen, kommen Verschlüsselungsalgorithmen zum Einsatz. Die Daten werden dabei während der Übertragung kodiert, damit sie keiner einsehen kann.

Vereinfacht ausgedrückt bedeutet das an einem einfachen Beispiel erklärt:

  • Wird der Text “Das ist eine Nachricht” zwischen Browser und Server versendet, würde man nach dem Abfangen der Nachricht diese auch als Klartext “Das ist eine Nachricht” sehen können, wenn die Verbindung nicht verschlüsselt ist (HTTP).
  • Wird der Text “Das ist eine Nachricht” zwischen Browser und Server versendet, würde man nach dem Abfangen der Nachricht diese nur als “CwKHasfhYhjks23sdjfjhASFHSe7e8” sehen können, wenn die Verbindung verschlüsselt ist (HTTPS).

Nur wenn man den geeigneten Schlüssel besitzt, kann man die verschlüsselte Nachricht entziffern, um ein “Das ist eine Nachricht” wieder zu sehen.

Was bedeuten SSL, TLS und HTTPS?

SSL steht für Secure Sockets Layer. Es wurde von Netscape erfunden. Da heutzutage die Schwachstellen bekannt sind wurde als Nachfolger TLS entwickelt. TLS steht für Transport Layer Security. Man spricht heutzutage sehr oft noch von SSL, im Grunde ist aber meist TLS gemeint.

HTTPS steht für Hypertext Transfer Protocol Secure und ist die Verwendung von HTTP über TLS (oder SSL). Ob eine Website HTTP oder HTTPS nutzt, erkannt man in der Adresszeile des Browsers durch das http oder https vor der Domain. Meist wird dies von Browsern auch optisch hervorgehoben.

Die verschiedenen SSL-Zertifikat-Arten

Hier wird in drei verschiedenen Zertifikatsstufen unterschieden:

  • Self-signed: Das einfachste Zertifikat ist ein selbst generiertes. Nachteil ist, dass die Browser bei diesem Zertifikat eine Warn- bzw. Fehlermeldung ausgeben. Somit ist es eher für Testumgebungen geeignet. Ein eigenes Zertifikat kann z.B. mit Tools wie OpenSSL erstellt werden.
  • Domain Validation: Auch als Low-Assurance-Zertifikat bekannt. Dieses Zertifikat wird von einer autorisierten Stelle ausgegeben. Antragsteller und Besitzer der Domain werden dabei geprüft.
  • Organizational Validation: Auch als High-Assurance-Zertifikat bekannt. Hier wird zusätzlich der Inhaber validiert. Man muss also beweisen, dass es sich tatsächlich um die Firma handelt.
  • Extended Validation: Der Zertifikatsinhaber wird hier auch noch validiert. Dieses erkannt man an der grünen Adresszeile. Banken, Versicherungen, etc. nutzen dieses Zertifikat.

Weiters kann man SSL-Zertifikate nach dem Umfang unterteilen:

  • Single-Name-Zertifikat: Dieses Zertifikat kann nur für einen Host genutzt werden. Beispiel: www.demirjasarevic.com. Möchte man eine Subdomain zusätzlich mit HTTPS versehen, so muss man ein zusätzlichen Zertifikat bestellen. Single-Name-Zertifikate können bei Domain Validation, Organizational Validation und Extended Validation eingesetzt werden.
  • Wildcard-Zertifikat: Das Wildcard-Zertifikat (*) kann für *.demirjasarevic.com genutzt werden. Heißt: Es können Subdomains mit abgesichert werden. Dieses kann nur bei Domain Validation und Organizational Validation eingesetzt werden.
  • Multi-Domain-Zertifikat: Hier können mehrere Domains abgesichert und unter einem Zertifikat zusammengefasst werden. Dieses kann mit Extended Validation genutzt werden.

Zusätzlich existiert noch “Let’s Encrypt”. Dies ist ein Zertifikat, welches durch den Zusammenschluss mehrerer Unternehmen entstanden ist. Ziel ist es, kostenlose und sichere Zertifikate auszustellen (Domain- und Multidomain-SSL-Zertifiakte).

Einrichtung und Validierung

Möchte man ein SSL-Zertifikat für die eigene Website einsetzen, muss zunächst die Bestellung aufgegeben werden. Danach geht es direkt in die Validierungsphase. Wie die Validierung durchgeführt wird, hängt von der gewählten Zertifikatsstufe ab.

Beim Self-signed-Zertifikat gibt es keine Validierung. Das ist auch der Grund, warum Browser hier eine Fehlermeldung zurückgeben. Für die “Live-Website” wird man auf eines der anderen Zertifikate zurückgreifen müssen.

Bei der Bestellung wird dabei ein privater Schlüssel generiert, der später beim SSL-Handshake wichtig ist. In diesem Zuge wird auch ein Certificate Signing Request (CSR) erstellt. Der CSR enthält allgemeine Informationen und den Domainnamen. Diese Anfrage (Request) wird dann an die Zertifizierungsstelle (Certification Authorities oder “CA”) geschickt. Die Stelle muss dies nun validieren und antwortet mit dem Zertifikat (CRT). Zusätzlich legt die Zertifizierungsstelle einen öffentlichen Schlüssel ab. Nun ist das SSL-Zertifikat nutzbar. Dazu muss der private Schlüssel auf dem Server installiert werden. Grundsätzlich gilt: Mit dem öffentlichen Schlüssel werden die Nachrichten verschleiert. Um die Nachricht wieder zu entschlüsseln, braucht man den privaten Schlüssel (und das geht nur mit diesem).

Im Anschluss muss man seine Identität bestätigen. Hier werden meist 3 Möglichkeiten angeboten:

  • Es wird ein Link per E-Mail geschickt, der bestätigt werden muss.
  • Ein Stück Code wird auf einer HTML-Seite hinterlegt und hochgeladen.
  • Es wird ein DNS-Record (TXT) erzeugt.

Beim Domain-SSL-Zertifikat wäre man an dieser Stelle eigentlich auch schon fertig. Bei allen organisations-geprüften Zertifikaten (Organization-SSL-Zertifikat, Extended-SSL-Zertifikat, Wildcard-SSL-Zertifikat) sind weitere Schritte notwendig. Es werden weitere Unterlagen eingefordert und meist findet noch einmal ein Telefongespräch statt.

Möchte man ein Zertifikat von Let’s Encrypt einbinden, muss man etwas anders vorgehen. Hierzu kann man mit ZeroSSL ein Zertifikat erstellen. Um es einzubinden, sollte man sich zunächst an den eigenen Hosting-Provider wenden. Meist stellen diese die notwendigen Anleitungen zur Verfügung.

Technische Funktionsweise (Handshake) beim Aufruf

Den Kommunikationsprozess startet der Browser. Dieser Prozess wird als SSL-Handshake bezeichnet. Sobald der Browser eine sichere Website anfordert passiert folgendes:

  1. Client-Hello: Zunächst wird eine Nachricht an der Webserver gesendet. Diese enthält Informationen, welche Verschlüsselungs- und Kompressionsalgorithmen der Browser unterstützt. Außerdem wird eine Pseudozufallszahl mitgesendet.
  2. Server-Hello: Der Server antwortet mit einer Nachricht, die ebenfalls Informationen zu den Algorithmen und eine Pseudozufallszahl enthält.
  3. Server-Hello-Done: Der Server arbeitet noch ein Stück weiter. Es wird zunächst die stärkste Verschlüsselung gewählt, die beide Seiten unterstützen. Zudem wird die Identität geprüft und bestätigt. Sobald dies fertig ist, wird eine Server-Hello-Done-Nachricht inkl. öffentlichen Schlüssel geschickt.
  4. Prüfung Zertifikat: Nun prüft der Browser das Zertifikat und gleicht es über eine Liste mit Zertifizierungsstellen ab. Hier möchte der Browser sichergehen, dass das Zertifikat gültig ist.
  5. pre-master-secret: Der Browser berechnet nun – mittels der beiden Zufallszahlen, die während der Kommunikation erstellt wurden – ein pre-master-secret. Dieses wird mittels dem öffentlichen Schlüssels (Public Key) verschlüsselt.
  6. ClientKeyExchange: pre-master-secret wird nun an den Server geschickt.
  7. Entschlüsselung: Der Server entschlüsselt nun die Daten. Die mit einem öffentlichen Schlüssel verschlüsselten Daten können nur mit dem passenden privaten Schlüssel entschlüsselt werden. Der private Schlüssel wurde während der Einrichtung vergeben und auf der Server installiert (siehe oben).

SSL-Algorithmen

Es gibt verschiedene kryptographische Verfahren zum verschlüsseln von Informationen. Die am weit verbreitesten sind:

  • RSA: “RSA” ist eine Zusammensetzung der ersten Buchstaben der Nachnamen der Entwickler des Algorithmus (Rivest, Shamir und Adleman). Die Ver- und Entschlüsselung basiert auf einem privaten und öffentlichen Schlüssel.
  • DSA: Steht für “Digital Signature Algorithm”. Hier werden mit RSA zusammen verschiedene Algorithmen für das Signieren und Verschlüsseln eingesetzt.
  • ECC: Die Abkürzung steht für “Elliptic Curve Cryptography”. Dieser verspricht mehr Sicherheit und Leistung bei kürzeren Schlüsseln. Dies führt wiederum dazu, dass weniger Rechenleistung benötigt wird und eine Verbindung schneller aufgebaut werden kann. Optimal für Mobile.

Weiterleitung von HTTP zu HTTPS

Wird eine Website, die auf HTTP läuft auf HTTPS umgestellt, dürfen die Weiterleitungen nicht vergessen werden. Nutzer und Suchmaschinen sollen auf die neue URL geleitet werden. Am besten setzt man dazu den Status Code 301 (permanente Weiterleitung) ein. Bei einem Apache-Server kann man folgende Zeilen dazu in die Konfigurationsdatei schreiben:

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

Aus SEO-Sicht ist es auch denkbar, dass man HTTP und HTTPS parallel laufen lässt – sollte man z.B. keinen Zugriff auf den Server haben. Dann ist es jedoch wichtig, dass die HTTP-Versionen per Canonical auf die HTTPS-Versionen zeigen, um Duplicate Content zu vermeiden.

HTTP Strict Transport Policy

HTTP Strict Transport Policy wird mit HSTS abgekürzt. Dabei handelt es sich um einen speziellen Header. Damit weißt man die Browser an innerhalb einer selbst definierten Zeit die Website nur noch direkt mit HTTPS anzusteuern. Damit unterbindet man einen Angriff, wo versucht werden könnte auf HTTP umzuleiten. Mehr dazu gibt im SELFHTML-Wiki.

Mixed Content

Von Mixed Content spricht man, wenn auf einer HTTPS-Seite auf HTTP-Inhalte referenziert wird. Dann kommt es zu einem Hinweis im Browser, dass die Website unsichere Inhalte besitzt. Dies kann wiederum für Angriffe genutzt werden. Bei Mixed Content unterscheidet man zwischen:

  • Passiver Mixed Content: Dazu gehören audio (src-Attribut), video (src-Attribut), img (src-Attribut) und object.
  • Aktiver Mixed Content: Dazu gehören script (src-Attribut), link (src-Attribut), XMLHttpRequest, iframe (src-Attribut), object (data-Attribut) und URLs, die im CSS verwendet werden.

Um den Mixed-Content-Warnhinweis in Browsern zu vermeiden, sollten alle Links von HTTP auf HTTPS angepasst werden.

SSL/TLS und SEO

Seit 2014 ist HTTPS ein Ranking-Faktor bei Google. Bei der Ranking-Bewertung kann eine Website dadurch einen Bonus bekommen. HTTPS hat aber auch indirekt Auswirkungen auf das Ranking. Nutzer vertrauen einer HTTPS-Seite eher als einer HTTP-Seite. Dies kann zu besseren Klickraten führen, die wiederum in die Ranking-Berechnung fließen können.

Aus SEO-Sicht sind noch folgende Informationen relevant:

Bez. Mixed Content und SEO: Für den Googlebot ist es kein Problem, wenn Inhalte sowohl über HTTP und HTTPS erreichbar sind. Der Googlebot wird in diesem Fall die SSL-Version bevorzugen. Als Faustregel sollte man sich dabei merken:

  • Wenn Ressourcen über HTTPS verfügbar und eingebunden sind, dann perfekt.
  • Wenn Ressourcen über HTTPS verfügbar, aber über HTTP eingebunden, dann kann der Bot damit umgehen. Bei HTTPS-Seiten wird der Bot versuchen alle Ressourcen zunächst über SSL zu laden.
  • Wenn Ressourcen bei HTTPS-Seiten nur über HTTP verfügbar sind, dann kann es passieren, dass der Bot diese überspringt und nicht für das Rendering berücksichtigt.