KuhShop

OpenVPN mit Private-Public-Keys

Mit OpenVPN kann ein einfacher Tunnel mit statischen Schlüsseln wie in diesem Artikel beschrieben aufgebaut werden. Diese Methode ist einfach realisierbar, für mehrere Clients ist es aber auf jeden Fall empfehlenswert eine Authentifizierung mittels Private/Public-Keys durchzuführen.

Dadurch kann sowohl die Sicherheit (Geheimhaltung der privaten Schlüssel) als auch die Skalierbarkeit des VPN wesentlich erhöht werden.

Public-Key Infrastruktur

Die Erzeugung der Schlüssel und Zertifikate kann auf jedem beliebigen PC durchgeführt werden. Aus Sicherheitsgründen sollte das Root-Zertifikat weder am VPN-Server noch auf einem der Clients gespeichert sein!

Am besten wird ein eigener Rechner verwendet der für das signieren der Schlüssel verantwortlich ist.

Die Public-Key Infrastruktur (PKI) besteht aus folgenden Komponenten:

  • Ein eigenes Schlüsselpaar für den Server und jeden Client.
  • Ein Master Certificate Authority (CA) Zertifikat und einen Schlüssel zum signieren der einzelnen Schlüssel

Anpassen der Konfiguration

Die notwendigen Scripts zum erstellen der Schlüssel und Zertifikate befinden sich im Unterverzeichnis easy-rsa des OpenVPN Verzeichnisses. In openSuSE 11.1 ist das Verzeichnis /usr/share/openvpn/easy-rsa.

Eine Beispielkonfiguration befindet sich im Verzeichnis /usr/share/doc/openvpn/examples. Diese kann in das obige Verzeichnis kopiert und dort konfiguriert werden.

In diesem Verzeichnist befindet sich die Datei vars. Deren Inhalt muss zuerst angepasst werden. Dazu die Werte der folgenden Parameter korrekt anpassen:

  • KEY_COUNTRY
  • KEY_PROVINCE
  • KEY_CITY
  • KEY_ORG
  • KEY_EMAIL

Es sollte überprüft werden ob das Unterverzeichnis ./keys wichtigen Daten enthält. Alle Schlüssel und Zertifikate in diesem Verzeichnis werden weiter unten gelöscht. Falls die Daten in diesem Verzeichnis noch benötigt werden, müssen sie gesichert werden oder der Parameter KEY_DIR in der Datei vars auf ein anderes Verzeichnis gesetzt werden.

Erzeugen der Schlüssel

Mit folgenden Befehlen wird die PKI initialisiert:

$ . ./vars
$ ./clean-all
$ ./build-ca

Nach dem letzten Befehl müssen noch die Daten für das Zertifikat eingegeben werden. Danach kann das Schlüsselpaar für den Server erzeugt werden:

$ ./build-key-server server

Wiederum müssen die Daten wie beim obigen Befehl eingegeben werden. Als CommonName ist server anzugeben. Die beiden abschließenden Fragen sind jeweils mit y zu bestätigen.

Analog zum Server erfolgt die Erstellung der Keys für die Clients:

$ ./build-key <clientname>

Dabei muss für jeden erzeugten Clientschlüssel ein eindeutiger CommonName angegeben werden (z.B.: client1, client2, client3, …). Die beiden abschließenden Fragen sind wiederrum mit y zu bestätigen.

Zum Abschluss müssen für den Server noch die Diffie-Hellman Parameter und der statische Schlüssel für die TLS-Authentifizierung erzeugt werden.

$ ./build-dh
$ cd keys
$ openvpn --genkey --secret ta.key

Damit stehen im Unterverzeichnis ./keys die zuvor erzeugten Schlüssel und Zertifikate zur Verfügung. Diese können nun auf den Server und die Clients verteilt werden. In diesem Verzeichnis sollten sich nun die Folgenden Dateien befinden:

