- Der Server weist sich gegenüber dem Client aus.
- Die Übertragung wird verschlüsselt.
Wer bist Du?
Wenn ein Browser mit einer Webseite verbunden ist, die er als www.meinebank.de aufgerufen hat, so möchte er wissen, ob das, was er sieht, wirklich seine Bank ist, oder ob er im Begriff ist, seine Passwörter und TANs einem Fremden in den Rachen zu werfen.Dazu wird im Zertifikat die Webadresse mithilfe des privaten Schlüssels eines asymmetrischen Schlüsselpaares verschlüsselt. Der öffentliche Schlüssel wird zur Verfügung gestellt, oft im Zertifikat selbst. Der Browser kann nun die Webadresse mit dem öffentlichen Schlüssel entschlüsseln und prüfen, ob dieser mit der gerade aufgerufenen Seite übereinstimmt.
Damit ist die URL von dem Besitzer des privaten Schlüssels bestätigt worden.
Wenn der Webbrowser nun den öffentlichen Schlüssel als den seiner Bank verifizieren kann, kann er sicher sein, dass er wirklich mit der richtigen Bank spricht. Leider kann der Browser unmöglich alle öffentlichen Schlüssel aller Webseiten mit sich herumschleppen.
Zertifizierung der Zertifikate
Damit der Client die Echtheit des Zertifikats prüfen kann, müsste er jedes Zertifikat eines Webservers weltweit mit sich führen. Das ist nicht machbar.Wie bei einem Personalausweis, der durch den Stempel des Ausstellerlandes autorisiert wird, geht man bei Zertifikaten vor. Es gibt es Zertifikatsautorisierungsstellen (CA - Certificat Authority), die Zertifikate quasi zertifizieren.
Dazu sendet man sein Zertifikat an die CA, die mit ihrem privaten Schlüssel das Zertifikat autorisiert. Parallel macht die CA-Stelle ihren öffentlichen Schlüssel verfügbar. Beispielsweise enthält ein Browser bereits eine Bibliothek der relevanten CA-Stellen. Zeigt der öffentliche CA-Schlüssel, dass das Zertifikat von einer bekannten CA-Stelle autorisiert wurde, kann der Client das Zertifikat bedenkenlos verwenden.
Für das eigene Netzwerk kann man das CA-Zertifikat auch selbst erstellen. Das ist bei Intranet-Anwendungen durchaus sinnvoll, weil die meisten Browser auf Zertifikate ohne bekannte CA sehr aufgeregt reagieren, was sich leicht auf die Anwender überträgt, die mit Warnungen überhäuft werden.
Asymmetrische Verschlüsselung: public und private
Bei der asymmetrischen Verschlüsselung werden zwei Arten von Schlüsseln verwendet. Was der eine Schlüssel verschlüsselt, kann nur der andere Schlüssel entschlüsseln.Einer der beiden Schlüssel wird geheim gehalten. Man bezeichnet ihn als den privaten Schlüssel.
Dagegen wird der andere Schlüssel hemmungslos veröffentlicht. Jeder kann und soll ihn sogar besitzen.
Verschlüsselt man eine Nachricht mit dem public Key, kann nur der Besitzer des private Keys die Nachricht entschlüsseln. Damit lässt sich eine Nachricht verschlüsseln, die nur von einem Empfänger gelesen werden kann, nämlich dem Besitzer des privaten Schlüssels.
Verschlüsselt der Besitzer des privaten Schlüssels damit eine beliebige Zeichenfolge, weiß jeder mit Zugriff auf den öffentlichen Schlüssel, dass der Absender der Besitzer des privaten Schlüssels ist. Auf diese Weise kann der Besitzer des privaten Schlüssels seine Identität beweisen.
Anlegen eines CA-Zertifikats
Wir wollen für eine Intranet-Lösung ein eigenes CA-Zertifikat erstellen, das später das eigentliche Zertifikat bestätigen soll.Ein Zertifikat ist asymmetrisch, besteht also aus einem privaten und einem öffentlichen Teil. Zunächst soll der private Schlüssel, der auch als Key bezeichnet wird, erstellt werden.
openssl genrsa -aes256 -out ca-priv.pem 2048Bei der Erzeugung muss eine Passphrase eingegeben werden. Auf diese Weise wird verhindert, dass allein der Besitz des Zertifikats ausreicht, um davon Zertifikate zu erzeugen.
Im nächsten Schritt wird der öffentliche Teil des CA-Zertifikats erstellt. Dieser muss den privaten Key über die Option -key aufnehmen. Der Befehl lautet:
openssl req -x509 -new -nodes -key ca-priv.pem -out ca-pub.pem -sha512Zunächst muss die Passphrase angegeben werden, die soeben bei der Erstellung des privaten Keys festgelegt wurde. Anschließend müssen folgende Parameter für das öffentliche CA-Zertifikat eingegeben werden:
- Country Name (2 letter code) [AU]:
Hier bietet sich DE für Deutschland an, wenn man denn dort wohnt. - State or Province Name (full name) [Some-State]:
Hier könnte man Deutschland ausschreiben oder ein Bundesland anführen, wie etwa Schleswig-Holstein - Locality Name (eg, city) []:
Hier der Ortsname, beispielsweise: Norgaardholz - Organization Name (eg, company) [Internet Widgits Pty Ltd]:
Dieser Eintrag wird als der Name der Zertifizierungsstelle verwendet. Beispielsweise: CA Gintoft - Organizational Unit Name (eg, section) []:
Beispielsweise: Abteilung Sicherheit - Common Name (eg, YOUR name) []:
Der Verantwortliche für die CA. Beispielsweise Donald Duck - Email Address []:
... und dessen E-Mail-Adresse, beispielsweise donald@duck.com
- Einstellungen|Erweitert|Zertifikate
- Dort wählen Sie den Button Zertifikate anzeigen.
- Klicken Sie auf den Reiter Zertifizierungsstellen.
- Dort wählen Sie den Button Importieren. In der nun erscheinenden Dateiauswahlbox können Sie die Datei auswählen.
Erzeugen eines Zertifikats
Auch für das Zertifikat muss zunächst ein privater Key erzeugt werden.openssl genrsa -out zertifikat-priv.pem 4096Der private Key wird als Eingabedatei für den öffentlischen Teil des Zertifikats herangezogen:
openssl req -new -key zertifikat-priv.pem -out zertifikat.csr -sha512Auch hier werden die Eingaben von oben verwendet. Dieses Mal beziehen sie sich allerdings auf das Zertifikat und nicht die Zertifizierungsstelle.
- Country Name (2 letter code) [AU]: DE
- State or Province Name (full name) [Some-State]:Schleswig-Holstein
- Locality Name (eg, city) []:Flensburg
- Organization Name (eg, company) [Internet Widgits Pty Ltd]:Hochschule Flensburg
- Organizational Unit Name (eg, section) []:Computerlabor
- Common Name (e.g. server FQDN or YOUR name) []:www.nwk.lab
- Email Address []:mail@nwk.lab
Des weiteren wird der Anwender nach einem »challenge password« und einem »company name&laro;. Dies kann leer gelassen werden, wird ansonsten für den Widerruf des Zertifikats benötigt.
Legitimieren des Zertifikats durch die CA
Aus der so entstandenen Datei zertifikat.csr kann unter Zuhilfenahme des CA-Zertifikats und natürlich der Passphrase nun der öffentlichen Teil des Zertifikats erzeugt werden. Dazu verwenden Sie den folgenden Befehl:openssl x509 -req -in zertifikat.csr -sha512 -CA ca-pub.pem -CAkey ca-priv.pem -CAcreateserial -out zertifikat-pub.pemDamit entsteht nun die öffentliche Zertifikatsdatei. Diese muss beim Webserver hinterlegt werden.
rm -r ~/.rndAnschließend den openssl-Befehl noch einmal aufrufen.
Bei einigen Webservern kann der öffentliche CA-Schlüssel nicht separat eingebunden werden. In diesen Fällen ist es möglich, den öffentlichen CA-Schlüssel direkt an das öffentliche Zertifikat anzuhängen. Das funktioniert mit einem einfachen Linux-Standardbefehl:
cat ca-pub.pem >> zertifikat-pub.pem
Für die Einbindung des Zertifikats in Apache benötigen Sie die öffentliche und die private Zertifikatsdatei und die öffentliche CA-Datei.
Siehe auch:
Ablage der Zertifikatsstellen im Browser
Damit der Browser ein Zertifikat akzeptiert, muss der öffentliche Schlüssel der CA hinterlegt sein. Wenn Sie für den netzwerkinternen Bedarf ein Zertifikat erstellen und dieses von den Arbeitsplätzen akzeptiert werden soll, können Sie den Schlüssel der eigenen CA dort im Browser hinterlegen. Für Firefox ergeben sich folgende Schritte:- Rufen Sie im Firefox über das Menü (das erreichen Sie über das Symbol mit den drei waagerechten Strichen) und wählen Sie dort: Einstellungen | Erweitert | Zertifikate
- Dort wählen Sie den Button Zertifikate anzeigen.
- Klicken Sie auf den Reiter Zertifizierungsstellen.
- Dort wählen Sie den Button Importieren. In der Dateiauswahlbox können Sie den öffentlichen Schlüssel der CA-Stelle (ca-pub.pem) auswählen.
- Haken Sie an, dass Sie der CA für Websites vertrauen.
Verschlüsselung über das Zertifikat
Der Server sendet dem Client, also dem Browser, bei Verbindungsaufnahme ein Zertifikat, das im Grunde ein öffentlicher Schlüssel ist.- Das Zertifikat muss vor allem auf den Domain-Namen passen. Der Client prüft, ob Zertifikat und Domain-Namen zusammenpassen und kann nun aufgrund der anderen Zertifikatsinhalte feststellen, wer der Eigner ist.
- Auf der Basis dieses Zertifikats kann eine asymmetrische Verschlüsselung stattfinden. Der Client verschlüsselt mit dem öffentlichen Schlüssel des Zertifikats. Dies kann dann nur durch den privaten Schlüssel des Zertifikats entschlüsselt werden.
- Unter dieser Verschlüsselung wird ein zufälliger symmetrischer Schlüssel ausgetauscht, der für den weiteren Verlauf der Verschlüsselung verwendet wird. Die symmetrische Verschlüsselung ist weniger prozessorbelastend und darum auch schneller.