Neues Entdecken

Ihr Internet-Partner seit 1997.

Installation von OpenVPN Server in Windows Server 2012 R2 und Client unter Windows 10 (und abwärts).
Das HOWTO beschreibt das Setup des Servers, die Erstellung von Keys und die Integration von Clients.

Revision, 26.05.2017:
– Gilt für OpenVPN 2.4.2 Setup
– Windows Server 2016 kompatibel


Download & Installation

Download des Installers (“Installer, Windows Vista and later”) unter www.openvpn.net – OpenVPN Community Software, bzw. Community Downloads.

Unter “Choose Components” wählen wir sämtliche Komponenten aus, explizit auch die OpenVPM RSA Certificate Management Scripts.

Danach kann OpenVPN installiert werden – Wir bestätigen die Sicherheitsfrage bezüglich “TAP-Windows Provider V9”. Danach ist der Server schon fast einsatzbereit.


Vorbereitungen

Wir wechseln ins Verzeichnis easy-rsa (Meistens unter C:\Programme\OpenVPN) und benennen folgende Datei um:

vars.bat.sample in vars.bat

Danach editieren wir vars.bat und passen folgende Zeilen unseren Bedürfnissen an:

set KEY_COUNTRY=CH
set KEY_PROVINCE=ZH
set KEY_CITY=Zuerich
set KEY_ORG=MeineFirma AG
set KEY_EMAIL=support@meinefirmag.ch
set KEY_CN=server01.meinefirma.ch
set KEY_NAME="Meine Firma OpenVPN Key"
set KEY_OU="IT & Networking"
set PKCS11_MODULE_PATH=changeme
set PKCS11_PIN=1234

Es darf kein Wert leer bleiben. Die PKCS11_MODULE_PATH sowie PKCS11_PIN kann so belassen werden.

 

Weiter passen wir die Keysize auf mindestens 2048 an, empfehlenswert wäre 4096.

set KEY_SIZE=4096

 

Wir legen den Pfad zur openssl.cnf fest. Andernfalls könnten wir folgende Warnmeldung beim Generieren der Zertifikate erhalten:

WARNING: can't open config file: /etc/ssl/openssl.cnf

 

Hierzu ergänzen wir das vars.bat (am Ende der Datei) mit folgender Zeile (in unserem Fall ein englisches Windows 2012 R2 oder 2016, daher der Pfad C:\Program Files\OpenVPN\easy-rsa\openssl-1.0.0.cnf).

set OPENSSL_CONF=C:\Program Files\OpenVPN\easy-rsa\openssl-1.0.0.cnf

Nun setzen wir die Umgebungsvariablen mittels Ausführen (in der Kommandozeile) des vars.bat


Danach werden alle Files zurückgesetzt und die Zertifikationsinstallation vorbereitet mittels clean-all.bat
Achtung:
Dies überschreibt sämtliche zuvor erstellten Zertifikate! Die anfängliche Fehlermeldung kann ignoriert werden – das Verzeichnis “keys” wird erstmals erstellt.


Zertifikate erstellen

Nun beginnen wir mit der Erstellung der einzelnen Keys. Folgende Keys werden nun erstellt:

CA (build-ca.bat)
DH (build-dh.bat)
Server-Zertifikat (build-key-server.bat)

Client-Zertifikat(e) (build-key.bat)

 

Erstellen von CA und DH Keys via Konsole (einmalig).

Vor der Erstellung eines Keys muss immer vars.bat ausgeführt werden. Nun generieren wir den CA Key mittels build-ca.bat (mit den Eigenschaften, welche wir mittels vars.bat angegeben haben), indem wir einfach mit Enter bestätigen.


Als nächstes erstellen wir den DH Key mittels build-dh.bat

Achtung: Bei einer Schlüssellänge von 4096 kann das Generieren der DH-Parametern mehr als eine Stunde andauern. Dies je nach Systemleistung.


Nun generieren wir den Private Server Key mittels build-key-server.bat. Wir bestätigen zweimal mit Yes, damit das Zertifikat signiert und erstellt wird. Das Passwort wird leer gelassen. Mittels folgendem Command wird der Server-Key erstellt:

build-key-server.bat <Servername>

Gemäss unseres Beispiels lautet der Befehl: build-key-server.bat Server01

