Erzeugen einer PKI mit EasyRSA

Aus OpenVPN Wiki

Wechseln zu: Navigation, Suche

Inhaltsverzeichnis

Einleitung

Bitte testet auch dieses Tool, dieses Tool erzeugt die PKI automatisch.

OpenVPN bietet mit EasyRSA eine Scriptsammlung um eine dateibasierte, minimale Zertifizierungsstelle zu generieren. Diese Scriptsammlung liegt dem OpenVPN Source Package sowie den meisten RPMs bei.

Hinweis: In der Windowsversion des Installationspaket liegt nur eine veraltete Version der Sammlung bei. Vor Erzeugung der PKI sollte der easy-rsa Ordner mit dem des Source Package ausgetauscht werden.

Erzeugen der Zertifizierungstelle (CA (Certificate Authority))

vars bzw. vars.bat editieren

Dies ist die vars Datei (mit weniger Kommentaren) unter Linux, bei Windows sieht sie sehr ähnlich aus:

export D=`pwd`
export KEY_CONFIG=$D/openssl.cnf
export KEY_DIR=$D/keys

echo NOTE: when you run ./clean-all, I will be doing a rm -rf on $KEY_DIR

export KEY_SIZE=1024 # oder 2048

# folgende Variablen anpassen:
export KEY_COUNTRY=KG
export KEY_PROVINCE=NA
export KEY_CITY=BISHKEK
export KEY_ORG="OpenVPN-TEST"
export KEY_EMAIL="me@myhost.mydomain"

export OPENVPN=openvpn # nötig für easy-rsa 2.0 unter Debian Squeeze

Als nächstes müssen wir unter Windows eine DOS Box öffnen (Start->Ausführen: cmd) und in unser easy-rsa Verzeichnis wechseln (wo die vars.bat) ist. Unter Linux analog eine Shell öffnen und ins easy-rsa Verzeichnis wechseln.

Die vars Datei findet man unter Linux folgendermaßen:

cd / && find -iname vars

Unter Debian 4.0r3 kann EasyRS unter folgendem Pfad gefunden werden: /usr/share/doc/openvpn/examples/easy-rsa/

NUR Windows um configurations Files an die richtige Stelle zu kopieren

auf der DOS Box:

init-config

vars einlesen und die CA initialisieren

In der DOS Box oder Shell die vars bzw. vars.bat Datei ausführen ($ und > sind die Prompts, nicht eintippen):

$ . ./vars

Achtung, das Leerzeichen ist wichtig. Die Datei wird nicht ausgeführt sondern im aktuellen Shellkontext eingelesen.

bzw.

> vars.bat

Damit setzen wir einige Umgebungsvariablen, daher sollten wir die DOS Box oder Shell ab jetzt nicht schließen bevor nicht alle Zertifikate/Dateien erstellt wurden. Sonst muß vars wieder eingelesen werden.

Danach wird die CA initialisiert:

$ ./clean-all
> clean-all.bat

Diesen Vorgang nur einmal ausführen, danach nie wieder!

CA-Key und CA-Cert erzeugen

$ ./build-ca
> build-ca.bat

Beim Common Name (CN) einen einfachen Namen (z.B. MYvpnCA) angeben. Im keys-Verzeichnis liegt nun das Schlüsselpaar der CA. Der Schlüssel ca.key ist auf jedenfall geheim zu halten!

Diffie-Hellman Parameter erzeugen

$ ./build-dh
> build-dh.bat

Diese Datei wird vom OpenVPN Server verwendet um bei vielen gleichzeitugen Clientverbindungen den TLS-Handshake zu beschleunigen.

Erzeugen von Schlüsselpaaren direkt von der CA

Einleitung und Sicherheitshinweise

Sofern ein Zertifikat nachträglich ausgestellt wird, muss das vars-Script erneut ausgeführt werden, bevor die folgenden Befehle ausgeführt werden.

Im Normalfall werden die Schlüsselpaare nicht auf der CA sondern auf den Servern und Clients erzeugt und lediglich von der CA signiert. Siehe auch Public Key Infrastructure. In kleinen Installationen, so wie dieser, kann es jedoch ausreichen, die Schlüsselpaare am CA-Rechner zu erzeugen, zu signieren und schließlich auf die Rechner zu kopieren.

Einen Private-Key sollte man nur über einen sicheren Kanal kopieren. (Gesicherte Verbindung, USB Stick, evtl. LAN)

Erzeugen eines Server-Schlüsselpaars

$ . ./vars
$ ./build-key-server server01

bzw.

> vars.bat
> build-key-server.bat server01

Als Common Name (CN) ebenfalls server01 angeben. Am besten nie Sonderzeichen, Abstände, ugl. für den CN verwenden.

Hinweis: Das Challenge Password ist nicht relevant und dient in diesem Fall keinem Sicherheitsaspekt. Der Server-Key wird standardmäßig ohne ein Password erzeugt.

Die Dateien ca.crt, server01.crt, server01.key und - falls noch nicht geschehen - die dh1024.pem aus dem keys-Verzeichnis auf die Server-Maschine kopieren.

Achtung: Diese Keys nur für Server verwenden! In den Clients folgende Konfigurationsdirektive ergänzen:

ns-cert-type server

Erzeugen eines Client-Schlüsselpaars (mit Passwort)

$ . ./vars
$ ./build-key-pass vpnclient01

bzw.

> vars.bat
> build-key-pass.bat vpnclient01

Als Common Name (CN) ebenfalls vpnclient01 angeben. Die Passphrase (nicht Challenge Password) dient der Sicherheit des Private Keys. Sollte man sie vergessen, ist ein Wiederherstellen des Keys nicht mehr möglich!

Hinweis: Organizational Unit Name und Common Name dürfen die gleiche Bezeichnungen haben. Wichtig ist aber, daß diese beim erstellen weiterer Zertifikate unterschiedlich sein müssen! (Organizational Unit Name1 = Common Name1 ungleich Organizational Unit Name2 = Common Name2 ungleich Organizational Unit Name3 = Common Name3 ....)

Die Dateien ca.crt, vpnclient01.crt und vpnclient01.key werden über einen sicheren Kanal auf die Client-Maschine kopiert.

Erzeugen eines Client-Schlüsselpaars (ohne Passwort)

Für das Erzeugen eines Client-Keys ohne Passphrase, einfach build-key statt build-key-pass verwenden. Im allgemeinen ist dies jedoch nicht zu empfehlen.

$ . ./vars
$ ./build-key vpnclient01

bzw.

> vars.bat
> build-key.bat vpnclient01

Schlüsselübersicht

Hier noch eine kleine Zuordungstabelle, welche Zertifikate wo hinkommen:

Dateiname Speicherort Beschreibung geheim
ca.crt Server + Clients Root CA Zertifikat Nein
ca.key im Safe :) Root CA Schlüssel Ja
dh{Wert}.pem Server Diffie Hellman Nein
server.crt Server Server Zertifikat Nein
server.key Server Server Schlüssel Ja
vpnclient01.crt Client 1 Client 1 Zertifikat Nein
vpnclient01.key Client 1 Client 1 Schlüssel Ja
Persönliche Werkzeuge