HowTo: openvpn mit persönlichen Client Zertifikaten, Static Key und Authentifizierung

gobbli

Benutzer
Mitglied seit
15. Aug 2012
Beiträge
73
Punkte für Reaktionen
0
Punkte
6
Hallo zusammen,

ich habe auf die Schnelle mal ein kurzes HowTo erstellt, wie man auf der Synology mittels persönlichen Client Zertifikaten, Static Key und Authentifizierung sich am openvpn Server auf der Synology z.B. per iOS anmelden kann.

Zuerst das Package openvpn installieren und einmal ausführen und wieder beenden. Dieses führt dazu, dass alle notwendigen Configs erstellt werden und der ta.key erstellt wird. Danach mittels xca persönlichen Zertifikate generieren.

Hier habe ich mir eine Vorlage für CA, Server sowie die Clients generiert.

Anschliessend werden die Zertifikate generiert. Geht wie in der Beschreibung Erstellen von Templates für Server und Clientkeys, Erzeugen einer CA, Erzeugen eines Server-Zertifikats und Erzeugen der Client-Zertifikate vor.

Danach die generierten Zertifikate von Synology gegen eure Zertifikate im Verzeichnis /usr/syno/etc/packages/VPNCenter/openvpn/keys/ austauschen.

Anschliessend die folgende Konfiguration übernehmen und den Eintrag "PUSH Route" auf Euer Netzwerk anpssen und zum Schluss die Dateien openvpn.ovpn, ca.key, ta.key, client.crt, client.key über iTunes einspielen.
Zum Schluss nicht vergessen die Privilegien in openvpn dem entsprechenden User zuweisen.

Am Wochenende werde ich mal versuche über den iPhone Configurator ein VPN on demand einzurichten. Falls es schon einer umgesetzt hat, würde ich mich über Hilfestellung freuen.

Bitte nicht die Funktion "Konfigurationsdatei exportieren" benutzen, sondern die Config unten. Ansonsten wird es nicht funktionieren.


Viel Spaß,

Gobbli

----

Config Datei vom Server

/var/packages/VPNCenter/etc/openvpn/openvpn.conf

Code:
push "route 192.168.3.0 255.255.255.0"
push "route 10.8.0.0 255.255.255.0"
dev tun

management 127.0.0.1 1195

server 10.8.0.0 255.255.255.0

dh /var/packages/VPNCenter/target/etc/openvpn/keys/dh1024.pem
ca /var/packages/VPNCenter/target/etc/openvpn/keys/ca.crt
cert /var/packages/VPNCenter/target/etc/openvpn/keys/server.crt
key /var/packages/VPNCenter/target/etc/openvpn/keys/server.key
tls-auth /var/packages/VPNCenter/target/etc/openvpn/keys/ta.key 0

max-clients 5

comp-lzo

persist-tun
persist-key

verb 3

log-append /var/log/openvpn.log

keepalive 10 60
reneg-sec 0

plugin /var/packages/VPNCenter/target/lib/radiusplugin.so /var/packages/VPNCenter/target/etc/openvpn/radiusplugin.cnf 
#client-cert-not-required 
username-as-common-name
duplicate-cn

Client Config Datei für Openvpn auf iOS

openvpn.ovpn

Code:
dev tun
tls-client
tls-auth ta.key 1

remote your.server.here 1194

pull

proto udp
script-security 3

ca ca.crt
cert client.crt
key client.key

comp-lzo

reneg-sec 3600

auth-user-pass
ns-cert-type server

#redirect-gateway leitet den kompletten Datenstrom über openvpn
redirect-gateway
 
Zuletzt bearbeitet:

honu

Benutzer
Mitglied seit
30. Jan 2013
Beiträge
112
Punkte für Reaktionen
0
Punkte
0
Hi!
Danke für deine Anleitung! Als totaler Neuling was VPN und linux angeht, hab ich allerdings noch ein paar Fragen und hoffe, du kannst noch ein bisschen Grundlagensupport leisten :eek:

Fangen wir von vorne an (vor der Generierung eigener Zertifikate usw.): Ich habe also auf der DS (DSM 4.1) das Package VPN Server installiert und OpenVPN aktiviert (und danach deaktiviert). Unter /usr/syno/etc/packages/VPNCenter/openvpn/ finde ich nun die openvpn.conf . Soweit so gut. Gehe ich weiter zu ins Unterverzeichnis .../openvpn/keys/ werden wir folgende Dateien angezeigt:
ca.crt
ca.key
ca.srl
server.crt
server.csr und
server.key.
Als erstes wundert mich hier, dass du von einer datei namens ta.key schreibst, die ich anscheinend nicht habe. Daher die erste Frage:
1. Wieso wurde die Datei ta.key nicht angelegt oder verstehe ich hier was falsch?

