OpenVPN: Unterschied zwischen den Versionen
keine Bearbeitungszusammenfassung
Keine Bearbeitungszusammenfassung |
Keine Bearbeitungszusammenfassung |
||
Zeile 17: | Zeile 17: | ||
* SSL-Zertifikate für alle Beteiligten. Um die kostengünstig (umsonst) und einfach zu erhalten, sei eine Anmeldung bei [http://cacert.org CaCert] empfohlen. | * SSL-Zertifikate für alle Beteiligten. Um die kostengünstig (umsonst) und einfach zu erhalten, sei eine Anmeldung bei [http://cacert.org CaCert] empfohlen. | ||
* Ein Netzwerkplan für das VPN, um folgende Fragen zu klären (''Melle, bitte ergänzen''): | * Ein Netzwerkplan für das VPN, um folgende Fragen zu klären (''Melle, bitte ergänzen''): | ||
** Welche LAN-Adressen (nach RFC 1918) sollen für das VPN verwendet werden? ''Todo: Ausnahmeregeln für Windoze verstehen und erklären.'' | ** Welche LAN-Adressen (nach RFC 1918) sollen für das VPN verwendet werden? Im Folgenden sei <tt>10.0.0.x</tt> als VPN-Netz angenommen. ''Todo: Ausnahmeregeln für Windoze verstehen und erklären.'' | ||
** Wer darf mit wem kommunizieren? Welches Routing und welche Firewall-Regeln werden dazu auf dem Server benötigt? | ** Wer darf mit wem kommunizieren? Welches Routing und welche Firewall-Regeln werden dazu auf dem Server benötigt? Bis auf weiteres sei davon ausgegangen, daß Clients Verbindungen ins Internet nutzen dürfen, aber nicht untereinander kommunizieren sollen. | ||
** Welche Namen haben die VPN- | ** Welche Namen haben die VPN-Teilnehmer? Nachfolgend sei <code>vpn-client.freifunk-potsdam.de</code> bzw. <code>vpn-server.freifunk-potsdam.de</code> angenommen. | ||
=== SSL-Certs === | === SSL-Certs === | ||
Benötigt werden mindestens ein Server-Cert, und mindestens ein Client-Cert. | |||
Um ein Cert zu erstellen, wird ein Key benötigt. Mit OpenSSL geht das so: | Um ein Cert zu erstellen, wird ein Key benötigt. Mit OpenSSL geht das so: | ||
openssl genrsa -out vpn.key 2048 | openssl genrsa -out vpn.key 2048 | ||
Um ein Cert zu erzeugen, braucht man zunächst ein CSR (''Certificate Signing Request''): | |||
openssl req -new -key vpn.key -out | openssl req -new -key vpn.key -out vpn.csr | ||
Es folgt ein Frage-und-Antwort-Spiel. Dabei ist die einzig wichtige Frage: <code>Common Name (eg, YOUR name)</code>. Dort den jeweiligen Rechnernamen eintragen, z.B. <code> | Es folgt ein Frage-und-Antwort-Spiel. Dabei ist die einzig wichtige Frage: <code>Common Name (eg, YOUR name)</code>. Dort den jeweiligen Rechnernamen eintragen, z.B. <code>vpn-server.freifunk-potsdam.de</code> bzw. <code>vpn-client.freifunk-potsdam.de</code>. | ||
Die CSRs klebt man der Reihe nach in das Eingabefeld bei [http://www.cacert.org/ CaCert] (unter <tt>Server Certificates</tt> → <tt>New</tt>). Postwendend erhält man ein halbwegs glaubwürdiges Zertifikat. Außerdem braucht man noch das [http://www.cacert.org/certs/root.crt Root-Cert] von CACert. | Die CSRs klebt man der Reihe nach in das Eingabefeld bei [http://www.cacert.org/ CaCert] (unter <tt>Server Certificates</tt> → <tt>New</tt>). Postwendend erhält man ein halbwegs glaubwürdiges Zertifikat. Außerdem braucht man noch das [http://www.cacert.org/certs/root.crt Root-Cert] von CACert. | ||
Die Gültigkeitsdauer der Zertifikate beträgt 6 Monate bis 2 Jahre, abhängig von den ''Assurance''-Punkten des Antragstellers. | Die Gültigkeitsdauer der Zertifikate beträgt 6 Monate bis 2 Jahre, abhängig von den ''Assurance''-Punkten des Antragstellers. Herrmann kann Punkte vergeben; dk kann Certs bis zu 2 Jahren ausstellen. | ||
Für die Clients kann man entweder individuelle Zertifikate benutzen, oder aber ein Sammel-Zertifikat für alle VPN-Nutzer. Da der Verwaltungsaufwand für individuelle Zertifikate höher ist, und diese in einem prinzipiell offenen Netz nicht wirklich benötigt werden, sei im Folgenden von einem Sammelzertifikat ausgegangen. | |||
Man kann unterschiedliche Keys für Server- und Client-Zertifikate nutzen, aber das bringt nicht wirklich etwas. | |||
=== Server-Config === | === Server-Config === | ||
Zeile 39: | Zeile 45: | ||
Die Server-Config besteht aus: | Die Server-Config besteht aus: | ||
* Der globalen Konfiguration <code>/etc/openvpn/server.conf</code> | * Der globalen Konfiguration <code>/etc/openvpn/server.conf</code> | ||
* Einer Konfigurationsdatei pro Client in <code>/etc/openvpn/ccd</code> | * Einer Konfigurationsdatei pro Client in <code>/etc/openvpn/ccd</code>. Diese muß so heißen wir der Common Name im Client-Cert, in unserem Fall also <code>vpn-client.freifunk-potsdam.de</code>. | ||
Die globale Config in <code>/etc/openvpn/server.conf</code> sieht so aus: | Die globale Config in <code>/etc/openvpn/server.conf</code> sieht dann so aus: | ||
port 33469 | port 33469 | ||
proto udp | proto udp | ||
Zeile 48: | Zeile 54: | ||
ca /etc/ssl/certs/cacert.org.pem | ca /etc/ssl/certs/cacert.org.pem | ||
cert /etc/ | cert /etc/openvpn/vpn-server.crt | ||
key /etc/ | key /etc/openvpn/vpn.key | ||
dh dh1024.pem | dh dh1024.pem | ||
Zeile 73: | Zeile 79: | ||
status openvpn-status.log | status openvpn-status.log | ||
In <code>/etc/openvpn/ccd</code> befindet sich eine Konfigurationsdatei pro Client, die exakt so heißen muß wie der CN im Zertifikat des Clients, also z.B. <code>/etc/openvpn/ccd/ | In <code>/etc/openvpn/ccd</code> befindet sich eine Konfigurationsdatei pro Client, die exakt so heißen muß wie der CN im Zertifikat des Clients, also z.B. <code>/etc/openvpn/ccd/vpn-client.freifunk-potsdam.de</code>: | ||
ifconfig-push 10.0.1.2 10.0.1.1 | ifconfig-push 10.0.1.2 10.0.1.1 | ||
push "route 10.0.0.0 255.255.0.0" | push "route 10.0.0.0 255.255.0.0" | ||
Zeile 82: | Zeile 88: | ||
dev tun | dev tun | ||
proto udp | proto udp | ||
remote vpn.freifunk-potsdam.de 33469 | remote vpn-server.freifunk-potsdam.de 33469 | ||
nobind | nobind | ||
persist-key | persist-key |