Gültigkeit eines OpenVPN-Zertifikats verlängern

Gültigkeit eines OpenVPN-Zertifikats verlängern

Ich habe einen OpenVPN-Server, Clients authentifizieren sich mit SSL-Zertifikaten. Immer wenn ein Client-Zertifikat abläuft, muss ein neues Zertifikat ausgestellt und an den Client gesendet werden.

Ich habe festgestellt, dass easyrsa von openvpn eineerneuernBefehl, aber meines Wissens erneuert er nicht wirklich:Easyrsa „erneuern“ ist ein irreführender Name · Problem Nr. 345 · OpenVPN/easy-rsa

Die Frage ist also: Ist es technisch möglich, die Gültigkeit eines SSL-Zertifikats zu verlängern, unabhängig davon, ob es abgelaufen ist oder nicht, um das Senden einer neuen Datei an den Client-Benutzer zu vermeiden?

Antwort1

Das ist eine sehr schöne Frage :-).

Technically : yes (at the end the client could use expired one to connect)
Easily : no

Im Prinzip ist das nicht möglich, da die Zertifizierungsstelle die Zertifikatsanforderung mit einer bestimmten Gültigkeitsdauer signiert und sie daher nicht verlängern kann. Sie können ein neues Zertifikat erstellen, aber der schwierige Teil könnte im Ausstellungsprozess und im Prozess der Gültigkeitsprüfung liegen.

Zu Beginn sollte erwähnt werden, dass die folgenden Dinge technisch gesehen im Allgemeinen mit Zertifikaten zu tun haben und ich sie nicht mit OpenVPN getestet habe. Wenn sie nicht erfolgreich wären, wäre die allgemeine Antwort NEIN :-(.

In der OpenVPN-Konfiguration gibt es drei Parameter, die sich auf Zertifikate beziehen: CA, Key und Cert.

  • key : privater Schlüssel für die Datensignatur. Kann zum Entschlüsseln der vomZertifikat.

  • cert : öffentlicher Schlüssel (abgeleitet vonSchlüssel), um die Gültigkeit der mit dem Schlüssel signierten Daten zu bestätigen. Es kann zum Verschlüsseln der Daten für den Schlüssel verwendet werden. Dies würde dem „anderen Ende“ während der Aushandlung einer sicheren Verbindung bereitgestellt. / Dieses Szenario funktioniert mit dem Fall, dass ein gültiges Zertifikat am Remote-Ende bereits bekannt sein könnte, sodass das Senden des Zertifikats optional sein kann und ein abgelaufenes Zertifikat ignoriert werden kann /

  • ca: Wird verwendet, um die Gültigkeit des während der Aushandlung einer sicheren Verbindung bereitgestellten Zertifikats zu überprüfen.

Sobald das Client-Zertifikat abgelaufen ist, ist es so, dass nurZertifikatist veraltet. Der Schlüssel läuft grundsätzlich nicht ab und die CA sollte nicht abgelaufen sein (in diesem Fall ist es ein völlig anderer Anwendungsfall ;-)). Das Zertifikat enthält eine Gültigkeitsdauer und ist Teil eines von der CA in der x.509-Struktur signierten „Umschlags“.

Es ist eine gute Praxis, einen neuen Schlüssel mit der Generierung eines neuen Zertifikats zu generieren, aber dieser Schritt wird nicht erzwungen, sodass es technisch gesehen kein Problem ist, eine CSR (Certificate Signing Request) mit demselben Schlüssel wie das tatsächlich ablaufende Zertifikat zu erstellen. Falls Sie eine alte CSR zur Verfügung haben, können Sie diese direkt für ein neues Zertifikat verwenden. Sobald diese CSR mit der Zertifizierungsstelle signiert ist, wird das neue Zertifikat vom „alten“ Schlüssel abgeleitet.

Der schwierige Teil ist, dass Sie (eines der folgenden Dinge) benötigen:

  • Übermitteln Sie dieses neue Zertifikat an den aktuellen Benutzer, um das Zertifikat zu ersetzen

  • Informieren Sie den Server über dieses Zertifikat, damit es anstelle des abgelaufenen Zertifikats des Clients verwendet werden kann (dies ist der theoretische Teil dieses Anwendungsfalls ;-)).

Was ich weiß ist, dass Sie mehrere CA-Zertifikate kombinieren können incaDatei, die ohne Probleme in der Konfiguration auf dem Server verknüpft ist (im PEM-Format). Technisch gesehen unterscheiden sich „Benutzer“-Zertifikat und „CA“-Zertifikat in dem Parameter, der angibt, ob es als CA verwendet werden kann. Technisch gesehen können Sie also das CA-Zertifikat mit diesem neu generierten Zertifikat in einer Datei kombinieren …

Sobald diese Datei vorhanden ist (wahrscheinlich ist ein Neustart des OpenVPN-Servers erforderlich), können Sie versuchen, eine neue Verbindung herzustellen. Sobald der Client mit dem Schlüssel versucht, eine Verbindung herzustellen, kann es vorkommen, dass der Server den Schlüssel anhand des Hashs, der mit diesem auf dem Server befindlichen Client-Zertifikat gepaart ist, „identifizieren“ und das vom Client bereitgestellte Zertifikat ignorieren kann (dies muss getestet werden). Technisch (aus Sicht des Zertifikats als Technologie) würde es funktionieren, aber ich habe es nicht mit OpenVPN ausprobiert. Da OpenVPN eine externe Bibliothek für SSL-Sachen verwendet, könnte es ein funktionierender Ansatz sein ;-).

Auf der Clientseite wird eine CA benötigt, um die Serverseite zu prüfen (diese ist nicht abgelaufen), ein Schlüssel zum Signieren und Entschlüsseln der Kommunikation (diese ist nicht abgelaufen) und ein eigenes Zertifikat wird für den lokalen Betrieb nicht wirklich benötigt, sodass ein abgelaufenes Zertifikat kein wirkliches Problem darstellt. Das Zertifikat des Servers wird während der SSL-Aushandlung abgerufen und mithilfe des lokalen CA-Zertifikats überprüft, sodass alles Notwendige verfügbar ist (lokaler Schlüssel, Remote-Zertifikat).

Die Nachteile dieses Ansatzes bestehen darin, dass Sie den Vorteil der CA als einziges Zertifikat für die Validierung des Client-Zertifikats ein wenig einbüßen (Sie müssen es auf der Serverseite neben dem CA-Zertifikat aufgeführt haben), auf der anderen Seite wäre der Vorteil jedoch die Möglichkeit der Erneuerung des Zertifikats...

Falls Sie es ausprobieren, geben Sie uns gerne Feedback …

Viel Glück!


Der andere Ansatz könnte bei der Planung darin bestehen, Zertifikate mit langer Gültigkeitsdauer auszustellen und CRL (Certificate Relocation List) zu verwenden, um ungültige Zertifikate während dieser Zeit zu widerrufen. Aber das ist nicht Gegenstand dieser Frage ...

verwandte Informationen