Als nächstes habe ich mir mir xca installiert und habe nach der Anleitung, die die verlinkt hast, Zertifikate für Server, client und CA erstellt. Nun frage ich mich, wie ich die Zertifikate aus xca exportiere. In der verlinkten Anleitung soll man beim Export Format "PKCS #12 with Certificate Chain" wählen. Aber PKCS scheinst du ja nicht weiter zu benutzen, also wird das wohl nicht richtig sein. Daher zweite Frage:
2. Welche export-Option muss für die Client-, Serverzertifikate und CA gewählt werden? Und muss ich dann noch extra die .key Dateien erstellen lassen? Wenn ja, wie geht das?

Ich danke dir vielmals für den Support. Ich vermute zwar, dass ich nach dem lösen dieser Fragen immer noch nicht am Ziel sein werde, aber ein Schritt nach dem anderen :)

Gruß
 

gobbli

Benutzer
Mitglied seit
15. Aug 2012
Beiträge
73
Punkte für Reaktionen
0
Punkte
6
Hi,

zu 1: die ta.key wurde bei mir erzeugt, nachdem ich einmal den openvpn ein- und wieder ausgeschaltet habe. Ich nutze allerdingdie die Beta 4.2 Firmware. Keine Ahnung ob da was anders gehandelt wird. Ansonsten kannst du auch eine ta.key mit dem xca generieren und auf die DS speichern.

zu 2: die generierten Keys einfach mittels "xca" unter Zertifikate exportieren im Format "pem"
die key Fomrate kannst Du im "Private Schlüssel" unter xca exportieren. Welche Du brauchst, steht ja oben.
 

honu

Benutzer
Mitglied seit
30. Jan 2013
Beiträge
112
Punkte für Reaktionen
0
Punkte
0
Hey, vielen Dank für die schnelle Antwort.

zu 1: ist ja seltsam. Habe gerade extra nochmal die das VPN Server Package deinstalliert und neu installiert, aber der ta.key wird im Verzeichnis .../keys/ nicht erstellt. Jetzt habe ich in xca rumgesucht und auch google befragt, aber ich finde nichts: Wie kann ich den ta.key unter xca erstellen? :eek:

zu 2: Oh, das war ja easy, danke! Noch eine kurze Frage zu den Dateien: auf der DS liegen im Verzeichnis keys neben den server/ca.crt bzw. .key-Dateien auch noch eine server.csr und eine ca.srl. Müsste ich diese beiden Dateien noch löschen?

Vielen Dank nochmal!!
 

gobbli

Benutzer
Mitglied seit
15. Aug 2012
Beiträge
73
Punkte für Reaktionen
0
Punkte
6
versuche mal folgendes im Verzeichnis

Code:
cd /usr/syno/etc/packages/VPNCenter/openvpn/keys/ 
openssl dhparam -out dh1024.pem 1024
openvpn --genkey --secret ta.key

Die Befehle sollten den dh1024.pem und ta.key im Verzeichnis erzeugen.

Die Datei server.csr wird für einen Certificate Request benötigt. Sobald Du das Zertifikat ausgestellt hast, wird die Datei nicht mehr zwingend benötigt. Die ca.srl enthält die CA Serien Nummer. Würde beide Datei einfach im Verzeichnis liegen lassen. Stören nicht.

leider kann ich mienen ersten Beitrag nicht ändern. Würde dieses sonst nach als Ergänzung einfügen.
 
Zuletzt bearbeitet:

honu

Benutzer
Mitglied seit
30. Jan 2013
Beiträge
112
Punkte für Reaktionen
0
Punkte
0
Hi!
Hab ich gemacht, die ta.key Datei wurde kommentarlos erzeugt mit dem Konsolenbefehl. Bei dem Befehl zur Erstellung der dh1024.pem bekomme ich zuerst die Meldung "WARNING: can't open config file: /usr/syno/ssl/openssl.cnf". Die Datei wird dann aber trotzdem erstellt. Macht das was?
 

gobbli

Benutzer
Mitglied seit
15. Aug 2012
Beiträge
73
Punkte für Reaktionen
0
Punkte
6
mhh .. wenn die Datei erzeugt wurde und auch einen Inhalt hat (nicht posten) sollte das nichts machen.

Funktioniert jetzt alles?
 

honu

Benutzer
Mitglied seit
30. Jan 2013
Beiträge
112
Punkte für Reaktionen
0
Punkte
0
mhh .. wenn die Datei erzeugt wurde und auch einen Inhalt hat (nicht posten) sollte das nichts machen.
Ja in der Datei geht es los mit -----BEGIN DH PARAMETERS----- dann kommt eine kryptische Zeichenfolge und dann kommt -----END DH PARAMETERS-----

Ob alles funktioniert, weiß ich noch nicht. Ich muss jetzt nochmal die Zertifikate und Keys aus xca exportieren und dann die openvpn.conf anpassen. Ich bin ein bisschen langsam, hab noch nie SSH oder eine Konsole benutzt, da dauert alles etwas länger :D

Und da hab ich gleich nochmal eine Frage zu der openvpn.conf:
push "route 192.168.3.0 255.255.255.0" --- ich denke, hier muss mein Standardgateway rein, oder?
management 127.0.0.1 1195 --- muss ich hier was ändern? ist 1195 ein port, den ich irgendwie anpassen/freigeben muss?


Nochmal ganz ehrlich: vielen Dank für den support!!
 

gobbli

Benutzer
Mitglied seit
15. Aug 2012
Beiträge
73
Punkte für Reaktionen
0
Punkte
6
Und da hab ich gleich nochmal eine Frage zu der openvpn.conf:
push "route 192.168.3.0 255.255.255.0" --- ich denke, hier muss mein Standardgateway rein, oder?

Nein, da trägst Du dein "Home Subnetz" rein. Die ".0" bleibt aber auf jedenfall bestehen. Sollte Z.B. dein Standardgateway 192.168.1.1 sein dann versuche mal

push "route 192.168.1.0 255.255.255.0"

Management lass das so. Freigabe deiner Firewall nicht vergessen. Dort muss der Port 1194 und das Protokoll UDP frei gegeben werden. So muss jetzt auf einem Geburtstag. Bis später ....
 

honu

Benutzer
Mitglied seit
30. Jan 2013
Beiträge
112
Punkte für Reaktionen
0
Punkte
0
Ok, mein Standardgateways ist 192.168.2.1 (ein Speedport 722) also habe ich 192.168.2.0 genommen.

Aber leider läuft es immer noch nicht. Ich versuche als Client erstmal mein Windows 8 Notebook mit OpenVPN GUI (also der offizielle Client) über UMTS. Mit dem Setup lief gestern die normale Installation von OpenVPN mit der DS (also über die die Funktion "Konfigurationsdatei exportieren" in der DS). Der Post 1194 UDP ist am Router offen (sonst hätte es ja gestern auch nicht geklappt). Wie dem auch sei, ich habe also die openvpn.ovpn gemäß deinem Vorschlag angepasst und ins "config"-Verzeichnis gelegt, zusammen mit der ta.key, client.key, ca.crt und client.crt.
Die Verbindung wird aufgebaut und ich werde nach Username und PW gefragt. Dann sieht es erstmal so aus
Code:
Sat Feb 09 16:57:23 2013 OpenVPN 2.3.0 x86_64-w64-mingw32 [SSL (OpenSSL)] [LZO] [PKCS11] [eurephia] [IPv6] built on Jan  8 2013
Sat Feb 09 16:57:32 2013 NOTE: the current --script-security setting may allow this configuration to call user-defined scripts
Sat Feb 09 16:57:32 2013 Control Channel Authentication: using 'ta.key' as a OpenVPN static key file
Sat Feb 09 16:57:33 2013 UDPv4 link local (bound): [undef]
Sat Feb 09 16:57:33 2013 UDPv4 link remote: [AF_INET]93.219.xx.xxx:1194
Hier bleibt dann alles für ca. eine Minute stehen bevor der Fehler kommt:
Code:
Sat Feb 09 16:58:33 2013 TLS Error: TLS key negotiation failed to occur within 60 seconds (check your network connectivity)
Sat Feb 09 16:58:33 2013 TLS Error: TLS handshake failed
Sat Feb 09 16:58:33 2013 SIGUSR1[soft,tls-error] received, process restarting
Dann geht das ganze von vorne los.... Eine kurze Internetrecherche zeigt, dass der Fehler wohl oft bei Problemen mit den Zertifikaten häufig auftritt. Daher will ich später die Zertifikate nochmal in xca erstellen.

Dazu noch eine Frage: Die keys habe ich ja im Format pem exportiert. Wie muss ich die Zertifikate (CA, server, client) exportieren? pem, pem with certificate chain, pem all (trusted) certificates oder ein ganz anderes Format? Ich hoffe mal, das hier irgendwie der Fehler liegt... wenn du noch eine andere Idee hast, dann nur zu.

Um nochmal sicher zu gehen:
Im Verzeichnis /usr/syno/etc/packages/VPNCenter/openvpn/ liegt am Ende nur die openvpn.conf datei
Im Verzeichnis /usr/syno/etc/packages/VPNCenter/openvpn/keys/ liegen die ca.crt, server.crt, server.key, ta.key, dh1024.pem; d.h. die Dateien server.csr und eine ca.srl, die bei der Installation des packages angelegt wurden, können weg (ich hab sie irgendwo hin verschoben)?


Viele Grüße
 
Mitglied seit
30. Okt 2012
Beiträge
265
Punkte für Reaktionen
0
Punkte
0

gobbli

