OpenVPN-CA

Aus Freifunk Köln, Bonn und Umgebung
Zur Navigation springen Zur Suche springen

Motivation

Zum Betrieb des Freifunk-Netzes werden zentrale OpenVPN-Instanzen benötigt, die den Netzwerkverkehr abwickeln (vgl. Netzwerk-Konfiguration). Obwohl der Verkehr nicht verschlüsselt wird, werden auf den Accesspoints Zertifikate benötigt, damit sich die APs am Server anmelden können. Da OpenVPN typischer Weise mit gewöhnlichen SSL-Zertifikaten arbeitet, wird auf Paul eine SSL-CA betrieben, die die Zertifikate für die Accesspoints ausstellt.

Funktionsübersicht

  1. Jeder AP kann Zeritifikat, Key und CA-Zertifikat über http(s) herunterladen -- Die CA hat eine Webservice-Schnittstelle
  2. Die CA speichert alle erstellten Zertifikate einer Datenbank
  3. Jeder AP wird mit der MAC-Adresse seines 1. Wireless-Lan Interfaces identifiziert. Sie wird als Common-Name (CN) im Zertifikat verwendet. Dies ermöglicht eine (hoffentlich) eindeutige Identifizierung aller Nodes
  4. Über die MAC-Adresse können bei Störungen betroffene Nodes (hoffentlich) identifiziert werden.

Hinweise:

  • Evtl. ist es sinnvoller Nodes über die MAC des bat0-Interfaces zu identifizieren. Ich weiß aber aktuell nicht, wie stabil diese MAC ist - das Zertifikat sollte vom Node so lange benutzt werden, wie auch die Mac benutzt wird. Wird die MAC bei jedem Boot neu generiert, so muss der Node nach jedem Boot ein neues Zertifikat anfordern - kein Problem, aber wir müssen daran denken. Kann sich die MAC jedoch auch zur Laufzeit ändern (weil beispielsweise eine identische MAC von einem anderen Node verwendet wird), müssen wir dies bedenken. Möglich wäre auch, die bat0-MAC in der CA zu hinterlegen, aber weiterhin die MAC des 1. Wlan-Interfaces zu verwenden. --Yanosz 11:16, 19. Jun. 2011 (UTC)
  • MAC-Adressen taugen nicht zur Authentifizierung oder zum Filtern - das wollen wir aber auch nicht.

Eingesetzte Software

  • easy_rsa wurde zum Erstellen der CA verwendet. Zertifikate können nach wie vor darüber ausgetellt werden.
  • Die Webschnittstelle ist in ff-serv (https://github.com/yanosz/ff-serv) umgesetzt. ff-serv nutzt die von easy_rsa erstellten CA-Informationen (cert-file, key-file, serial-file) um Zertifikate zu erstellen. Hierbei wird die OpenSSL-API direkt verwendet, erzeugte Zertifikate werden in einer MySQL-Datenbank abgelegt und werden nicht im easy_rsa-Verzeichnis als Dateien persistiert.

Deployment auf Paul

  • easy_rsa liegt in /etc/openvpn/easy-rsa/ - die CA-Dateien im Unterverzeichnis keys. Damit ff-serv sie bearbeiten kann, sind die Rechte entsprechend gesetzt.
  • ff-serv liegt in /srv/ff-serv - im Apache / Phusion Passenger betreiben die Anwendung unter http://kbu.seips.net/ca abwickelt. Dies ist in /etc/apache2/sites-available/default und /etc/apache2/mods-available/passenger.load konfiguriert.
  • ff-serv nutzt die MySQL-Datenbank ffserv und den MySQL-Benutzer ffserv

Zugriff auf den CA-Webservice

Abbildung
  • Eine Liste aller erstellen Zertifikate wird unter http://kbu.seips.net/ca angezeigt
  • Um ein neues Zertifikat zu erstellen, muss ein AP dabei wie folgt vorgehen:
  1. Download des Keys
  2. Download des Zertifikats
  3. Download des CA-Zertifikats
  4. Ggf. Download DH-Paramameter

Bei 1. und 2. muss sich der Node identifizieren (http-auth). Dazu übermittelt er seine wlan-Mac-Adresse als Benutzer und eine weitere, abweichende MAC-Adresse als Kennwort. '-' ist als Trennzeichen zu verwenden. Der Zugriff auf den CA-Web-Serice ist in der Abbildung dargestellt.

Grunsätzlich kann ein Node ein Zertifikat mehrfach anfordern. Fordert er einen neuen Key für seine MAC-Kennungen an, wird ein neues Zertifikat erstellt. Wird ein Zertifikat zu einem MAC-Adress-Paar abgerufen, so wird grundsätzlich das zuletzt erstellte ausgeliefert.