Zertifikate – warum und wozu
In diesem Artikel möchte ich Ihnen einen Einblick in das Thema „Absicherung des internetbasierten Austausches von Informationen durch Zertifikate“ geben. Dazu werfe ich einen kurzen Blick zurück auf die Anfänge des Internets und die Verwendung von Protokollen wie HTTP, SMTP, POP… und deren verschlüsselten Transport über SSL bzw. TLS. Vor allem möchte ich Ihnen aber erklären, wie Sie mit Univention Corporate Server öffentliche Zertifikate für die Absicherung Ihrer Datenübertragung nutzen können oder aber auch mit dem Tool Let‘s Encrypt selber vertrauenswürdige Zertifikate dafür erstellen können. Ganz sicher und auch noch kostenfrei.
In den Anfangstagen des Internets und dessen Vorläufern war die Anbindung eines neuen Standorts (hauptsächlich Universitäten) noch ein komplexes Unterfangen. Man vertraute auf die Ehrlichkeit und Aufrichtigkeit aller Beteiligten, denn schließlich galt es gemeinsam etwas zu erreichen.
Sicherheit in der Kommunikation zwischen den Standorten war zu dem Zeitpunkt weniger ein Thema und die verwendeten Kommunikationsprotokolle funkten einfach Klartext.
Mit der steigenden Verbreitung des Internets wurde die Notwendigkeit offenbar, dass Kommunikation auch so stattfinden können muss, dass sie nicht von Dritten eingesehen werden kann. Ein Ansatz, der sich damals durchgesetzt und bis heute gehalten hat, war, die bekannten und weitläufig im Einsatz befindlichen Protokolle wie HTTP, SMTP, POP, IMAP, FTP, etc. weiterzuverwenden, aber eine verschlüsselte Transportmöglichkeit um diese herumzubauen. Dieser verschlüsselte Transport der Netzwerkpakete wurde zunächst SSL (Secure Socket Layer) und in späteren Iterationen TLS (Transport Layer Security) getauft.
SSL/TLS-Zertifikate – fester Bestandteil von Netzwerkkommunikation
Heute ist SSL/TLS ein fester Bestandteil von Netzwerkkommunikation – egal, ob im Firmen- oder Heimnetz oder quer durchs Internet.
SSL/TLS arbeitet zur Verschlüsselung mit sog. Zertifikaten. Ein Empfänger (bspw. ein Webserver), mit dem ich kommunizieren möchte, ist im Besitz einer Zertifikatsdatei und eines geheimen, kryptografischen Schlüssels. Die Zertifikatsdatei enthält u. a. kryptografische Informationen, die es mir als Sender erlauben, meine Nachrichtenpakete zu verschlüsseln. So verschlüsselte Nachrichtenpakete können dann nur mit dem dem Zertifikat zugehörigen, geheimen (privaten) Schlüssel entschlüsselt werden. Für Dritte sind die Nachrichten nicht lesbar.
Ein solches Zertifikat enthält auch immer Informationen, von welcher Zertifizierungsstelle und für welchen Empfänger (Subject) das Zertifikat ausgestellt wurde. Das gibt mir als Sender gute Anhaltspunkte, ob ich auch wirklich mit dem richtigen Empfänger spreche. Hier ein Auszug aus dem aktuell gültigen Zertifikat für „univention.de“:
Issuer: C = US, O = DigiCert Inc, OU = www.digicert.com, CN = Thawte TLS RSA CA G1
[...]
Subject: CN = univention.de
[…]
X509v3 Subject Alternative Name:
DNS:univention.de, DNS:www.univention.de
Vertrauenswürdig oder nicht? Wie man Zertifikate voneinander unterscheiden kann
Einen kleinen Haken hat die Sache: Jeder kann mit den richtigen SSL-Tools eigene Zertifikate erzeugen und diese für „google.com“, „ihre-bank.de“ oder „univention.de“ ausstellen und im schlimmsten Fall Kommunikation abfangen und entschlüsseln. Deswegen ist es essenziell, zwischen vertrauenswürdigen und nicht vertrauenswürdigen Zertifizierungsstellen unterscheiden zu können. Bei den vertrauenswürdigen glauben wir, dass sie in bester Absicht und mit viel Aufwand und Sicherheitsmechanismen nur Zertifikate an berechtigte Empfänger ausstellen.
Die am häufigsten verwendeten Anwendungen, die diese Dinge überprüfen müssen, sind Webbrowser wie Mozilla‘s Firefox, Google‘s Chrome Browser, Apple‘s Safari oder der Edge Browser von Microsoft. Diese Browser bzw. die darunterliegenden Betriebssysteme bringen eine Liste vertrauenswürdiger Zertifizierungsstellen mit. Allen von diesen Zertifizierungsstellen ausgestellten Zertifikaten wird in der Regel automatisch vertraut – sofern das „Subject“ zur aufgerufenen Website passt und das Zertifikat nicht abgelaufen ist. (Zertifikate sind immer nur eine bestimmte Zeit gültig).
UCS CA und selbstsignierte Zertifikate
UCS macht an vielen Stellen Gebrauch von Zertifikaten, um die Netzwerkkommunikation zwischen Endgeräten und UCS-Systemen, aber auch die der UCS-Systeme untereinander, kryptografisch abzusichern und zu verschlüsseln.
Eine Hürde müssen wir dabei nehmen: Woher nehmen wir die Zertifikate? Insbesondere, wenn wir im Vorfeld nicht wissen, auf welchen Namen (Subject) die Zertifikate ausgestellt werden müssen? Schließlich können UCS-Systeme nach Belieben benannt werden.
Wie oben erwähnt, kann jeder mit den richtigen SSL-Tools Zertifikate erzeugen – und genau davon machen wir Gebrauch. Auf jedem UCS Master wird automatisch eine Zertifizierungsstelle (Certificate Authority oder kurz CA) für die UCS-Domäne eingerichtet. Diese erhält ein sog. Root-Zertifikat, das zum einen die Zertifizierungsstelle selbst identifiziert und ausweist und mit dem zum anderen weitere Zertifikate ausgestellt werden können. Für weitere UCS-Systeme in der Domäne passiert das beim Domänenbeitritt ganz automatisch. UCS bringt aber auch ein Kommandozeilen-Werkzeug mit, mit dem sich bequem weitere Zertifikate erstellen oder auch bestehende auflisten und widerrufen lassen.
Dadurch sind alle von UCS angebotenen Dienste, die SSL/TLS unterstützen (bspw. der Webserver, LDAP, Listener/Notifier, Mail-Server etc.), direkt mit einem passenden Zertifikat ausgestattet und können verschlüsselt kommunizieren.
UCS Core Edition testen und einsetzen
Univention Corporate Server steht Ihnen als ISO-Image zur Installation sowie als bereits vorinstalliertes, virtuelles Maschinenimage zur Verfügung.
UCS-CA-Zertifikaten vertrauen oder andere Zertifikate einsetzen
Da aber mit jeder UCS-Domäne eine eigene Zertifizierungsstelle eingerichtet wird, sind diese nicht Bestandteil der Liste der vertrauenswürdigen Zertifizierungsstellen der Browser und Betriebssysteme, was in aller Regel in einer unschönen Warnmeldung resultiert:
Um das zu lösen, haben wir nun zwei Möglichkeiten:
a) Wir bringen unseren Geräten und Anwendungen bei, der UCS CA zu vertrauen.
b) Wir ersetzen bspw. für den Webserver das selbstsignierte Zertifikat durch eines, das von einer öffentlichen Zertifizierungsstelle ausgestellt wurde, der die Geräte und Anwendungen von Haus aus vertrauen.
Für die Variante a) gibt es im Univention-Forum eine passende Anleitung, um das für Windows Clients über Gruppenrichtlinien zu lösen.
Und wenn es mal schnell gehen muss: Eine temporäre Variante unabhängig vom Betriebssystem ist ebenfalls beschrieben, bspw. für Testsysteme oder wenn man nur wenige Endgeräte in der Umgebung hat:
- How-to: Accept self signed certificate in Mozilla Firefox
- How-to: Accept self signed certificate in Chrome/Chromium
Zertifikate von öffentlichen Zertifizierungsstellen
Für die Variante b) benötigen wir passende Zertifikate, die von einer öffentlichen, vertrauenswürdigen Zertifizierungsstelle ausgestellt wurden. Der Prozess unterscheidet sich von Zertifizierungsstelle zu Zertifizierungsstelle leicht. Am Ende erhält man aber eine Handvoll Dateien, die man auf das UCS-System kopieren muss. Mindestens enthalten sein sollten (im PEM-Format):
- Das öffentliche Zertifikat selbst (bspw. „domain.crt“)
- Den zugehörigen geheimen Schlüssel (bspw. „private.key“)
- I. d. R. noch eine Zertifikatskette, die der Server mitausliefern kann, um die Vertrauenswürdigkeit über sog. Sub- oder Intermediate-CA-Zertifikate bis hin zum Root-Zertifikat der CA nachvollziehen zu können (bspw. „chain.crt“).
UCS bietet nun für die allermeisten Dienste passende UCR-Variablen, um die Zertifikatsdateien zu hinterlegen. Das heißt, ich muss die vorhandenen, selbstausgestellten Zertifikate nicht ersetzen, sondern kann einfach die Konfigurationsoptionen auf die neuen Zertifikate umstellen – und das einzeln pro Dienst. Genauer ist das in dem Foren-Artikel „Using your own SSL certificates“ beschrieben
Sicher und preisgünstig – Mit Let‘s Encrypt eigene Zertifikate erstellen
Noch einfacher geht es mit der Let‘s Encrypt App aus dem Univention App Center. Let‘s Encrypt ist Ende 2015 angetreten, um SSL/TLS-Verschlüsselung im Internet zum Normalfall zu machen. Dazu haben sich diverse Organisationen rund um die Electronic Frontier Foundation (EFF) und die Mozilla Foundation zusammengetan, um Zertifikate kostenfrei und deutlich einfacher als zuvor beziehen und einrichten zu können. Dabei hat Let‘s Encrypt inzwischen eine beachtliche Erfolgsgeschichte vorzuweisen.
Die Let‘s Encrypt App aus dem Univention App Center setzt da an und kümmert sich selbstständig um das Beziehen von aktuellen, gültigen Zertifikatsdateien von der Let‘s Encrypt CA, hinterlegt diese im Dateisystem des Servers und konfiguriert wahlweise die Dienste für den Webserver (Apache2), den IMAP-Server (Dovecot) und den SMTP-Server (Postfix) entsprechend.
Schreiben Sie gerne einen Kommentar, wenn Sie Fragen oder Anmerkungen zu dem Thema haben.