So erneuern Sie OpenVPN-Client-Zertifikate mithilfe von easyRSA automatisch

522
Ahmad Karim

Ich habe eingebettete Geräte, die sich in verschiedenen Cites befinden und mit meinem OpenVPN-Server verbunden sind. Ich initialisiere meine Geräte vor der Bereitstellung und stelle das Zertifikat / Schlüssel-Paar über das lokale Netzwerk bereit. Wenn die Geräte am Remote-Standort online gehen, sind sie über einen privaten Tunnel mit meinem openVPN-Server verbunden. Ich verwende die OpenVPN-Version: 2.3.10 mit EasyRSA unter Ubuntu 16.04 LTS

Jetzt laufen die Zertifikate aus. Wie kann ich die Zertifikate auf diesen Geräten erneuern? Ich denke an zwei Ansätze.

Ansatz 1) Ein Skript auf dem Gerät überprüft die Gültigkeit des Zertifikats etwa jeden Monat. Wenn das Zertifikat abläuft, sollte es eine Zertifikatsgenerierungsanforderung senden (eine standardmäßige https-Get-Anforderung oder ähnliches). Auf der Serverseite sollten nur Anforderungen bedient werden, die aus einem privaten Tunnel stammen. Ein Zertifikat / Schlüssel mit demselben CN sollte generiert und an den Client übertragen werden.

Probleme mit dem Ansatz 1)

  • Wie soll das Zertifikats- / Schlüsselpaar sicher übertragen werden? Ich möchte keinen privaten Schlüssel über ein Netzwerk austauschen. Der gesamte Prozess sollte automatisiert sein, damit ich den Schlüssel auch nicht manuell eingeben kann.
  • Wie soll das cert / key auf dem Server generiert werden? Ich möchte auch nicht, dass der Apache-Webbenutzer, dh www-data, Zugriff auf meinen easyRSA-Ordner hat.

Ansatz 2) Generieren Sie den privaten Schlüssel auf der Client-Seite (mein eingebettetes Gerät). Erstellen Sie eine Zertifikatsignierungsanforderung (CSR), und senden Sie sie an den OpenVPN-Server (der auch meine Zertifizierungsstelle ist). Die Zertifizierungsstelle generiert ein Zertifikat und sendet das Clientzertifikat zurück.

Probleme mit dem Ansatz 2)

  • Wie authentifiziere ich CSR? Wie kann ich wissen, dass der CSR von meinem eingebetteten Gerät stammt und nicht von einem Angreifer. Der einzige Weg, den ich versichern kann, ist, wenn der CSR aus dem privaten Tunnel kommt.

  • Falls das Zertifikat auf meinem eingebetteten Gerät vor der Erneuerung abläuft, ist der private Tunnel nicht vorhanden. Wie kann ich CSR in diesem Fall authentifizieren? Jeder mit CA.crt (öffentlicher CA-Schlüssel) kann einen privaten Schlüssel generieren und eine CSR an die CA senden.

Ich denke, Ansatz 2 scheint vernünftiger und sicherer zu sein, aber ich weiß nicht, wie ich die Probleme lösen kann, denen ich gegenüberstehe. Ich möchte wissen, ob ich ein sicheres Sicherheitsverständnis habe? oder wenn etwas fehlt, was ich vermisse. Auch wenn ich mit Ansatz 2 gehe, wie würde die Implementierung aussehen? Ich weiß, wie man Schlüssel generiert und CSR erstellt, aber wie kann ich ihn sicher an die Zertifizierungsstelle senden? Und am Server / CA-Ende, wie Sie die CSR erhalten und wie Sie das Zertifikat sicher zurücksenden.

0

0 Antworten auf die Frage