Zusammengefasst sollte die komplette Erstellung folgendermassen aussehen:


Nun generieren wir den Client Key mittels build-key.bat. Wir geben beim “Common Name” den Clientnamen an, um später mehrere Clients im Logfile des Servers unterscheiden zu können. Wir bestätigen zweimal mit Yes, damit das Zertifikat signiert und erstellt wird. Optional kann ein Passwort angegeben werden. Dieses wird der OpenVPN Client beim Verbindungsaufbau mit dem Server abfragen. Somit können wir sicherstellen, dass unser Zertifikat in falschen Händen nicht missbraucht werden kann. Mittels folgendem Command wird der Client-Key erstellt:

build-key.bat <Clientname>

In unserem Beispiel lautet der Befehl: build-key.bat Client01

Eine komplette Erstellung sollte folgendermassen aussehen:


Nun sind die nötigen Keys erstellt. Bei einer Client-Installation sind immer folgende Keys nötig:

ca.crt
client.crt
client.key

Die restlichen Keys sind privat und werden den Clients nicht mitgegeben.


Konfiguration Server

Wir erstellen folgende Verzeichnisse:

C:\Programme\OpenVPN\server-keys
C:\Programme\OpenVPN\log
(meistens schon vorhanden)
C:\Programme\OpenVPN\ccd

Wir kopieren die Dateien dh1024.pem, ca.crt, Server01.crt und Server01.key, welche in C:\Programme\OpenVPN\easy-rsa\keys zu finden sind, in das Verzeichnis C:\Programme\OpenVPN\server-keys.

Unser server.ovpn für eine Roadwarrior-Konfiguration sieht in etwa folgendermassen aus (ein Backslash muss jeweils mit einem weiterem Backslash escaped werden) – das Configfile legen wir unter C:\Programme\OpenVPN\config ab.

#################################################
# OpenVPN (MvA-Networks Conf)
# VPN Server Configuration
#
# Copyright 2006-2017 (20.12.06) www.mva.ch
# MvA Internet Services GmbH
#################################################

local 192.168.1.100
port 1194
proto udp
dev tun

# ----------------------------------------------
# Zertifikate
# ----------------------------------------------

dh "C:\\Programme\\OpenVPN\\server-keys\\dh1024.pem"
ca "C:\\Programme\\OpenVPN\\server-keys\\ca.crt"
cert "C:\\Programme\\OpenVPN\\server-keys\\Server01.crt"
key "C:\\Programme\\OpenVPN\\server-keys\\Server01.key"

# ----------------------------------------------
# Server-Setup
# ----------------------------------------------

server 10.19.15.0 255.255.255.0
ifconfig-pool-persist "C:\\Programme\\OpenVPN\\ipp.txt"
client-to-client

# ----------------------------------------------
# Client-Settings (inkl Special Dir)Files
# ----------------------------------------------

client-config-dir "C:\\Programme\\OpenVPN\\ccd"
push "route 192.168.1.0 255.255.255.0"
push "dhcp-option DNS 192.168.1.10"

# ----------------------------------------------
# Defaults
# ----------------------------------------------

keepalive 10 120
comp-lzo
persist-key
persist-tun

# ----------------------------------------------
# Logging
# ----------------------------------------------

status "C:\\Programme\\OpenVPN\\log\\openvpn-status.log"
log "C:\\Programme\\OpenVPN\\log\\openvpn.log"
log-append "C:\\Programme\\OpenVPN\\log\\openvpn.log"
verb 3

Im obigen Fall gehen wir davon aus, dass der Server in einem internen LAN: 192.168.1.0/24 steht und der Client auf alle Hosts in dem Lan Zugriff haben wird (als Bridge). Der Server selbst hat die interne IP-Adresse 192.168.1.100. Zudem weisen wir dem Client den internen DNS Server 192.168.1.10 zu.

Zusammenfassung:
Netzwerk: 192.168.1.0
IP des Servers: 192.168.1.100
DNS-Server: 192.168.1.10

Nach der erfolgreichen Erstellung der Verzeichnisse und Implementation der Konfiguration kann OpenVPN via Services in der Windows-Systemumgebung gestartet werden. Dazu geben wir in der Konsole folgendes ein:

net start OpenVPNService

