Wie funktionieren SSL Zertifikate?
Da Internet, wie es anfangs ausschließlich zur Vernetzung der Großrechner von Universitäten und Forschungseinrichtungen genutzt werden sollte, existiert in der heutigen Form nicht mehr.
Das Internet ist ein dunkler und gefährlicher Ort geworden. Hacker lauern hinter glänzend aussehenden Webseiten, die sich, wenn du es am wenigsten erwartest, mit deinen wertvollen Daten davonmachen.
Sicherheit ist von größter Bedeutung für deine Daten. Vorbei sind die Zeiten, in denen Antivirensoftware ausreichte, um deine Systeme zu schützen. Jetzt, mit der massiven Verbreitung des Internets und des eCommerce, ist das Bedürfnis nach Sicherheit im Sinne immens gestiegen. Immerhin geben wir allein bei einer Bestellung in einem Online-Shop teilweise so viele Daten an fremde Personen, welche wir sonst niemand anderen mitteilen würden. Darunter zum Beispiel: Name, Adresse, Telefonnummer, volle Adresse, Kreditkartendaten und vielleicht muss man sogar noch einen Ausweis hochladen. Das vertrauen an Websiten muss daher groß sein, dass der Kunde sicher ist, dass seine Daten auch nur die Person erreichen, welche dafür vorgesehen ist.
Verschlüsselung ist die höchste Form der Sicherheit, auf die sich Webseiten heute verlassen können, um sich vor Cybersecurity-Angriffen zu schützen, und genau das ist es, was ein SSL-Zertifikat bietet.
Was ist ein SSL Zertifikat?
Ein SSL-Zertifikat ist eine Datei, die die Informationen, die zwischen einem Webbrowser und einem Server ausgetauscht werden, verschlüsselt. Stell dir das wie einen Tunnel vor. Der Tunnel verschlüsselt jeden einzelnen Datenschnipsel, der ihn durchläuft. Hacker können ihn nicht direkt sehen, und selbst wenn sie es tun, erscheinen die Daten in Kauderwelsch und unverständlicher Form, was die eigentliche Absicht der Hacker aufhält.
Websites, die durch SSL-Zertifikate gesichert sind, haben ihre URLs mit HTTPS vorangestellt. Außerdem ist die Adressleiste mit einem grünen Vorhängeschloss-Symbol versehen, das symbolisiert, dass die Daten, die ausgetauscht werden, tatsächlich gesichert sind. Bis vor einigen Jahren haben die Browser Chromium und Firefox auch noch eine grüne Adressleiste angezeigt, welche jedoch seit 2019 nicht mehr standardmäßig aktiviert ist [1].
Wie funktioniert ein SSL-Zertifikat?
SSL-Zertifikate haben ein Schlüsselpaar, das die Informationen zwischen dem Benutzersystem und dem Server ver- und entschlüsselt. Das Zertifikat enthält auch das sogenannte “Subject”, das nichts anderes als die Identität des Besitzers ist.
- Der erste Schritt der Verschlüsselung ist, wenn der Browser sich mit dem Server verbindet und ihn auffordert, sich zu identifizieren.
- Der Server übermittelt dann eine Kopie des SSL-Zertifikats zusammen mit dem öffentlichen Schlüssel.
- Der Browser versucht, das SSL-Zertifikat mit der Datenbank der Zertifizierungsstellen und deren ausgestellten Zertifikaten zu identifizieren.
- Sobald die Authentizität des Zertifikats bestätigt ist, sendet der Browser einen symmetrischen Sitzungsschlüssel an den Server.
- Der Server entschlüsselt den vom Browser gesendeten symmetrischen Schlüssel und beginnt damit eine verschlüsselte Sitzung.
Im Detail
Der Secure Socket Layer sitzt zwischen der Anwendungsschicht (HTTP Website) und der Transportschicht (normalerweise TCP). Er bietet Verschlüsselung, Authentifizierung und Sitzungsmanagement für die Anwendungsschicht.
SSL ist ein Internetstandard, der erstmals 1994 von Netscape entwickelt wurde. Die IETF hat in jüngerer Zeit die Entwicklung von SSL übernommen und in Transport Layer Security (TLS) umbenannt (TLS Version 1.0 ist eine kleine Weiterentwicklung von SSL 3.1).
Der SSL Handshake
Um eine sichere Kommunikation zwischen Client und Server einzurichten, braucht es einiges an Einrichtungsarbeit. Die Verschlüsselungs- und Authentifizierungsteile von SSL sind optional und eine Reihe von Chiffren können für beide verwendet werden. Diese Cipher Suite (Chiffrensammlung) muss ausgetauscht werden und dann müssen Schlüsselinformationen und (optional) digitale Zertifikate ausgetauscht werden. Das SSL Handshaking kümmert sich um all dies, wenn die SSL Verbindung zum ersten Mal aufgebaut wird.
- Der Client sendet eine “Hello”-Nachricht an den Server. Diese enthält Informationen über die höchste SSL Version, die der Client unterstützt und eine Liste der unterstützte Chiffrensammlungen.
- Der Server sendet seine Antwort zurück an den Client:
- Eine Hallo-Nachricht, die Informationen über die höchste SSL-Version und die beste Cipher-Suite enthält, die sowohl vom Client als auch vom Server unterstützt wird.
- Der öffentliche Schlüssel des Servers wird gesendet, es sei denn, es wurde bereits ein Zertifikat mit einem passenden öffentlichen Schlüssel übermittelt.
- Eine hello finished Nachricht, um anzuzeigen, dass die Antwort fertig ist.
- Der Client überprüft dann die vom Server gesendete Zertifikatskette. Wenn der Client ein Webbrowser ist und er die Zertifikatskette nicht zu einer bekannten vertrauenswürdigen Zertifizierungsstelle zuordnen kann, erscheint eine Sicherheitswarnung.
Wenn der Browser die Zertifikatskette akzeptiert, antwortet der Client mit:- Einer Zertifikatskette, wenn der Server sie angefordert hat.
- Einem Sitzungsschlüssel, der mit dem öffentlichen Schlüssel des Servers verschlüsselt ist. Der Sitzungsschlüssel wird für jede SSL-Sitzung zufällig generiert und für die symmetrische Verschlüsselung der Daten verwendet.
- Einer Change Cipher Spec Nachricht, die anzeigt, dass der Server in den verschlüsselten Modus wechseln soll. Der Client wählt die stärkste Chiffre, die von beiden Parteien unterstützt wird.
- Einer finished Nachricht, die anzeigt, dass die Antwort beendet ist.
- Der Server überprüft die Zertifikatskette des Clients (falls vorhanden), entschlüsselt den Sitzungsschlüssel und antwortet schließlich auf die vom Client gesendeten Informationen mit:
- Einer Change Cipher Spec Nachricht, die anzeigt, dass der Client in den verschlüsselten Modus wechseln soll.
- Einer finished Nachricht, die anzeigt, dass der SSL Handshaking Prozess beendet ist.
Wenn diese Reihe an Prozessen erfolgreich abgeschlossen wurde, ist die Verbindung aufgebaut und verschlüsselt.
Warum brauchen Webseiten SSL?
Webseiten brauchen SSL-Zertifikate aus verschiedenen Gründen:
- Um Anmeldeseiten zu sichern
- Um das Vertrauen der Kunden in Online-Zahlungen zu wecken
- Für PCI-Konformität
- Um Schutz vor Cybersecurity-Angriffen zu gewährleisten
Zudem ist SSL inzwischen auch bei normalen Blogs oder Portfolioseiten Standard geworden.
Beeinflusst hat dies zudem Google und andere Suchmaschinen, die Websiten ohne SSL Zertifikate auf ihrer Website, nicht mehr so hoch in ihren Suchergebnissen anzeigen [2].
Woher bekomme ich SSL Zertifkate?
Je nach Verschlüsselungsstärke bedarf es verschiedener Zertifikate. So bieten DevStorage starke und sichere Zertifikate an, welche ebenfalls eine Geldgarantie von den jeweiligen Zertifikatsstellen haben. Welche Zertifikate DevStorage anbietet, kannst du hier sehen: https://devstorage.eu/zertifikate/
Wer jedoch kein Geld ausgeben möchte und trotzdem ein grundlegend sicheres SSL Zertifikat erstellen möchte, kann auf Anbieter wie Let’s Encrypt zurückgreifen. Let’s Encrypt ist eine Zertifizierungsstelle, die Ende 2015 in Betrieb gegangen ist und kostenlose X.509-Zertifikate anbietet.
Zum Abschluss
Im Heutigen Zeitalter des Internets ist Sicherheit von größter Bedeutung. Hacker nutzen immer neue Wege, um in Datenbanken einzubrechen und sensible Informationen zu stehlen. Sie sind sogar sehr versiert darin, identische Webseiten, mobile Apps und sogar Bezahlseiten zu erstellen, die naive Kunden dazu verleiten, ihre privaten Informationen preiszugeben.
Webseitenbetreiber sind auch teilweise dafür verantwortlich, die Sicherheit zu erhöhen, um ihre Kunden und die Daten ihrer eigenen Webseite zu schützen. Ein SSL-Zertifikat ist ein idealer Weg, um Informationen, die von und zu deiner Webseite gehen, zu verschlüsseln.
[1] https://www.golem.de/news/extended-validation-browser-wollen-teure-zertifikate-nicht-mehr-hervorheben-1908-143151.html
[2] https://www.seo-kueche.de/blog/warum-jede-webseite-ein-ssl-zertifikat-benoetigt/
SSL Handshake: cs.baylor. edu/~donahoo/classes/5321/projects/SSL/howitworks.html ( freie Übersetzung )
Letsencrypt: https://letsencrypt.org/de/