SSL Zertifikat

Zertifikate, SSL, TLS und HTTPS – ein Crashkurs

Wir sind an dem Thema SSL, TLS, https, Zertifikate und Verschlüsselungsprotokolle nun so oft „vorbeigeschrammt“, dass ich mal näher darauf eingehen muss. Leider ist das wie so oft „nicht so einfach“ und falls Sie sich noch nie wirklich mit dem Thema beschäftigt haben, sollten Sie einen Moment innehalten und versuchen die Zusammenhänge zu verstehen. Hier ein kurzer Crashkurs mit wichtigen Begriffen und kurzen Erklärungen.

SSL/TLS

SSL ist die Abkürzung für Secure Sockets Layer und ist ein Verschlüsselungsprotokoll für die Datenübertragung im Internet. Bis zur Version 3.0 heisst es SSL, alle Versionen danach heissen TLS (Transport Layer Security). Diese Umbenennung fand schon im Jahr 1999 statt. Die Version TLS 1.0 entspricht der Version SSL 3.1. Die aktuelle Version von TLS ist 1.2.

In Zukunft und im weiteren Verlauf dieses Blogeintrags werde ich die Bezeichnung TLS verwenden.

Verschlüsselungsprotokoll und Schlüsselverteilungsproblem

Ein Verschlüsselungsprotokoll ist eine besondere Art des Netzwerkprotokolls. Eine grosse Herausforderung bei allen Verschlüsselungsverfahren ist das Schlüsselverteilungsproblem. Beide Teilnehmer müssen einen Schlüssel besitzen, um die Nachrichten zu ver- bzw. zu entschlüsseln.

Die einzige Möglichkeit verschlüsselt zu kommunizieren war lange Zeit die Übersendung des Schlüssels per Boten oder eben ihn persönlich zu überbringen!

Um diesen Aufwand zu vermeiden wurden in den siebziger Jahren des letzten Jahrhunderts symetrische und asymetrische Verschlüsselungsverfahren entwickelt.

Symmetrisches Verfahren

Beim symmetrisches Verfahren kommunizieren beide Partner mit demselben Schlüssel. Die Schlüssel müssen also sicher übertragen werden.

Asymmetrisches Verfahren

Beim asymetrischen Verfahren, auch Public-Key Verfahren genannt, erzeugt ein Benutzer ein Schlüsselpaar, das aus einem geheimen (private) und einem öffentlichen (public) Schlüssel besteht. Der öffentliche Schlüssel kann „öffentlich“ ausgetauscht werden. Er ermöglicht es jedem, Daten für den Inhaber des privaten Schlüssels zu verschlüsseln. Nur der Besitzer des geheimen Schlüssels kann diese Daten wieder entschlüsseln.

Damit entfällt die „komplizierte, geheime“ Übertragung des Schlüssels. Der öffentliche Schlüssel kann bedenkenlos geteilt werden werden und das Schlüsselverteilungsproblem ist gelöst.

Aber:

Um das Schlüsselpaar zu erzeugen, benötigt man eine zufällige Zahl. Und Zufall ist nicht ganz einfach zu erzeugen auf einem Computer. Normalerweise benutzt man dafür einen Zufallszahlengenerator (ein Stück Software). Diese Zufallszahlengenratoren können manipuliert werden (Beispiel 1, Beispiel 2). Im Artikel Ein Backup mit Duply hatten wir bereits das Problem mit der Entropie (dem Zufall).

Zweites aber:

Da der öffentliche Schlüssel jedem zur Verfügung steht, ist nicht sicher gestellt, dass genau dieser öffentliche Schlüssel auch dem gewünschten Empfänger zugeordnet werden kann. An dieser Stelle kommen digitale Zertifikate ins Spiel, die den öffentlichen Schlüssel einem privaten Schlüsselinhaber zuordnen, also gewissermassen zertifizieren, dass der öffentliche Schlüssel zu der entsprechenden Person oder Firma gehört.

Drittes aber:

Die asymetrische Verschlüsselung ist langsamer im Vergleich zur symmetrischen Verschlüsselung.

TLS kombiniert beide Verfahren

TLS ist ein hybrides Protokoll, es kombiniert symmetrische und asymmetrische Verfahren.

