Public Key Infrastructure

Aus OpenVPN Wiki

Wechseln zu: Navigation, Suche

Inhaltsverzeichnis

Einleitung

Die meisten OpenVPN Benutzer sehnen sich nach einer flexiblen und transparenten Möglichkeit um mehrere Clients/Computer an ihr VPN zu koppeln. Während OpenVPN mittels Pre-Shared Key eine Lösung bietet - die zwar manchmal ausreicht (sofern man den Benutzern vertraut), jedoch weder überragend sicher noch flexibel ist - so bietet es mit PKI eine mächtige, sichere und leicht administrative Lösung an.

Public-Key Verfahren

Die Funktionsweise des Public-Key Verfahren in OpenVPN ist ähnlich dem Verfahren das von PGP bekannt ist. Dabei existieren pro Computer/User zwei Schlüssel: der private Schlüssel und der öffentliche Schlüssel. Ersterer ist immer geheim zu halten. Der öffentliche Schlüssel hingegen bedarf keiner Geheimhaltung.

Der öffentliche Schlüssel kann nun von anderen Personen genutzt werden um Nachrichten oder andere Daten zu verschlüsseln. Nach diesem Vorgang können die verschlüsselten Daten von niemanden mehr entschlüsselt werden, außer vom Besitzer des zugehörigen privaten Schlüssel.

Aufgaben und Aufbau einer PKI

Bevor wir zu den eigentlichen Aufgaben kommen, noch eine kleine Ergänzung zu der oben erwähnten Methode des Public-Key Verfahren. Man kann nicht nur Nachrichten verschlüsseln, sondern auch signieren. Dies kann man dazu verwenden um Nachrichten fälschungssicher zu machen. Das bedeutet, dass eine signierte Nachricht auch wirklich von der Person stammt die sie signiert hat. Dieses Signieren wird mit dem privaten Schlüssel des Senders durchgeführt. Jeder der den zugehörigen öffentlichen Schlüssel hat, kann die Echtheit überprüfen.

Ein OpenVPN Client verbindet sich mit seinem OpenVPN Server. Dieser Server muss nun überprüfen, ob der Client überhaupt vertrauenswürdig ist oder nicht. Da jeder Client beliebig viele Schlüsselpaare erzeugen könnte, muss es also eine Methode geben um einem öffentlichen Schlüssel eine Zugehörigkeit zum Server zuweisen zu können.

Hier kommt die sogenannte Zertifizierungsstelle (Certificate Authority - CA) ins Spiel. Sie besteht selbst aus nicht mehr als einem eigenen Schlüsselpaar, das sie aber nicht zur Verschlüsselung nutzt sondern nur zum Signieren von anderen öffentlichen Schlüsseln. Ein signierter öffentlicher Schlüssel wird auch Zertifikat genannt.

Jeder OpenVPN Server überprüft, ob das vom Client gesendete Zertifikat von der selben CA signiert wurde, wie die eigene vertraute CA (--ca Direktive). Auch der OpenVPN Client führt diese Überprüfung mit dem Serverzertifikat durch. Dieser Prozess wird Authentifizierung genannt. Daher ist es erforderlich, dass sowohl Server als auch alle Clients die selbe CA haben!

Vorgangsweise zum Erzeugen von gültigen Zertifikaten

Zuerst muss eine Zertifizierungsstelle existieren. Es ist nicht notwendig, dass sie sich am OpenVPN Server befindet. Wie bereits erwähnt, besitzt diese CA ein eigenes Schlüsselpaar. Eine Zertifizierungsstelle signiert ihren öffentlichen Schlüssel übrigens selbst.

Achtung!: Der private Schlüssel der CA ist unter allen Umständen geheim zu halten! Jeder der diesen Schlüssel besitzt, kann eine unbegrenzte Anzahl an gültigen Zertifikaten erzeugen.

Ein OpenVPN Client kann nun selbst ein eigenes Schlüsselpaar erzeugen. Für den öffentlichen Schlüssel wird ein sogenanntes Certificate Signing Request (CSR) erzeugt. Dieses enthält zusätzlich einige persönliche Daten über den User/Computer, wie Land, Organisation, Name. Bei OpenVPN muss der Certificate Name (CN) dem Namen des Clients entsprechen. Weiters dürfen nicht zwei Zertifikate mit dem selben Namen existieren.

Das CSR welches den öffentlichen Schlüssel und ein paar Zusatzinformationen enthält, wird nun an die CA geschickt. Die CA überprüft die Informationen auf Korrektheit und signiert den enthaltenen öffentlichen Schlüssel und die Informationen mit dem privaten Schlüssel der CA.

Das signierte Zertifikat wird an den Client zurückgesandt. Dieser kann es nun nutzen um sich gegenüber dem Server zu authentifizieren.

Zertifikate widerrufen

Es kann vorkommen, dass ein Zertifikat abhanden kommt oder gestohlen wird. Obwohl die meisten privaten Schlüssel mit einer Passphrase geschützt sind, ist es nicht optimal, dass jemand anderer im Besitz der Möglichkeit ist, sich gegenüber dem OpenVPN Server authentifizieren zu können. Daher gibt es die sogenannte Certificate Revocation List (CRL).

Eine CA kann früher ausgestellte Zertifikate kennzeichnen (und signieren) und in eine CRL schreiben. Diese Liste wird vom OpenVPN Server bei jedem Authentifizierungsversuch verwendet, um widerrufenen Zertifikaten das Authentifizieren zu verweigern.

Hinweis: Die CRL muss in regelmäßigen Abständen vom CA auf den/die OpenVPN Server gespielt werden.

Zertifizierungsstelle für den Hausgebrauch

OpenVPN bietet mit Easy-RSA eine Scriptsammlung an, die ein kleines PKI erzeugen kann. Für wenige Zertfikate ist Easy-RSA absolut brauchbar. Wer alle Schlüsselpaare auf einem Computer erzeugen möchte, kann die build-key und build-key-server Scripts von Easy-RSA nutzen. Mit ihnen wird automatisch ein Schlüsselpaar und ein Zertifikat für den öffentlichen Schlüssel erzeugt.

Persönliche Werkzeuge