Benutzer
Mitglied seit
15. Aug 2012
Beiträge
73
Punkte für Reaktionen
0
Punkte
6
Dazu noch eine Frage: Die keys habe ich ja im Format pem exportiert. Wie muss ich die Zertifikate (CA, server, client) exportieren? pem, pem with certificate chain, pem all (trusted) certificates oder ein ganz anderes Format? Ich hoffe mal, das hier irgendwie der Fehler liegt... wenn du noch eine andere Idee hast, dann nur zu.

Ich habe gerade noch mal bei mir nachgeschaut. Habe die Keys bei mir einfach als PEM exportiert.

Um nochmal sicher zu gehen:
Im Verzeichnis /usr/syno/etc/packages/VPNCenter/openvpn/ liegt am Ende nur die openvpn.conf datei

Schon komisch, obwohl in der openvpn.conf die Keys auf einen anderen Ordner zeigen, liegt bei mir nochmal der Ornder keys in dem oben genannten Verzeichnis mit folgendem Inhalt:

Code:
   4 -r--------    1 root     users         1464 Feb  5 19:13 ca.crt
   4 -r--------    1 root     users         1679 Feb  5 19:11 ca.key
   4 -rw-rw-rw-    1 root     users         1464 Feb  5 19:13 server.crt
   4 -rw-rw-rw-    1 root     users         1675 Feb  5 19:12 server.key
   4 -rw-------    1 root     root           636 Feb  5 20:14 ta.key

Probier das mal, wenn der bei mir fehlt, kann ich mich auch nicht mehr connecten.
 

gobbli

Benutzer
Mitglied seit
15. Aug 2012
Beiträge
73
Punkte für Reaktionen
0
Punkte
6
So, zwischenzeitlich habe ich wohl rausgefunden, dass VPN on demand mittels dem synology VPN Packet unter iOS nicht funktioniert.
Die synology erwartet zwingend ein username/passwort. Dieses kann man aber über das iPhone Konfigurationstool nicht übergeben. Zumindest konnte ich bis jetzt keine Lösung finden. Normal kann man username/passwort in einem File abspeicher und mittels auth-user-pass pass.txt übergeben.

Falls jemand einen Lösungsansatz hat, bitte melden.

-Gobbli-
 

honu

Benutzer
Mitglied seit
30. Jan 2013
Beiträge
112
Punkte für Reaktionen
0
Punkte
0
So, ich habe es jetzt auch hinbekommen :D
Hab noch viel rumprobiert und dann alles nochmal von vorne. Als kleinen Unterschied zu deiner Lösung habe ich nicht mit einzelnen keys, crts, und cas gearbeitet sondern eine pksc erstellt, die die Dinger ja alle zusammenfasst.

Vielen Dank für das super Tutorial plus Hilfe... alleine hätte ich nicht mal gewusst, wo ich anfangen muss. ;)

OpenVPN läuft jetzt mit persönlichen Zertifikaten usw. auf meinem Laptop, iPad und Android Galaxy Note 2. Jetzt kann ich erstmal alle Ports bis auf 1194 zumachen. Sehr schön!
 

jahlives

Moderator
Mitglied seit
19. Aug 2008
Beiträge
18.275
Punkte für Reaktionen
2
Punkte
0
@gobbli
wieso erstellst du einen ta.key wenn du ihn nachher im Client gar nicht verwendest?
 

gobbli

Benutzer
Mitglied seit
15. Aug 2012
Beiträge
73
Punkte für Reaktionen
0
Punkte
6
@gobbli
wieso erstellst du einen ta.key wenn du ihn nachher im Client gar nicht verwendest?

Hi, der ta.key wird fūr die tls-Authentifizierung benötigt. Schau mal im ersten Posting, zweiter Eintrag.
Kann ich mein erstes Posting irgendwie wieder editieren? Würde da gerne was korrigieren.

Gruß, Gobbli
 

jahlives

Moderator
Mitglied seit
19. Aug 2008
Beiträge
18.275
Punkte für Reaktionen
2
Punkte
0
sorry dort oben habe ich es übersehen. Mein Fehler :)
 
Mitglied seit
30. Okt 2012
Beiträge
265
Punkte für Reaktionen
0
Punkte
0
So, zwischenzeitlich habe ich wohl rausgefunden, dass VPN on demand mittels dem synology VPN Packet unter iOS nicht funktioniert.

-Gobbli-

gibt es denn kein alternatives OpenVPN-Paket für die Diskstation? Vielleicht könnte man es damit probieren.
 
Mitglied seit
30. Okt 2012
Beiträge
265
Punkte für Reaktionen
0
Punkte
0
habe gerade gesehen, dass es über ipkg auch einen OpenVPN-Server gibt. Wäre neMöglichkeit das über den auszuprobieren.
 
NAS-Central - Ihr Partner für NAS Lösungen