TLS funktioniert folgendermassen:

  1. Ein Client baut eine Verbindung zum Server auf (Aufruf von https://… im Browser)
  2. Der Server schickt dem Client sein Zertifikat
  3. Der Client überprüft ob Zertifikat und Servername zusammenpassen und schickt dem Server entweder eine mit dem öffentlichen Schlüssel des Servers verschlüsselte Zufallszahl oder beide Parteien berechnen ein gemeinsames Geheimnis (Diffie Hellman Schlüsseltausch)
  4. Aus der Zufallszahl oder dem Geheimnis wird ein Schlüssel berechnet, der dann beiden Parteien zur Verfügung steht und die dann folgende Kommunikation schützt (symmetrisches Verfahren).

Implementierungen des Protokolls finden sich in den Bibliotheken OpenSSL und GnuTLS.

Wichtige Anwendungsfälle für TLS, die auch hier im Blog immer wieder vorkommen, sind die Protokolle HTTP, POP3, SMTP, NNTP, SIP, IMAP, XMPP, IRC, LDAP, FTP und OpenVPN.

Hinweis: In diesem Zusammenhang haben Sie bestimmt schon vom Heartbleed-Bug gehört. Bei diesem „Fehler“ konnte ein „Angreifer“ über Jahre den Arbeitspeicher der beteiligten Partner auslesen und dort private Schlüssel, Benutzernamen und Passworte abgreifen. Der Web Comic xkcd erklärt Heartbleed sehr anschaulich:

HTTP und HTTPS

TLS-Verschlüsselung wird zum grössten Teil zur Absicherung des HTTP Protokolls verwendet. HTTP steht für Hypertext Transfer Protocol und ist das unverschlüselte Kommunikationsprotokoll im WWW. Wenn die Kommunikation über HTTP und TLS abgewickelt wird, spricht man vom HTTPS Protokoll (Hypertext Transfer Protocol Secure).

Wenn Sie beispielsweise Websites über das unverschlüsselte HTTP Protokoll

  • in einem ungesicherten WLAN ansehen, kann der Klartext Ihrer Kommunikation von jedem „Angreifer“ in Reichweite des WLANs mitgelesen werden.
  • in einem kabelgebundenen Netz oder verschlüsseltem WLAN ansehen, kann der Klartext von allen Teilnehmern des Netzes mitgelesen werden.

Wenn Sie Ihre Kommunikation über HTTP/TLS, also HTTPS abwickeln, so ist ein Mitlesen zwar möglich, aber der Netzwerkverkehr ist verschlüsselt und kann nicht „einfach so“ entschlüsselt werden.

Digitale Zertifikate

Ein digitales Zertifikat bestätigt bestimmte Eigenschaften von Personen und Objekten. Sie können Zertifikate selbst erzeugen oder bei einer Zertifizierungsstelle kaufen. Die technischen Vorgänge sind bei selbst zertifizierten und bei gekauften Zertifikaten die gleichen. Sie sind also „gleich sicher“. Der Unterschied besteht im Vertrauen in den Austeller des Zertifikats. Wenn Sie mit eine HTTPS Verbindung mit unserem Testserver herstellen (https://serverblogger.ch), erhalten Sie die Meldung Invalid Certificate.

Invalid Certificate
Invalid Certificate
Je nach Browsertyp erhalten Sie eine ähnliche Meldung. Der Text ist etwas irreführend. Das Zertifikat ist nicht ungültig, sondern einfach selbst zertifiziert. Die Situation ist ein vergleichbar mit einem Zertifikat über Ihren Bildungsstand. Sie könnten sich selbst zertifizieren, dass Sie einen bestimmten Kenntnisstand oder Bildungsabschluss haben. Die meisten Menschen würden dieser Bestätigung vermutlich wenig Glauben schenken (auch wenn sie wahr ist). Wenn dagegen eine dritte Instanz, wie die entsprechende Schule oder Ausbildungsstätte Ihren Kenntnisstand bestätigt, sieht die Sache schon ganz anders aus.

Wenn Sie auf die Website https://www.nsa.gov gehen, so vertraut Ihr Browser dem Zertifikat.

SSL Zertifikat
SSL Zertifikat
Es wurde von der Zertifizierungsstelle Geo Trust ausgegeben und ist gültig bis zum 02.12.2015. Ihr Browser ordnet das Zertifikat als gültig ein und stuft damit die Site als vertrauenswürdig ein. Damit ein Browser unterscheiden kann, welcher Zertifizierungsstelle er vertraut, und welcher nicht, schaut er einfach in eine Liste der Zertifizierungsstellen. Im Firefox Browser finden Sie die Liste der Authorities in den Sicherheitseinstellungen oder online hier.
BuiltInCAs Firefox
BuiltInCAs Firefox
Ihr Browser vertraut allen dort gelisteten Unternehmen! Sie können die Liste allerdings bearbeiten und einzelne Zertifizierungsstellen löschen. Das machen allerdings die wenigsten Menschen. Wenn Sie einen Root-Server betreiben und ganz normale Menschen mit ganz normalen Browsern Ihre Services nutzen, haben Sie keine echte Wahl.

Sie müssen ein Zertifikat kaufen, ansonsten gibt es den Fehlerhinweis im Browser Ihres Kunden und vermutlich wird er Ihre Site daraufhin nicht benutzen!

Die Zertifizierungsstellen sind wieder ähnlich wie beim Schulbeispiel – es gibt gute und schlechte Schulen und man kann sich natürlich auch Doktortitel kaufen. Bei den Zertifikaten ist es manchmal ebenso (Beispiele hier, hier und hier). Wegen der mangelnden Vertrauenswürdigkeit einiger Zertifizierungsstellen wird seit Anfang 2010 die Sicherheit von TLS grundsätzlich angezweifelt (Heise: EFF zweifelt an Abhörsicherheit von SSL). Durch die Deaktivierung fragwürdiger Zertifizierungsstellen im eigenen Browser lässt sich das Risiko jedoch weitgehend beseitigen.

Auch wenn das Zertifikatssystem weder perfekt, noch wirklich sicher ist, ist es der einzige Mechanismus, der momentan in der Masse zur Verfügung steht. Man kann es vielleicht mit dem Geschäftsmodell vieler Kreditkartenfirmen vergleichen. Es ist einfacher für diese Firmen einen finanziellen Schaden, den der Kunde im Einzelfall hatte, auszugleichen, als von Anfang an für bessere Sicherheit zu sorgen.

Damit Sie nun nicht völlig den Glauben an die Sicherheit verlieren, ein kleiner Hoffnungsschimmer.

Jede noch so nachlässig implementierte verschlüsselte Verbindung ist ein Quentchen besser als eine unverschlüsselte Verbindung.

Je nach dem Grad Ihres persönlichen Vertrauens und dem Inhalt Ihres Geldbeutels, können Sie sich bei der israelischen Firma StartCOM ein kostenloses Zertifikat ausstellen lassen oder ein Zertifikat bei einer Tochter der Schweizer Post kaufen (SwissSign).

Wir bei NOVATREND verkaufen Ihnen ebenfalls Zertifikate. Die kommen von GeoTrust (die kennen Sie ja schon 😉 ) und von VeriSign/Symantec. Und wir installieren Sie auch für Sie auf Ihrem Root-Server. Ich stelle das hier im Blog mal deutlich hervor, weil es für den professionellen Einsatz einfach eine praktische Dienstleistung ist.

Unterschiedliche Arten von Zertifikaten (blau und grün)

Um die Sache noch etwas spannender zu gestalten, gibt es unterschiedliche Arten von Zertifikaten. Ausser der Stärke der Verschlüsselung ist das in erste Linie die Domain- oder die Identitätsprüfung.

Bei der Domainprüfung gibt es Single, Wildcard und Multidomain Zertifikate. Single Zertifikate umfassen genau eine Domain, Wildcard Zertifikate die Hauptdomain und alle Subdomains, Multidomain-Zertifikate umfassen mehrere Domains. Überprüft wird von der Zertifizierungsstelle, ob der Auftraggeber der Inhaber der Domain ist. Dazu wird automatisiert eine E-Mail an den administrative Adresse im Whois Eintrag geschickt. Diese E-Mail muss auf unterschiedliche Art bestätigt werden. Der Vorgang geht innerhalb kurzer Zeit (Minuten) und man erkennt es auch im Browser (Domain Validation).

Facebook
Facebook
Hier ein Beispiel für ein wohl vergessenes Multidomain Zertifikat, dass zum Einsatz kommt, wenn ich die BMW Site über HTTPS aufrufe (https://www.bmw.com/). Das Zertifikat ist nicht für diese Domain zertifiziert.
BMW
BMW
Bei der Identitätsprüfung einer Organisation wird ausser der Domainprüfung auch ein Handelsregisterauszug verlangt und teilweise telefonisch Kontakt aufgenommen. Bei einer erweiterter Prüfung (Extended Validation Certificate) wird ausserdem eine grüne Addresszeile im Browser angezeigt .
Postbank
Postbank
Schauen Sie sich mal die Zertifikate der Websites an, mit denen Sie regelmässig Kontakt haben.


tl;dr: Jeglicher Netzwerkverkehr sollte, wenn möglich, über TLS abgewickelt werden um ein Mindestmass an Abhörsicherheit zu gewährleisten. Als Betreiber eines Root-Servers sollten Sie sich ein Zertifikat von einer Zertifizierungsstelle installieren oder installieren lassen, der die gängigen Browser und damit auch Ihre Kunden vertrauen.


Beitrag veröffentlicht

in

,

von

Kommentare

15 Antworten zu „Zertifikate, SSL, TLS und HTTPS – ein Crashkurs“

  1. […] Die Kommunikation zwischen den Clients und dem Server muss SSL/TLS verschlüsselt sein (Zertifikate). […]

  2. Avatar von John
    John

    „Die einzige Möglichkeit verschlüsselt zu kommunizieren war lange Zeit die Übersendung des Schlüssels per Boten oder eben ihn persönlich zu überbringen!“

    Das ist immer noch so, und wird sich auch niemals ändern. Kommunikation, die zwingendermassen sicher sein muss (Militär, Regierungen, etc.) laufen ausschliesslich über One-Time-Pad.

  3. Avatar von Eberhard
    Eberhard

    Hallo Herr Graf,
    ich habe zu 3. etwas nicht verstanden.

    Habe ich dazu folgendes richtig verstanden ?

    Zu 1.: Mit öffentlichem Schlüssel des „richtigen“ Servers verschlüsselt frage ich den „richtigen“ Server an, nur er kann durch das Entschlüsseln mit seinem privaten Schlüssel überhaupt meine Anfrage als an ihn gerichtet erkennen, den Absender, meine Adresse erkennen und seine Antwort, sein Zertifikat an mich senden, verschlüsselt mit seinem privaten Schlüssel.

    Zu 2.: Ich kann seine Antwort, sein Zertifikat, mit seinem öffentlichen Schlüssel entschlüsseln.
    D.h.: Beide Schritte erfordern, dass ich den öffentlichen Schlüssel des von mir gewünschten „richtigen“ Servers z. B. aus dem Internet vorliegen habe.
    Gibt es hier die (realistische) Angriffsmöglichkeit, dass ein Angreifer bei meiner https-Server-Anfrage ein gefälschtes Paar Servername / öffentlicher Schlüssel liefert und ich so auf einem „falschen“ Server lande ?

    Und jetzt klemmt es bei mir:
    „3.Der Client überprüft ob Zertifikat und Servername zusammenpassen und …“
    Das Zertifikat habe ich vom Server als Antwort meiner Anfrage erhalten, aber aus welcher Quelle kommt, ohne Fälschungsmöglichkeit, der „Servername“ ?
    Oder kann man hier darauf verweisen, dass über den Servernamen wieder aus dritter Quelle (Internet) der zugehörige öffentliche Schlüssel (gleich zu demjenigen aus 1. und 2.) des „richtigen“ Servers zur Entschlüsselung des Zertifikats eingesetzt wird, und im entschlüsselten Zertifikat ist noch mal der Servername enthalten, und so ist die Übereinstimmung zu verifizieren ?

    Danke für Ihre Antwort.

    Viele Grüße,
    Eberhard

    1. Avatar von Hagen Graf

      Hallo Eberhard,
      zunächst mal … das Thema ist komplex und das ganze System ist nicht mehr sicher. Es ist heute mehr eine „Sicherheitssimulation“ behaupte ich jetzt mal frech.

      Du fragst: „Gibt es hier die (realistische) Angriffsmöglichkeit, dass ein Angreifer bei meiner https-Server-Anfrage ein gefälschtes Paar Servername / öffentlicher Schlüssel liefert und ich so auf einem „falschen“ Server lande ?“

      Der „Angreifer“ würde dir ein gefälschtes Zertifikat unterschieben und dich so auf einen anderen Server schicken, also ja, das geht. Inwieweit das „realistisch“ ist, lasse ich mal offen. Technisch funktioniert es und praktisch wurden auch bereits viele Zertifikate gefälscht und genutzt.

      Du fragst: „Das Zertifikat habe ich vom Server als Antwort meiner Anfrage erhalten, aber aus welcher Quelle kommt, ohne Fälschungsmöglichkeit, der „Servername“ ?“

      Ein Webserver mit einer IP Adresse auf einer physikalischen Maschine kann n virtuelle Webserver bereit stellen. Der Servername kann nun auf mehreren Ebenen genutzt (und verwechselt) werden. Letztlich kommt der Servername einmal vom Betriebssystem und einmal oder im Falle der virtuellen Name based Server vom Webserver. Und das alles lässt sich natürlich noch virtualisieren und konfigurieren … Prinzipiell übermittelt dann das HTTP Protokoll den Servernamen an deinen Client. Hier noch ein Link zur Apache Doku https://httpd.apache.org/docs/2.4/vhosts/name-based.html

      Viele Grüsse
      Hagen

  4. Avatar von hagengraf

    Update vom 19. Juli 2023: Wir verwenden mittlerweile die AutoSSL Funktion, welche direkt von cPanel entwickelt wird. Zertifikate werden automatisch erstellt, wenn ein Domainname auf einem Hosting a…

  5. […] Zertifikate, SSL, TLS und HTTPS – ein Crashkurs: Wir sind an dem Thema SSL, TLS, https, Zertifikate und Verschlüsselungsprotokolle nun so oft „vorbeigeschrammt“, dass ich mal näher darauf eingehen muss. Leider ist das wie so oft „nicht so einfach“ und falls Sie sich noch nie wirklich mit dem Thema beschäftigt haben, sollten Sie einen Moment innehalten und versuchen die Zusammenhänge zu verstehen. Hier ein kurzer Crashkurs mit wichtigen Begriffen und kurzen Erklärungen (3,492 Zugriffe in 2018, Artikel vom 23.2.2015) […]

  6. […] Zertifikate, SSL, TLS und HTTPS – ein Crashkurs […]

  7. Avatar von Lukas Meyer

    Vielen Dank für diesen Crash-Kurs!
    Ich konnte einige Informationen daraus ziehen.

    Einmal mehr ein toller Beitrag.
    Liebe Grüsse Lukas

  8. Avatar von Tobias Etter

    Sehr schön erklärt.

    In der Mitte der Seite scheint der Text aber falsch dargestellt zu werden (geht über die gesamte Screenbreite).

    Ansonsten aber ein super Beitrag!

  9. Avatar von Pascal
    Pascal

    Super Beitrag immer wieder hilfreich

    Weiter so

    Beste Grüsse Pacal

  10. Avatar von Pascal M
    Pascal M

    Danke für den tollen Beitrag. Gleich als Favorit gespeichert

  11. Avatar von Luka
    Luka

    Trau keiner Seite ohne Zertifikat… verstehe manchmal nicht wie Seiten ohne SSL Zertifikat ein hohes Domain Rating erhalten… denke dies sollte doch zusammen hängen

    1. Avatar von MarcusM

      Wahrscheinlich hat es in der Nische zu wenig Konkurrenz und SSL keinen sehr grossen Hebel beim Rating. Beim Ranking gibt es extrem viele einzelne Faktoren, die für das Ranking verantwortlich sind. Wenn die anderen Faktoren Google und die Suchenden trotzdem überzeugen, dann sei es gegönnt.

  12. Avatar von Andreas Becker
    Andreas Becker

    Der Artikel hat sicherlich sehr viel Zeit benötigt, ich kann nur sagen – Es hat sich gelohnt!! Ganz tolle Arbeit!

  13. Avatar von MarcusM
    MarcusM

    Ein sauber konfigurierter Plesk Server mit Let’s Encrypt Zertifikate und automatischer Erneuerung macht die ganze Sache eigentlich sehr komfortabel.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert