Erfahrung im Einsatz der Rutoken-Technologie zur Registrierung und Autorisierung von Benutzern im System (Teil 3)

Guten Tag!

Im vorigen Teil Wir haben erfolgreich unser eigenes Zertifizierungszentrum eingerichtet. Wie kann es für unsere Zwecke nützlich sein?

Mithilfe einer lokalen Zertifizierungsstelle können wir Zertifikate ausstellen und auch die Signaturen dieser Zertifikate überprüfen.

Bei der Ausstellung eines Zertifikats an einen Benutzer verwendet die Zertifizierungsstelle eine spezielle Zertifikatanforderung Pkcs#10, die das Dateiformat „.csr“ hat. Diese Anfrage enthält eine codierte Sequenz, die die Zertifizierungsstelle korrekt analysieren kann. Die Anfrage enthält sowohl den öffentlichen Schlüssel des Benutzers als auch Daten zur Erstellung eines Zertifikats (ein assoziatives Array mit Daten über den Benutzer).

Im nächsten Artikel werden wir uns ansehen, wie man eine Zertifikatsanfrage erhält. In diesem Artikel möchte ich die wichtigsten Befehle der Zertifizierungsstelle erläutern, die uns dabei helfen, unsere Aufgabe auf der Backend-Seite zu erledigen.

Also müssen wir zuerst ein Zertifikat erstellen. Dazu verwenden wir den Befehl:

openssl ca -batch -in user.csr -out user.crt

ca ist der openSSL-Befehl, der sich auf die Zertifizierungsstelle bezieht,
-batch – bricht Bestätigungsanfragen beim Generieren eines Zertifikats ab.
user.csr – Anfrage zur Erstellung eines Zertifikats (Datei im .csr-Format).
user.crt – Zertifikat (Ergebnis des Befehls).

Damit dieser Befehl funktioniert, muss die Zertifizierungsstelle genau wie beschrieben konfiguriert werden im vorherigen Teil des Artikels. Andernfalls müssen Sie zusätzlich den Speicherort des Stammzertifikats der Zertifizierungsstelle angeben.

Befehl zur Zertifikatsüberprüfung:

openssl cms -verify -in authenticate.cms -inform PEM -CAfile /Users/……/demoCA/ca.crt -out data.file

cms ist ein openSSL-Befehl, der zum Signieren, Verifizieren, Verschlüsseln von Daten und anderen kryptografischen Vorgängen mit openSSL verwendet wird.

-verify – in diesem Fall überprüfen wir das Zertifikat.

Authenticate.cms – eine Datei mit Daten, die mit dem Zertifikat signiert sind, das durch den vorherigen Befehl ausgestellt wurde.

-inform PEM – PEM-Format wird verwendet.

-CAfile /Users/……/demoCA/ca.crt – Pfad zum Stammzertifikat. (ohne dies funktionierte der Befehl bei mir nicht, obwohl die Pfade zu ca.crt in der Datei openssl.cfg geschrieben waren)

-out data.file – Ich sende die entschlüsselten Daten an die Datei data.file.

Der Algorithmus zur Verwendung einer Zertifizierungsstelle auf der Backend-Seite lautet wie folgt:

  • Benutzer Registration:
    1. Wir erhalten eine Anfrage, ein Zertifikat zu erstellen und es in der Datei user.csr zu speichern.
    2. Wir speichern den ersten Befehl dieses Artikels in einer Datei mit der Erweiterung .bat oder .cmd. Wir führen diese Datei über den Code aus, nachdem wir zuvor die Anforderung zum Erstellen eines Zertifikats in der Datei user.csr gespeichert haben. Wir erhalten eine Datei mit dem user.crt-Zertifikat.
    3. Wir lesen die Datei user.crt und senden sie an den Client.

  • Benutzerberechtigung:
    1. Wir erhalten signierte Daten vom Client und speichern sie in der Datei „authenticate.cms“.
    2. Speichern Sie den zweiten Befehl dieses Artikels in einer Datei mit der Erweiterung .bat oder .cmd. Wir führen diese Datei aus dem Code aus, nachdem wir zuvor die signierten Daten vom Server in „authenticate.cms“ gespeichert haben. Wir erhalten eine Datei mit entschlüsselten Daten data.file.
    3. Wir lesen data.file und prüfen diese Daten auf Gültigkeit. Was genau zu prüfen ist, wird beschrieben im ersten Artikel. Sind die Daten gültig, gilt die Benutzerautorisierung als erfolgreich.

Um diese Algorithmen zu implementieren, können Sie jede Programmiersprache verwenden, die zum Schreiben des Backends verwendet wird.

Im nächsten Artikel schauen wir uns an, wie man mit dem Retoken-Plugin arbeitet.

Danke!

Source: habr.com

Kommentar hinzufügen