
Wir betreiben OpenVPN-Server auf mehreren automatisch skalierten Instanzen (für Redundanz und Selbstheilung), sodass die Bereitstellung über ein Skript erfolgt. Unser Ansatz zur Verwaltung von Client-Zertifikaten über diese temporären Instanzen hinweg ist ziemlich umständlich und beinhaltet derzeit das Extrahieren eines Tarballs in das /etc/openvpn/easy-rsa/pki
Verzeichnis.
Ich möchte nur die Client-Zertifikate in ein freigegebenes Netzwerkverzeichnis verschieben, konnte aber nicht herausfinden, welche Konfigurationseinstellungen OpenVPN über diese PKI-Unterverzeichnisse informieren. (Die ca/cert/key/dh
Einstellungen verweisen alle tief in die Hierarchie, d. h. /etc/openvpn/easy-rsa/pki/issued/server.crt
, was für mich bedeutet, dass es keine integrierten Annahmen über die Easy-RSA-Verzeichnisstruktur gibt.)
Wie findet OpenVPN diese Dateien?
Antwort1
Hallo und danke für die Frage …
Es ist ein bisschen einfacher als Sie denken ;-). Sie benötigen nicht alle Client-Zertifikate. Client-Zertifikate werden für den Client benötigt...
Neben der Konfigurationsdatei gibt es 3-4 generierte und „verknüpfte“ Dateien, die als Abschnitt direkt in die Konfigurationsdatei eingebettet werden können (das ist alles, was Sie auf dem Server/Client haben müssen).
- TLS-Schlüssel (optional, aber nicht schlecht zu verwenden ;-))
Dies ist ein gemeinsamer Schlüssel, um die Kommunikation zu sichern, noch bevor der clientspezifische Datenverkehr beginnt. Ohne diesen Schlüssel ignoriert der Server Ihre Kommunikation einfach. Diese Datei ist auf dem Server und dem Client identisch.
CA-Zertifizierungsstelle: Welches Zertifikat wird verwendet, um das Vertrauen der Remote-Seite zu bestätigen?
Server: Zertifikat der Zertifizierungsstelle, die das Client-Zertifikat ausstellt. DAS ist es, wonach Sie suchen – denn diese Datei kann verwendet werden, um ALLE während der Verbindung ausgestellten Client-Zertifikate zu überprüfen. Diese einzelne Datei kann verwendet werden, um aktuelle und auch zukünftige Zertifikate zu überprüfen, die von derselben Zertifizierungsstelle ausgestellt wurden (das ist es, was von easy-rsa abgedeckt wird).
Klient: Mit dieser Datei wird überprüft, ob das Serverzertifikat vertrauenswürdig ist. Es kann dasselbe wie auf der Serverseite sein, aber technisch gesehen kann das Serverzertifikat von einer anderen Zertifizierungsstelle ausgestellt sein als die Zertifikate der Clients.
Schlüssel
Privater Schlüssel, der zur Sicherung der Kommunikation verwendet wird. Diese Datei sollte sicher aufbewahrt werden, da sie Ihre Identität bestätigt.
- Zertifikat
Zertifikat (öffentlicher Schlüssel, „verpackt“ mit zusätzlichen Informationen zur Zertifizierungsstelle in X.509-Struktur). Diese Datei kann sogar öffentlich zugänglich sein, da sie nur zur Überprüfung der Gültigkeit der Kommunikation verwendet wird (dass der für die Signatur verwendete Schlüssel wirklich „der“ vertrauenswürdige ist).
Wie Sie erwähnt haben, ist die CA bei easy-rsa höchstwahrscheinlich für Client- und Serverseite dieselbe. Sobald Sie einen gemeinsamen TLS-Schlüssel, eine gemeinsame CA-Datei und einen eigenen Schlüssel mit entsprechendem Zertifikat haben, haben Sie alles, was Sie brauchen, damit es funktioniert.
Sobald Sie Schlüssel und Zertifikat für den Benutzer generiert und an den Benutzer übermittelt (oder zumindest versendet) haben, benötigen Sie sie nicht mehr und dieser Benutzerschlüssel+dieses Benutzerzertifikat könnten sogar vom Server gelöscht werden …
Bei der „großen“ Zertifizierungsstelle ist der Benutzerschlüssel nicht einmal dem ausstellenden Server bekannt, da die Zertifizierungsanforderung einen öffentlichen Schlüssel enthält (abgeleitete Informationen aus dem privaten Schlüssel), der alles ist, was zum Erstellen eines signierten Zertifikats benötigt wird – der Schlüssel wird auf der Clientseite generiert und verlässt ihn durch den Prozess nie …