OpenVPN-CA
Achtung: Work-in-progress --Yanosz 20:33, 17. Jun. 2011 (UTC)
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
- Jeder AP kann Zeritifikat, Key und CA-Zertifikat über http(s) herunterladen -- Die CA hat eine Webservice-Schnittstelle
- Die CA speichert alle erstellten Zertifikate in einer relationalen Datenbank (derzeit MySQL)
- 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
- Ü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.