Datei Vorhanden auf Inhalt Geheim
ca.crt Server + Clients Root CA certificate nein
ca.key nur am Zertifizierungs-PC Root CA key ja
dh{n}.pem nur am Server Diffie Hellman Parameter nein
server.crt nurm am Server Server Certificate nein
server.key nur am Server Server Key ja
client1.crt nur am Client1 Client1 Certificate nein
client1.key nur am Client1 Client1 Key ja
client2.crt nur am Client2 Client2 Certificate nein
client2.key nur am Client2 Client2 Key ja
client3.crt nur am Client3 Client3 Certificate nein
client3.key nur am Client3 Client3 Key ja
ta.key nur am Server Statischer Key ja

Serverkonfiguration

Am Server unter Linux muss eine Konfigurationsdatei server.conf erzeugt werden, die in das Verzeichnis /etc/openvpn kopiert wird. Wird Windows als Betriebssystem verwendet, ist das heißt die Konfigurationsdatei server.ovpn und liegt im Verzeichnis C:\Programme\OpenVPN\config Wenn OpenVPN als Dienst ausgeführt wird, lädt der Server automatisch alle Konfigurationsdateien im oben genannten Verzeichnis.

Hier ist ein Beispiel wie der Inhalt dieser Datei aussehen kann:

server <tunnel-networkaddress> 255.255.255.0
dev tap
port 1194
proto udp
client-to-client
keepalive 15 60
comp-lzo
tls-server
tls-auth ta.key 0
ca ca.crt
cert server.crt
key server.key
dh dh1024.pem
verb 3

Weiters müssen auch die folgenden Dateien in dieses Verzeichnis kopiert werden:

  • ca.crt
  • server.key
  • server.crt
  • dh1024.pem
  • ta.key

Clientkonfiguration

Wie beim Server sollten auch am Client die Schlüssel und die Konfigurationsdatei unter Linux ins Verzeichnis /etc/openvpn kopiert werden. Unter Windows heißt das Verzeichnis wieder C:\Programme\OpenVPN\config. Der Name der Schlüssel und der Konfigurationsdatei sollte mit dem Hostnamen des Clients übereinstimmen. Unter Linux muss die Erweiterung .conf und unter Windows .ovpn heißen.

Ein Beispiel für die Konfigurationsdatei:

client
dev tap
route <server-side-networkaddress> <server-side-netmask>
proto udp
remote <server-ip> 1194
resolv-retry infinite
persist-key
persist-tun
ca ca.crt
cert <user>.crt
key <user>.key
tls-client
ns-cert-type server
tls-auth ta.key 1
comp-lzo
verb 3
                                                                                                  

Die zu kopierenden Schlüssel sind:

  • ca.crt
  • <hostname>.key
  • <hostname>.crt
  • ta.key

Aufbau des Tunnels

Zum Testen kann OpenVPN manuell, mit dem folgenden Befehl, gestartet werden:

$ openvpn <config-file-name>

Dies muss natürlich auf dem Server und auf den Clients erfolgen. Ebenso ist es möglich OpenVPN als Dienst zu starten. Dies erfolgt im Userinterface unter Windows, bzw. durch ein Ausführen der Datei /etc/init.d/openvpn unter Linux.

Wenn OpenVPN als Dienst ausgeführt werden soll empfiehlt es sich noch die folgenden Zeilen an die Konfigurationsdateien anzuhängnen.

daemon       
status /var/log/openvpn-<config-name>.log

Mit dem Befehl

$ chkconfig openvpn on

wird der openVPN-Dienstes automatisch beim Systemstart gestartet.

Siehe auch

Diskussion

Geben Sie Ihren Kommentar ein
 
netzwerk/openvpn/openvpn_mit_private-public-keys.txt · Zuletzt geändert: 2010/05/05 15:37 von juergen
Nach oben
KuhShop

Beachten sie unbedingt den Haftungsausschluss!

Recent changes RSS feed openSUSE.org Powered by PHP do yourself a favour and use a real browser - get firefox!! Driven by DokuWiki

Sofern nicht anders gekennzeichnet, steht der Inhalt dieser Seite unter dem Schutz der Creative Commons Licence:
Creative Commons License Namensnennung, Keine kommerzielle Nutzung, Weitergabe unter gleichen Bedingungen, v 3.0