Somit sollte (sofern auf der Firewall auch die richtigen Ports geöffnet sind, in unserem Falle UDP Port 1194) ein Client eine VPN Verbindung zum Server aufnehmen können.


Konfiguration Clients

Download des Installers (je nach Client-Version,bei Windows 10: “Installer, Windows Vista and later”) unter www.openvpn.net – OpenVPN Community Software, bzw. Community Downloads.

Die Auswahl der Komponenten muss nicht angepasst werden, wir wählen die Standard-Installation. Wir bestätigen die Sicherheitsfrage bezüglich “TAP-Windows Provider V9” (Installieren).

OpenVPN Installation Windows 2012


Nach erfolgreicher Installation kopieren wir die oben vorbereiteten Client Keys:

ca.crt
Client01.crt
Client01.key

ins dafür vorgesehene Verzeichnis, beispielsweise C:\Program Files\OpenVPN\config. Danach erstellen wir eine Config in demselben Verzeichnis (Bsp. client.ovpn), wobei x.x.x.x der externen IP (des Routers, wenn Portforwarding vorhanden) des VPN Servers entspricht. Das Verbose tag (verb) kann nach erfolgreichen Tests auf 1 oder 0 gesetzt werden, damit nicht sämtliche Informationen den Benutzer verwirren, wenn das VPN startet.

##############################################
# MvA-Networks Connect. OpenVPN ClientScript #
##############################################

client
dev tun

proto udp
remote xxx.xxx.xxx.xxx 1194
resolv-retry infinite
nobind
persist-key
persist-tun

ca "C:\\Program Files\\OpenVPN\\config\\ca.crt"
cert "C:\\Program Files\\OpenVPN\\config\\Client01.crt"
key "C:\\Program Files\\OpenVPN\\config\\Client01.key"

comp-lzo
verb 3

Das OpenVPN GUI zum manuellen Start des OpenVPN Clients muss als Administrator ausgeführt werden.

Nun kann in der Taskliste das VPN via Icon gestartet werden.
Achtung: Der OpenVPN Client benötigt zum konfigurieren der Netzwerkeinstellungen Administrator-Rechte!

Nach erfolgreicher Verbindung sollte der Clientcomputer ins Remotenetzwerk integriert worden sein.

OpenVPN Installation Windows 2012

