OpenVPN: Unterschied zwischen den Versionen
JanC (Diskussion | Beiträge) (→Linux / Mac OS) |
Leo (Diskussion | Beiträge) (→Zertifikat erstellen: Bessere Übersicht für das erstellen unterschiedlicher Zertifikate) |
||
(50 dazwischenliegende Versionen von 8 Benutzern werden nicht angezeigt) | |||
Zeile 1: | Zeile 1: | ||
− | Mit der Software OpenVPN läßt sich eine gesicherte Verbindung zwischen dem Opennet-Gateway und dem Computer des Endbenutzer herstellen. Die Anleitung beschreibt die Konfiguration von OpenVPN auf Deinem eigenen Computer, alternativ kannst Du auch das vorkonfigurierte OpenVPN auf dem Accesspoint nutzen. Bei Verwendung eines mobilen Notebooks muß OpenVPN auf dem Notebook installiert werden. | + | == Vorwort == |
+ | Mit der Software OpenVPN läßt sich eine gesicherte Verbindung zwischen dem Opennet-Gateway und dem Computer des Endbenutzer herstellen (ein sog. Virtuelles Privates Netz). Die Anleitung beschreibt die Konfiguration von OpenVPN auf Deinem eigenen Computer, alternativ kannst Du auch das vorkonfigurierte OpenVPN auf dem [[Accesspoint]] nutzen. Bei Verwendung eines mobilen Notebooks muß OpenVPN auf dem Notebook installiert werden. | ||
+ | |||
+ | <div style="background-color:#EEEEEE;"> | ||
+ | '''DISCLAIMER - Keine öffentliche Zertifizierungsstelle!''' | ||
+ | |||
+ | Die Nutzung der auf Anfrage von der Opennet Initiative ausgestellten Zertifikate ist nur für Opennet-interne Zwecke sinnvoll. | ||
+ | An uns gestellte Anfragen für Zertifikate für Nutzung '''für Opennet-fremde Zwecke''' demonstrieren ein grundlegendes Unverständnis der benutzten Algorithmen und Technologien beim Anfragesteller, und werden von uns nicht bearbeitet. | ||
+ | </div> | ||
== Installation == | == Installation == | ||
Zeile 10: | Zeile 18: | ||
'''Linux''': http://openvpn.net/download.html + Linux-Nutzer achten darauf, dass TUN/TAP-Unterstüzung durch Kernel bereit gestellt wird (Modul tun, Kernel-Option CONFIG_TUN bzw. "Universal TUN/TAP device driver support"). | '''Linux''': http://openvpn.net/download.html + Linux-Nutzer achten darauf, dass TUN/TAP-Unterstüzung durch Kernel bereit gestellt wird (Modul tun, Kernel-Option CONFIG_TUN bzw. "Universal TUN/TAP device driver support"). | ||
− | '''Mac OS''': http://tunnelblick.net/ (OpenVPN mit graphischer Nutzerschnittstelle) | + | '''Mac OS''': http://tunnelblick.net/ (OpenVPN mit graphischer Nutzerschnittstelle, kann auch per Homebrew installiert werden) |
== Zertifikat erstellen == | == Zertifikat erstellen == | ||
− | Für die Verschlüsselung und Authentifizierung innerhalb des Opennets ist ein digitales Zertifikat (Cert) und ein digitaler Schlüssel (Key) notwendig. Um das Zertifikat erstellen zu können, musst du zuerst auf deinem Rechner einen Key erzeugen. Mit dem von dir erzeugten Key wird dann eine ''Request''-Datei (Certificate Sign Request - '''.csr''') erstellt. Diese ''Request''-Datei wird an [mailto:csr@opennet-initiative.de csr@opennet-initiative.de] geschickt. | + | Für die [[Verschlüsselung]] und Authentifizierung innerhalb des Opennets ist ein digitales [[Zertifikat]] (Cert) und ein digitaler Schlüssel (Key) notwendig. Um das '''Zertifikat für das Opennet''' erstellen zu können, musst du zuerst auf deinem Rechner einen Key erzeugen. Mit dem von dir erzeugten Key wird dann eine ''Request''-Datei (Certificate Sign Request - '''.csr''') erstellt. Diese ''Request''-Datei wird an [mailto:csr@opennet-initiative.de csr@opennet-initiative.de] geschickt. |
− | Hier wird daraus dann mit | + | Hier wird daraus dann mit Hilfe des [http://de.wikipedia.org/wiki/Digitales_Zertifikat Stamm-Zertifikates] vom Opennet Dein Zertifikat ('''.crt''' Datei) erstellt. Das ist dann durch die [[Opennet CA]] beglaubigt. Diese Zertifikate dienen ausschließlich der Absicherung des Opennets. |
=== Windows === | === Windows === | ||
Zeile 27: | Zeile 35: | ||
vars.bat | vars.bat | ||
mkdir keys | mkdir keys | ||
− | openssl req -days 3650 -nodes -new -keyout keys\VornameNachname.key | + | openssl req -days 3650 -nodes -new -keyout keys\VornameNachname.key -out keys\VornameNachname.csr -config openssl.cnf |
− | + | ||
</pre> | </pre> | ||
− | Es wurden jetzt die notwendige Konfigurationsdatei erstellt, die Umgebungsvariablen geladen und das Verzeichnis '''keys''' im Installationsordner von OpenVPN erstellt. Zuletzt wird eurer Schlüssel und ein Zertifikatsantrag erstellt. Ihr müsst dabei einige Angaben ausfüllen. | + | Es wurden jetzt die notwendige Konfigurationsdatei erstellt, die Umgebungsvariablen geladen und das Verzeichnis '''keys''' im Installationsordner von OpenVPN erstellt. Zuletzt wird eurer Schlüssel und ein Zertifikatsantrag erstellt. Ihr müsst dabei einige Angaben ausfüllen (siehe im extra Abschnitt unten). |
+ | |||
+ | Nach der Eingabe deiner Daten liegt im Verzeichnis keys/ dein eigener Schlüssel '''VornameNachname.key''' und die ''Request''-Datei namens '''VornameNachname.csr'''. Diese Datei (und nur diese Datei) schickst du jetzt an die [[Opennet CA]] Das '''nur für Opennet Zwecke gültige''' signierte Zertifikat kommt dann per E-Mail zurück. Da es manuell erzeugt werden muss, bitte etwas Geduld. | ||
+ | |||
+ | Dazu musst du dir noch die Opennet-CA Datei downloaden und du kommst insgesamt auf vier Dateien: | ||
+ | * ca.crt | ||
+ | * VornameNachname.key | ||
+ | * VornameNachname.csr | ||
+ | * VornameNachname.crt | ||
+ | |||
+ | === Linux / Mac OS === | ||
+ | |||
+ | In einem beliebigen Verzeichnis (z.B. Homeverzeichnis) den Request erstellen mit | ||
+ | |||
+ | openssl req -days 3650 -nodes -new -keyout VornameNachname.key \ | ||
+ | -out VornameNachname.csr -config /etc/ssl/openssl.cnf | ||
+ | |||
+ | Was du hier eintragen musst, kann du aus dem extra Abschnitt weiter unten entnehmen. | ||
+ | |||
+ | Wenn das Verzeichnis /etc/ssl nicht existiert, und Openssl installiert ist, liegen die Dateien auch in /usr/share | ||
+ | Mit "ln -s /usr/share/ssl /etc/ssl" einen Link erstellen (als root), oder die Dateinamen entsprechend anpassen. | ||
+ | |||
+ | Wenn man bei -keyout und -out kein Verzeichnis angegeben hat, finden sich die Dateien im aktuellen Verzeichnis wieder. | ||
+ | |||
+ | Das übrige Vorgehen ist identisch mit dem vorgegangen Windows-Abschnitt. | ||
+ | |||
+ | === Angaben ausfüllen === | ||
+ | |||
+ | Beim Erstellen von Opennet Zertifikaten sind folgende Daten auszufüllen: | ||
− | |||
* '''Organization Name:''' deinen Namen (zusammen geschrieben, keine Sonderzeichen) | * '''Organization Name:''' deinen Namen (zusammen geschrieben, keine Sonderzeichen) | ||
− | * '''Common Name:''' muss aus Gründen der eindeutigen Zuordnungsbarkeit der OpenVPN IP Addressen zum verantwortlichen Nutzer | + | * '''Common Name:''' muss aus Gründen der eindeutigen Zuordnungsbarkeit der OpenVPN IP Addressen zum verantwortlichen Nutzer einer vorgegebenen Konvention entsprechen: |
+ | ** X.YY.aps.on - der beantragenten Person muss die entsprechende Opennet-IP Adresse (192.168.X.YY) bereits zugeordnet sein | ||
+ | ** XX.mobile.on - der beantragenten Person muss die entsprechende Opennet-IP Adresse (192.168.7.XX) bereits zugeordnet sein | ||
+ | ** XXX.client.on - XXX entspricht "vornamenachname" (alles klein und zusammen) | ||
* '''Email Address:''' deine E-Mail-Adresse | * '''Email Address:''' deine E-Mail-Adresse | ||
* '''A challenge password''': Wenn du hier ein Passwort angibst, wird jedesmal beim Öffnen der OpenVPN-Verbindung danach gefragt. Kann leer gelassen werden. | * '''A challenge password''': Wenn du hier ein Passwort angibst, wird jedesmal beim Öffnen der OpenVPN-Verbindung danach gefragt. Kann leer gelassen werden. | ||
Zeile 56: | Zeile 93: | ||
If you enter '.', the field will be left blank. | If you enter '.', the field will be left blank. | ||
− | Country Name (2 letter code) [US]: | + | Country Name (2 letter code) [US]:DE |
State or Province Name (full name) [CA]: Mecklenburg-Vorpommern | State or Province Name (full name) [CA]: Mecklenburg-Vorpommern | ||
Locality Name (eg, city) [SanFrancisco]: Rostock | Locality Name (eg, city) [SanFrancisco]: Rostock | ||
− | Organization Name (eg, company) [FortFunston]: | + | Organization Name (eg, company) [FortFunston]: Vorname Nachname |
− | Organizational Unit Name (eg, section) []: | + | Organizational Unit Name (eg, section) []: Opennet CA |
− | Common Name (eg, your name or your server's hostname) []: | + | Common Name (eg, your name or your server's hostname) []: XX.mobile.on <- wenn bspw. Zertifikat für mobilen User |
− | Email Address [mail@host.domain]: | + | Email Address [mail@host.domain]: meineemailadress@supercooleremailprovider.com |
Please enter the following 'extra' attributes | Please enter the following 'extra' attributes | ||
Zeile 73: | Zeile 110: | ||
Loading 'screen' into random state - done | Loading 'screen' into random state - done | ||
</pre> | </pre> | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
== Konfiguration == | == Konfiguration == | ||
Zeile 103: | Zeile 117: | ||
=== Windows === | === Windows === | ||
− | ''' | + | * config-Ordner öffnen -->''c:\programme\openvpn\config'' |
+ | * rechte Maustaste --> "Neu" --> "Textdokument" | ||
+ | * Textdokument.txt öffnen --> in den Editor folgende Angaben einfügen | ||
+ | <pre> | ||
+ | client | ||
+ | dev tun | ||
+ | proto udp | ||
+ | remote-cert-tls server | ||
+ | remote 192.168.0.247 1600 | ||
+ | nobind | ||
+ | persist-key | ||
+ | persist-tun | ||
+ | ca C:/Programme/OpenVPN/easy-rsa/keys/ca.crt | ||
+ | cert C:/Programme/OpenVPN/easy-rsa/keys/XX.crt | ||
+ | key C:/Programme/OpenVPN/easy-rsa/keys/XX.key | ||
+ | compress | ||
+ | redirect-gateway local | ||
+ | </pre> | ||
+ | * XX muss nun durch den jeweiligen Dateinamen von der .crt und .key Datei ersetzt werden --> ''siehe c:\programme\openvpn\easy-rsa\keys'' | ||
+ | * "Speichern" und Editor schließen | ||
+ | * nun muss Textdokument.txt noch umbenannt werden in z.B. client.ovpn | ||
=== Linux === | === Linux === | ||
Zeile 123: | Zeile 157: | ||
Alle Ausgaben laden standardmäßig in der Console oder im Syslogfile (/var/log/messages). Sie kann aber auch mit ''appendfile'' in eine Datei umgeleitet werden, siehe OpenVPN-Manpage. | Alle Ausgaben laden standardmäßig in der Console oder im Syslogfile (/var/log/messages). Sie kann aber auch mit ''appendfile'' in eine Datei umgeleitet werden, siehe OpenVPN-Manpage. | ||
− | === | + | === MacOS === |
− | + | * Tunnelblick z.B. per [https://brew.sh Homebrew] installieren: ''brew cask install tunnelblick'' | |
+ | * in der Tunnelblick Oberfläche die Konfigurationsdatei einfügen (siehe unten) | ||
+ | * Zertfikikat & Co analog Linux ablegen, die Pfad fuer Tunnelblick ist ''~/Libary/openvpn/'' | ||
+ | * Verbindung über Tunnelblick starten/stoppen | ||
+ | === Konfigurationsdatei (opennet.conf) === | ||
+ | ====Zusammenfassung==== | ||
<pre> | <pre> | ||
client | client | ||
dev tun | dev tun | ||
proto udp | proto udp | ||
− | + | remote-cert-tls server | |
− | remote | + | remote <gateway> 1600 |
nobind | nobind | ||
− | user nobody | + | #user nobody #bei Bedarf weiter unten Details nachlesen, weil diese Option Nebenwirkungen hat |
− | group nobody | + | #group nobody #bei Bedarf weiter unten Details nachlesen, weil diese Option Nebenwirkungen hat |
persist-key | persist-key | ||
persist-tun | persist-tun | ||
Zeile 141: | Zeile 180: | ||
cert <cert-filepath> | cert <cert-filepath> | ||
key <key-filepath> | key <key-filepath> | ||
− | + | compress | |
− | route 192.168.0.0 255.255.0.0 | + | route 192.168.0.0 255.255.0.0 net_gateway |
redirect-gateway | redirect-gateway | ||
</pre> | </pre> | ||
− | === Beschreibung der Konfigurationsdatei === | + | * <gateway> durch die IP-Adresse oder DNS-Name des VPN-Servers ersetzen |
+ | * <*-filepath> durch den Pfad zu den Dateien ersetzen | ||
+ | |||
+ | ==== Beschreibung der Konfigurationsdatei ==== | ||
Ein paar Erläuterungen, für die Interessierten: | Ein paar Erläuterungen, für die Interessierten: | ||
Zeile 164: | Zeile 206: | ||
* UDP Protokoll | * UDP Protokoll | ||
<pre> | <pre> | ||
− | + | remote-cert-tls server | |
</pre> | </pre> | ||
* Bestehe auf ein server-type certificate beim peer | * Bestehe auf ein server-type certificate beim peer | ||
<pre> | <pre> | ||
− | remote 192.168.0. | + | remote 192.168.0.<gw-ip> 1600 |
</pre> | </pre> | ||
− | * Server | + | * einen Gatewayserver entsprechend [[Opennet Server]] eintragen |
* UDP-Port 1600 | * UDP-Port 1600 | ||
<pre> | <pre> | ||
Zeile 183: | Zeile 225: | ||
* Erhöhung der Sicherheit für das lokale System durch Rechteverringerung des Prozesses | * Erhöhung der Sicherheit für das lokale System durch Rechteverringerung des Prozesses | ||
* Wird von der windows-version grundsätzlich ignoriert | * Wird von der windows-version grundsätzlich ignoriert | ||
+ | * Bei der naiven Anwendung unter linux entsteht das Problem das beim Verbindungsabbau, die "ip route add/del" Kommandos fehlschlagen, weil der User nobody keine Rechte hat. Dies resultiert in z.B. einer fehlenden Default Route nach Verindungsabbau. Als Lösung kann man entweder diese Zeilen auskommentieren oder dem nobody User Rechte verschaffen (siehe https://community.openvpn.net/openvpn/wiki/HOWTO#UnprivilegedmodeLinuxonly). | ||
<pre> | <pre> | ||
persist-key> | persist-key> | ||
Zeile 192: | Zeile 235: | ||
key <key-filepath> | key <key-filepath> | ||
</pre> | </pre> | ||
− | * ''<*-filepath>'' Ist mit Pfaden zu den relevanten Dateien | + | * ''<*-filepath>'' Ist mit Pfaden zu den relevanten Dateien ersetzen |
− | * Das Zertifikat der Opennet-CA [http:// | + | * Das Zertifikat der Opennet-CA [http://ca.opennet-initiative.de/server_certchain.crt server_certchain.crt] |
− | * Das Zertifikat gibt es als Antwort auf eine mail des ''Certificate Signing Requests'' (CSR) an [mailto:csr@opennet- | + | * Das Zertifikat gibt es als Antwort auf eine mail des ''Certificate Signing Requests'' (CSR) an [mailto:csr@opennet-initiative.de] |
* Der key wird zusammen mit dem CSR von [[OpenVPN_unter_Windows|openssl]] erzeugt | * Der key wird zusammen mit dem CSR von [[OpenVPN_unter_Windows|openssl]] erzeugt | ||
<pre> | <pre> | ||
− | + | compress | |
</pre> | </pre> | ||
* Datenkomprimierung | * Datenkomprimierung | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
<pre> | <pre> | ||
redirect-gateway | redirect-gateway | ||
</pre> | </pre> | ||
− | * | + | * ersetzt die Default-Route durch den Tunnelendpunkt |
− | + | * sämtlicher Datenverkehr, für den keine spezielle Route gesetzt ist, wird nun durch den Tunnel geleitet | |
− | + | ||
− | * | + | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
== Portmapping == | == Portmapping == | ||
− | Die | + | Die Nutzerdokumentation findet sich unter [[Portforwarding]]. Die technische Umsetzung wird unter [[Server Installation/OpenVPN]] beschrieben. |
− | == | + | == Externer VPN Zugang == |
− | + | Falls man aus dem Internet sich an das Opennet koppeln will, etwa um Wartungsarbeiten durchzuführen oder einen gesicherten Internet Tunnel aufzubauen, geht man wie oben beschrieben vor. Allerdings ist die Konfiguration leicht abweichend: | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
<pre> | <pre> | ||
− | + | remote vpn.opennet-initiative.de 1600 | |
− | + | </pre> | |
− | + | OLSR wird in diesem Fall nicht benötigt. | |
− | + | ||
− | + | ||
− | + | ||
− | + | == Hardware Performance Messungen == | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | Wie gut die verschiedenen Embedded Plattformen mit OpenVPN / AES Encryption arbeiten: https://systemausfall.org/wikis/howto/AES-Performance | |
− | + | ||
− | + | ||
− | < | + | <pre> |
+ | % openssl speed aes-128-cbc sha256 | ||
+ | The 'numbers' are in 1000s of bytes per second processed. | ||
+ | type 16 bytes 64 bytes 256 bytes 1024 bytes 8192 bytes 16384 bytes | ||
+ | aes-128 cbc 7390.15k 8795.19k 9189.21k 9262.12k 9209.62k 9057.68k | ||
+ | sha256 2929.10k 6716.74k 11701.07k 14322.88k 15205.15k 15122.69k | ||
− | + | % openssl speed -multi 1 aes-128-cbc sha256 | |
− | + | aes-128 cbc 7290.00k 8237.89k 8793.94k 8726.53k 8850.09k 8716.29k | |
− | + | sha256 2016.47k 6366.93k 11212.80k 13582.68k 14816.60k 14559.91k | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
</pre> | </pre> | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | + | Damit ergibt sich die Zuordnung aus den Spaltenüberschriften. | |
− | [[ | + | [[Category:Dienste]] |
+ | [[Category:Anleitungen]] |
Aktuelle Version vom 2. Dezember 2023, 20:21 Uhr
Inhaltsverzeichnis |
[Bearbeiten] Vorwort
Mit der Software OpenVPN läßt sich eine gesicherte Verbindung zwischen dem Opennet-Gateway und dem Computer des Endbenutzer herstellen (ein sog. Virtuelles Privates Netz). Die Anleitung beschreibt die Konfiguration von OpenVPN auf Deinem eigenen Computer, alternativ kannst Du auch das vorkonfigurierte OpenVPN auf dem Accesspoint nutzen. Bei Verwendung eines mobilen Notebooks muß OpenVPN auf dem Notebook installiert werden.
DISCLAIMER - Keine öffentliche Zertifizierungsstelle!
Die Nutzung der auf Anfrage von der Opennet Initiative ausgestellten Zertifikate ist nur für Opennet-interne Zwecke sinnvoll. An uns gestellte Anfragen für Zertifikate für Nutzung für Opennet-fremde Zwecke demonstrieren ein grundlegendes Unverständnis der benutzten Algorithmen und Technologien beim Anfragesteller, und werden von uns nicht bearbeitet.
[Bearbeiten] Installation
Nach dem Download die entsprechenden Dateien installieren und den jeweiligen Installationsanleitungen folgen.
Windows: http://openvpn.net/download.html + Graphische Benutzeroberfläche http://openvpn.se/download.html (Unter Windows-XP erscheint eventuell ein Warnhinweis, dass ein Treiber nicht für Windows-XP zertifiziert ist, er kann ignoriert werden.)
Linux: http://openvpn.net/download.html + Linux-Nutzer achten darauf, dass TUN/TAP-Unterstüzung durch Kernel bereit gestellt wird (Modul tun, Kernel-Option CONFIG_TUN bzw. "Universal TUN/TAP device driver support").
Mac OS: http://tunnelblick.net/ (OpenVPN mit graphischer Nutzerschnittstelle, kann auch per Homebrew installiert werden)
[Bearbeiten] Zertifikat erstellen
Für die Verschlüsselung und Authentifizierung innerhalb des Opennets ist ein digitales Zertifikat (Cert) und ein digitaler Schlüssel (Key) notwendig. Um das Zertifikat für das Opennet erstellen zu können, musst du zuerst auf deinem Rechner einen Key erzeugen. Mit dem von dir erzeugten Key wird dann eine Request-Datei (Certificate Sign Request - .csr) erstellt. Diese Request-Datei wird an csr@opennet-initiative.de geschickt.
Hier wird daraus dann mit Hilfe des Stamm-Zertifikates vom Opennet Dein Zertifikat (.crt Datei) erstellt. Das ist dann durch die Opennet CA beglaubigt. Diese Zertifikate dienen ausschließlich der Absicherung des Opennets.
[Bearbeiten] Windows
Du öffnest unter Windows eine Eingabeaufforderung (Startmenu: Ausführen: cmd) und gibst folgendes ein (jede Zeile mit Enter beenden | OpenVPN wurde hier unter c:\programme\openvpn installiert, also erste Zeile entsprechend anpassen):
cd c:\programme\openvpn\easy-rsa\ init-config.bat vars.bat mkdir keys openssl req -days 3650 -nodes -new -keyout keys\VornameNachname.key -out keys\VornameNachname.csr -config openssl.cnf
Es wurden jetzt die notwendige Konfigurationsdatei erstellt, die Umgebungsvariablen geladen und das Verzeichnis keys im Installationsordner von OpenVPN erstellt. Zuletzt wird eurer Schlüssel und ein Zertifikatsantrag erstellt. Ihr müsst dabei einige Angaben ausfüllen (siehe im extra Abschnitt unten).
Nach der Eingabe deiner Daten liegt im Verzeichnis keys/ dein eigener Schlüssel VornameNachname.key und die Request-Datei namens VornameNachname.csr. Diese Datei (und nur diese Datei) schickst du jetzt an die Opennet CA Das nur für Opennet Zwecke gültige signierte Zertifikat kommt dann per E-Mail zurück. Da es manuell erzeugt werden muss, bitte etwas Geduld.
Dazu musst du dir noch die Opennet-CA Datei downloaden und du kommst insgesamt auf vier Dateien:
- ca.crt
- VornameNachname.key
- VornameNachname.csr
- VornameNachname.crt
[Bearbeiten] Linux / Mac OS
In einem beliebigen Verzeichnis (z.B. Homeverzeichnis) den Request erstellen mit
openssl req -days 3650 -nodes -new -keyout VornameNachname.key \ -out VornameNachname.csr -config /etc/ssl/openssl.cnf
Was du hier eintragen musst, kann du aus dem extra Abschnitt weiter unten entnehmen.
Wenn das Verzeichnis /etc/ssl nicht existiert, und Openssl installiert ist, liegen die Dateien auch in /usr/share Mit "ln -s /usr/share/ssl /etc/ssl" einen Link erstellen (als root), oder die Dateinamen entsprechend anpassen.
Wenn man bei -keyout und -out kein Verzeichnis angegeben hat, finden sich die Dateien im aktuellen Verzeichnis wieder.
Das übrige Vorgehen ist identisch mit dem vorgegangen Windows-Abschnitt.
[Bearbeiten] Angaben ausfüllen
Beim Erstellen von Opennet Zertifikaten sind folgende Daten auszufüllen:
- Organization Name: deinen Namen (zusammen geschrieben, keine Sonderzeichen)
- Common Name: muss aus Gründen der eindeutigen Zuordnungsbarkeit der OpenVPN IP Addressen zum verantwortlichen Nutzer einer vorgegebenen Konvention entsprechen:
- X.YY.aps.on - der beantragenten Person muss die entsprechende Opennet-IP Adresse (192.168.X.YY) bereits zugeordnet sein
- XX.mobile.on - der beantragenten Person muss die entsprechende Opennet-IP Adresse (192.168.7.XX) bereits zugeordnet sein
- XXX.client.on - XXX entspricht "vornamenachname" (alles klein und zusammen)
- Email Address: deine E-Mail-Adresse
- A challenge password: Wenn du hier ein Passwort angibst, wird jedesmal beim Öffnen der OpenVPN-Verbindung danach gefragt. Kann leer gelassen werden.
Beispiel:
Loading 'screen' into random state - done Generating a 1024 bit RSA private key ...................++++++ ....++++++ writing new private key to 'keys\VornameNachname.key' You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter '.', the field will be left blank. Country Name (2 letter code) [US]:DE State or Province Name (full name) [CA]: Mecklenburg-Vorpommern Locality Name (eg, city) [SanFrancisco]: Rostock Organization Name (eg, company) [FortFunston]: Vorname Nachname Organizational Unit Name (eg, section) []: Opennet CA Common Name (eg, your name or your server's hostname) []: XX.mobile.on <- wenn bspw. Zertifikat für mobilen User Email Address [mail@host.domain]: meineemailadress@supercooleremailprovider.com Please enter the following 'extra' attributes to be sent with your certificate request A challenge password []: An optional company name []: Using configuration from openssl.cnf Loading 'screen' into random state - done
[Bearbeiten] Konfiguration
Der folgende Abschnitt beschreibt die für Opennet erforderlichen oder günstigen Einstellungen in der OpenVPN Konfigurationsdatei. Diese lässt sich beim Aufruf von OpenVPN mit der --config Option angeben. Alle der Optionen können auch direkt beim openvpn-Aufruf als Argumente angegeben werden.
[Bearbeiten] Windows
- config-Ordner öffnen -->c:\programme\openvpn\config
- rechte Maustaste --> "Neu" --> "Textdokument"
- Textdokument.txt öffnen --> in den Editor folgende Angaben einfügen
client dev tun proto udp remote-cert-tls server remote 192.168.0.247 1600 nobind persist-key persist-tun ca C:/Programme/OpenVPN/easy-rsa/keys/ca.crt cert C:/Programme/OpenVPN/easy-rsa/keys/XX.crt key C:/Programme/OpenVPN/easy-rsa/keys/XX.key compress redirect-gateway local
- XX muss nun durch den jeweiligen Dateinamen von der .crt und .key Datei ersetzt werden --> siehe c:\programme\openvpn\easy-rsa\keys
- "Speichern" und Editor schließen
- nun muss Textdokument.txt noch umbenannt werden in z.B. client.ovpn
[Bearbeiten] Linux
Die Zertifikate, Schlüssel und Konfigurationsdatei legt mal nach /etc/openvpn/, die sieht dann etwa wie folgt aus
/etc/openvpn/ opennet.conf - OpenVPN Konfiguration für Opennet 21_aps.csr - Certificate Signing Request (nicht mehr benötigt) 21_aps.key - Privater Schlüssel des AP21-Zertifikats 21_aps.crt - AP21-Zertifikat (mit öffentlichem Schlüssel) ca.crt - Opennet-CA-Zertifikat (CA = Zertizifierungstelle)
Das Starten und Stoppen der VPN-Tunnel ist denkbar sein, über die Init-Skripte können alle Tunnel gestartet werden, für die im etc-Verzeichniss von OpenVPN eine conf-Datei liegt:
/etc/init.d/openvpn start|stop
Alternativ kann die Opennet VPN-Verbindung auch mit der Hand gestartet werden:
openvpn --config /etc/opennet.conf
Alle Ausgaben laden standardmäßig in der Console oder im Syslogfile (/var/log/messages). Sie kann aber auch mit appendfile in eine Datei umgeleitet werden, siehe OpenVPN-Manpage.
[Bearbeiten] MacOS
- Tunnelblick z.B. per Homebrew installieren: brew cask install tunnelblick
- in der Tunnelblick Oberfläche die Konfigurationsdatei einfügen (siehe unten)
- Zertfikikat & Co analog Linux ablegen, die Pfad fuer Tunnelblick ist ~/Libary/openvpn/
- Verbindung über Tunnelblick starten/stoppen
[Bearbeiten] Konfigurationsdatei (opennet.conf)
[Bearbeiten] Zusammenfassung
client dev tun proto udp remote-cert-tls server remote <gateway> 1600 nobind #user nobody #bei Bedarf weiter unten Details nachlesen, weil diese Option Nebenwirkungen hat #group nobody #bei Bedarf weiter unten Details nachlesen, weil diese Option Nebenwirkungen hat persist-key persist-tun ca <ca-filepath> cert <cert-filepath> key <key-filepath> compress route 192.168.0.0 255.255.0.0 net_gateway redirect-gateway
- <gateway> durch die IP-Adresse oder DNS-Name des VPN-Servers ersetzen
- <*-filepath> durch den Pfad zu den Dateien ersetzen
[Bearbeiten] Beschreibung der Konfigurationsdatei
Ein paar Erläuterungen, für die Interessierten:
client
- tls-client Modus
- Annahme von begrenzten Konfigurationsbefehlen vom Server
dev tun
- Nutze ein beliebiges IP-Tunnel device
proto udp
- UDP Protokoll
remote-cert-tls server
- Bestehe auf ein server-type certificate beim peer
remote 192.168.0.<gw-ip> 1600
- einen Gatewayserver entsprechend Opennet Server eintragen
- UDP-Port 1600
nobind
- Beliebiger lokaler Port
user nobody group nobody
- Wechsle prozess-uid und gid zu der von "nobody" nach Programmstart
- Erhöhung der Sicherheit für das lokale System durch Rechteverringerung des Prozesses
- Wird von der windows-version grundsätzlich ignoriert
- Bei der naiven Anwendung unter linux entsteht das Problem das beim Verbindungsabbau, die "ip route add/del" Kommandos fehlschlagen, weil der User nobody keine Rechte hat. Dies resultiert in z.B. einer fehlenden Default Route nach Verindungsabbau. Als Lösung kann man entweder diese Zeilen auskommentieren oder dem nobody User Rechte verschaffen (siehe https://community.openvpn.net/openvpn/wiki/HOWTO#UnprivilegedmodeLinuxonly).
persist-key>
- Versuche nicht key-files nach tunnel-resets erneut zu lesen (eventuell durch user/group Wechsel nicht mehr möglich)
ca <ca-filepath> cert <cert-filepath> key <key-filepath>
- <*-filepath> Ist mit Pfaden zu den relevanten Dateien ersetzen
- Das Zertifikat der Opennet-CA server_certchain.crt
- Das Zertifikat gibt es als Antwort auf eine mail des Certificate Signing Requests (CSR) an [1]
- Der key wird zusammen mit dem CSR von openssl erzeugt
compress
- Datenkomprimierung
redirect-gateway
- ersetzt die Default-Route durch den Tunnelendpunkt
- sämtlicher Datenverkehr, für den keine spezielle Route gesetzt ist, wird nun durch den Tunnel geleitet
[Bearbeiten] Portmapping
Die Nutzerdokumentation findet sich unter Portforwarding. Die technische Umsetzung wird unter Server Installation/OpenVPN beschrieben.
[Bearbeiten] Externer VPN Zugang
Falls man aus dem Internet sich an das Opennet koppeln will, etwa um Wartungsarbeiten durchzuführen oder einen gesicherten Internet Tunnel aufzubauen, geht man wie oben beschrieben vor. Allerdings ist die Konfiguration leicht abweichend:
remote vpn.opennet-initiative.de 1600
OLSR wird in diesem Fall nicht benötigt.
[Bearbeiten] Hardware Performance Messungen
Wie gut die verschiedenen Embedded Plattformen mit OpenVPN / AES Encryption arbeiten: https://systemausfall.org/wikis/howto/AES-Performance
% openssl speed aes-128-cbc sha256 The 'numbers' are in 1000s of bytes per second processed. type 16 bytes 64 bytes 256 bytes 1024 bytes 8192 bytes 16384 bytes aes-128 cbc 7390.15k 8795.19k 9189.21k 9262.12k 9209.62k 9057.68k sha256 2929.10k 6716.74k 11701.07k 14322.88k 15205.15k 15122.69k % openssl speed -multi 1 aes-128-cbc sha256 aes-128 cbc 7290.00k 8237.89k 8793.94k 8726.53k 8850.09k 8716.29k sha256 2016.47k 6366.93k 11212.80k 13582.68k 14816.60k 14559.91k
Damit ergibt sich die Zuordnung aus den Spaltenüberschriften.