Die Anwendungstechnologie von Rutoken zur Registrierung und Authentifizierung von Benutzern im System (Teil 3)

Guten Tag!

Im vorherigen Teil Wir haben erfolgreich unsere eigene Zertifizierungsstelle eingerichtet. Wie kann sie für unsere Zwecke nützlich sein?

Mit einer lokalen Zertifizierungsstelle können wir Zertifikate ausstellen und die Signatur dieser Zertifikate überprüfen.

Bei der Ausstellung eines Zertifikats verwendet die Zertifizierungsstelle eine spezielle Anfrage zur Ausstellung eines Zertifikats Pkcs#10, die im Dateiformat ‘.csr’ vorliegt. Diese Anfrage enthält eine kodierte Folge, die die Zertifizierungsstelle weiß, wie sie richtig entschlüsseln kann. Die Anfrage enthält sowohl den öffentlichen Schlüssel des Benutzers als auch die Daten zur Erstellung des Zertifikats (ein assoziatives Array mit Benutzerdaten).

Wie wir die Anfrage zur Ausstellung eines Zertifikats erhalten, werden wir im nächsten Artikel behandeln. In diesem Artikel möchte ich die wichtigsten Befehle der Zertifizierungsstelle vorstellen, die uns helfen, unsere Aufgabe auf der Backend-Seite zu erfüllen.

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

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

ca — der Befehl von OpenSSL, der sich auf die Zertifizierungsstelle bezieht,
-batch — unterdrückt Bestätigungsanfragen bei der Zertifikatsstellung.
user.csr — Anfrage zur Erstellung eines Zertifikats (Dateiformat .csr).
user.crt — Zertifikat (erhaltenes Ergebnis des Befehls).

Damit dieser Befehl funktioniert, muss die Zertifizierungsstelle genau wie beschrieben konfiguriert sein im vorhergehenden Teil des Artikels.Andernfalls muss der Speicherort des Stammzertifikats der Zertifizierungsstelle zusätzlich angegeben werden.

Befehl zur Überprüfung des Zertifikats:

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

cms — Befehl von openSSL, der zum Signieren, Überprüfen, Verschlüsseln von Daten und anderen kryptografischen Operationen mit openSSL verwendet wird.

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

authenticate.cms — Datei, die die signierten Daten des Zertifikats enthält, das von dem vorherigen Befehl ausgestellt wurde.

-inform PEM — verwendet das PEM-Format.

-CAfile /Users/……/demoCA/ca.crt — Pfad zum Stammzertifikat. (ohne dies hat der Befehl nicht funktioniert, auch wenn die Pfade zu ca.crt in der Datei openssl.cfg angegeben sind)

-out data.file — die entschlüsselten Daten sende ich in die Datei data.file.

Der Algorithmus zur Anwendung der Zertifizierungsstelle auf der Backend-Seite ist folgender:

  • Benutzerregistrierung:
    1. Wir erhalten die Anfrage zur Erstellung des Zertifikats und speichern sie in der Datei user.csr.
    2. Wir speichern den ersten Befehl dieses Artikels in einer Datei mit der Erweiterung .bat oder .cmd. Wir führen diese Datei aus dem Code heraus aus, nachdem wir die Anfrage zur Erstellung des Zertifikats in der Datei user.csr gespeichert haben. Wir erhalten die Datei mit dem Zertifikat user.crt.
    3. Wir lesen die Datei user.crt und senden sie an den Client.

  • Benutzerauthentifizierung:
    1. Wir erhalten die signierten Daten vom Client und speichern sie in der Datei authenticate.cms.
    2. Wir speichern den zweiten Befehl dieses Artikels in einer Datei mit der Erweiterung .bat oder .cmd. Wir führen diese Datei aus dem Code heraus aus, nachdem wir die signierten Daten vom Server in authenticate.cms gespeichert haben. Wir erhalten die Datei mit den entschlüsselten Daten data.file.
    3. Wir lesen data.file und überprüfen diese Daten auf Gültigkeit. Was genau überprüft werden soll, ist beschrieben im ersten Artikel. Wenn die Daten gültig sind, gilt die Benutzerauthentifizierung als erfolgreich.

Für die Umsetzung dieser Algorithmen kann jede Programmiersprache verwendet werden, die wir für die Backend-Entwicklung nutzen.

Im nächsten Artikel werden wir uns damit beschäftigen, wie man mit dem Retoken-Plugin arbeitet.

Vielen Dank für Ihre Aufmerksamkeit!

Quelle: habr.com

Zuverlässiges Webhosting mit DDoS-Schutz, VPS- und VDS-Server kaufen 🔥 Zuverlässiges Webhosting mit DDoS-Schutz, VPS- und VDS-Server kaufen | ProHoster