17 Kommentare

  • Interessanter Beitrag. Alles ist ziemlich ausführlich erzählt. Und wann wird der Server schon total einsatzbereit?

    • Sobald der Server komplett konfiguriert wurde – also nach dem Start des Dienstes.

  • Soll wohl eigentlich set OPENSSL_CONF=C:\Programme\OpenVPN\easy-rsa\openssl-1.0.0.cnf und nicht …cfg heißen… :-)

  • Administratorrechte sind nicht unbedingt nötig zum Verbinden des Clients. Es reicht wenn der User in der Gruppe Netzwerkoperatoren drin ist.

  • Man sollte in der openssl.cnf vor dem Erstellen der CA und Serverkey/Certs noch den “default_md” auf etwas anderes als “md5” setzen(z.B. sha256), da MD5 nicht mehr sicher ist.

  • Hallo,

    wenn ich in der vars.bat den Ordner für keys definiere und in der cmd prompt clean-all.bat ausführe bekomme ich eine Fehlermeldung die nicht der in dem tutorial entspricht:

    Folgendes steht in der vars.bat:

    set C:\Program Files\OpenVPN=keys

    Und folgenden Fehler bekomme ich angezeigt:

    C:\Program Files\OpenVPN\easy-rsa>clean-all.bat
    Syntaxfehler.
    Syntaxfehler.
    1 Datei kopiert.
    1 Datei kopiert.

    Wenn ich in dem OpenVPN Ordner reinschaue wird auch kein keys Ordner erstellt.

    Wo hab ich denn hier einen Fehler gemacht?

    • Die vars.bat sollte in etwa folgenden Inhalt haben:

      @echo off
      rem Edit this variable to point to
      rem the openssl.cnf file included
      rem with easy-rsa.
      
      set HOME=%ProgramFiles%\OpenVPN\easy-rsa
      set KEY_CONFIG=openssl-1.0.0.cnf
      
      rem Edit this variable to point to
      rem your soon-to-be-created key
      rem directory.
      rem
      rem WARNING: clean-all will do
      rem a rm -rf on this directory
      rem so make sure you define
      rem it correctly!
      set KEY_DIR=keys
      
      rem Increase this to 2048 if you
      rem are paranoid.  This will slow
      rem down TLS negotiation performance
      rem as well as the one-time DH parms
      rem generation process.
      set KEY_SIZE=1024
      
      rem These are the default values for fields
      rem which will be placed in the certificate.
      rem Change these to reflect your site.
      rem Don't leave any of these parms blank.
      
      set KEY_COUNTRY=US
      set KEY_PROVINCE=CA
      set KEY_CITY=SanFrancisco
      set KEY_ORG=OpenVPN
      set KEY_EMAIL=mail@host.domain
      set KEY_CN=changeme
      set KEY_NAME=changeme
      set KEY_OU=changeme
      set PKCS11_MODULE_PATH=changeme
      set PKCS11_PIN=1234
      

      Dann sollte auch clean-all.bat keinen Fehler beim Ausführen liefern.

  • Ok vielen Dank für die Hilfe. Ich werde das jetzt testen.
    Ich nahm an die config würde es erforderlich machen das man einen Pfad angeben muss wo man den keys Ordner erstellt haben möchte… =/

    Mir ist aufgefallen das, bei meiner OpenVPN Installation keine Möglichkeit gegeben ist opensll DLL’s zu installieren. Kann es sein das diese mittlerweile fester Bestandteil von OpenVPN sind und nicht mehr zusätzlich installiert werden müssen? Ich habe die Version 2.4.2 installiert.

  • Muss leider direkt noch eine blöde Frage hinterherschieben.

    “Zitat

    Nach der erfolgreichen Erstellung der Verzeichnisse und Implementation der Konfiguration kann OpenVPN via Services in der Windows-Systemumgebung gestartet werden. Dazu geben wir in der Konsole folgendes ein:

    net start “OpenVPN Service”

    Zitat Ende”

    Wo finde ich denn diese Systemumgebung? Ist damit die cmd prompt gemeint oder vielleicht die Windows Powershell?

    Wenn ich dort diesen Befehl eingebe, bekomme ich nur den Fehler:
    “C:Users\#######> net start “OpenVPN Service”
    Der Name für den Dienst ist ungültig.”

    Wenn ich die Server Config über rechtsklick starte bekomme ich den Fehler:
    “Verbindung zum Server ist fehlgeschlagen”

    “OpenVPN terminated with Exit code 1. See log file for Details.

    Aber in dem erstellten Log Ordner wird nichts erstellt.
    Ich habe extra nochmal die Pfadangaben in der config überprüft. =/

    Weiß hier jemand woran das ganze scheitert?

    • 1. Systemumgebung = vereinfacht das CMD
      2. Es kann sein, dass der Servicename im Laufe der Paketinstaller-Versionen geändert hat.

      Wir testen das Setup mit einem aktuellen Paket und werden ggf. Anpassungen nachreichen.

    • Die Anleitung ist überarbeitet.

  • Hallo,
    das war ja einfach einzurichten …. aber ….

    Die VPN steht, allerdings mit der IP 10.19.15.6 allerdings komme ich nicht
    in mein Netzwerk. Laut Status werden die Routen auch gesetzt.

    Whats wrong?

    Gruß Stefan

    • Auch kommen Sie nicht auf den Server, 192.168.1.100 – oder hat der eine andere IP, auf welche Sie zugreifen können.

  • Hallo,

    also:
    local 192.168.2.207

    server 192.168.10.0 255.255.255.0

    push “route 192.168.2.0 255.255.255.0”
    push “dhcp-option DNS 192.168.2.1”

    • Und der Server ist erreichbar? Wir können ihnen (leider nicht kostenlos) sicher telefonisch bei der Konfiguration helfen, sofern Sie möchten.

  • Ja, ich bekomme die 192.168.10.6 und komme per RD auf den Server, der hat dann die 192.168.10.1. Soweit ist ja alles richtign nur leider komme ich nicht z.B. auf den Router 192.168.2.1

    Grundlegend habe ich doch richtig gedacht? Ich spiel noch ein bißchen rum.

    Ansonsten komme ich gerne auf Ihr Angebot zurück oder setzte wieder eine Endian ein.

Kommentieren