OpenVPN Verbindung mit iOS Device

Public Hotspots sind eine tolle Sache. Überall ist man schnell online, um Aufgaben des täglichen Bedarfs zu erledigen. Dazu gehören z.B. Emails lesen, Kontostand abrufen etc…Wer Wert auf eine möglichst gesicherte Kommunikation legt, sollte einen public Hotspot nur zum Aufbau eines VPN Tunnels verwenden. Ansonsten besteht die Gefahr, dass dritte bzw. unbefugte den Datenverkehr mitlesen. Wie ein OpenVPN Server installiert wird, habe ich bereits beschrieben (auf DD-Wrt Router, auf OpenWrt Router, Zertifikate unter Windows). Für den Zugriff mittels iOS Device (iPhone, iPad) gibt es im AppStore die OpenVPN App. Klick


Die Konfiguration kann nicht direkt über die App erfolgen. Mittels eines Editor wird eine Datei „iOS.opvn“ mit folgendem Inhalt erzeugt.

client
dev tun
proto udp
remote YourOpenVPNServerURL 1194
resolv-retry infinite
nobind
persist-key
persist-tun
float
key-direction 1
remote-cert-tls server
verb 3
comp-lzo
cipher AES-256-CBC
auth SHA512
<ca>
content of ca.crt
</ca>
<cert>
content of client.crt
</cert>
<key>
content of client.key
</key>
<tls-auth>
content of tlsauth.key
</tls-auth>

Anbei werden die wichtigsten Konfigurationseinträge beschrieben.
dev tun: Routing Modus (muss je nach Serverkonfiguration geändert werden)
remote: Hier muss die URL, gefolgt vom gewählten Port, eingetragen werden, unter der der OpenVPN Server erreichbar ist. Da es im privaten Umfeld meistens dynamische IP Adressen vom ISP gibt, empfiehlt es sich, einen DnyDNS Dienst zu nutzen. Ich persönlich habe die Möglichkeit, den DynDNS Dienst eines Freundes nutzen zu dürfen (Danke Christian). Um das ganze jedoch über eine von mir erstellte Subdomain laufen zu lassen, habe ich bei meinem Provider einen CNAME Eintrag im DNS angelegt, der auf die DnyDNS Adresse zeigt. Somit kann ich von aussen, über einen bekannten Namen auf den OpenVPN Server zugreifen.
remote-cert-tls: Hier muss als Wert „Server“ einzutragen werden, um vor „Man in the middle“ Attacken geschützt zu sein. Funktioniert jedoch nur, wenn das Serverzertifikat auch mit „./build-key-server“ erzeugt wurde.
verb: Loglevel
cipher: Verschlüsselungsalgorithmus für die Tunnel Verschlüsselung. Hier muss der selbe Wert wie in der Server Konfiguration eingetragen werden.
auth: Hash Algorithmus. Auch hier muss der gleiche Wert wie am Server gewählt werden.
<ca>: Inhalt des ca.crt Zertifikats
<cert>: Inhalt des client.crt Zertifikats
<key>: Inhalt des client.key Zertifikats
<tls-auth>: Inhalt des tls-auth Zertifikats. Dieser Eintrag ist nur optional. Sollte aber genutzt werden, um Perfect Forward Secrecy zu aktivieren.

Die mit Easy-RSA erstellten Clientzertifikate, die zusätzlich mit einer Passphrase geschützt sind, können mit der aktuellen iOS App nicht verwendet werden. Mit dem folgenden Befehl wird das vorhandene Zertifikat so konvertiert, damit es problemlos unter iOS funktioniert.

  • openssl rsa -in client.key -aes256 -out ios.key

Wer das Zertifikat zusätzlich mit einem Passwort schützen möchte, welches bei jedem Verbindungsaufbau abgefragt wird, kann HIER nachlesen, wie es funktioniert. Die fertige „iOS.ovpn“ Datei kann jetzt über iTunes auf das iOS Device kopiert werden. Sobald die App gestartet wird, ist das Profil verfügbar und einem Zugriff auf das private Netzwerk steht nichts mehr im Wege.