Erfahrungen mit der Anwendung der Rutoken-Technologie zur Registrierung und Authentifizierung von Benutzern im System (Teil 3)

Guten Tag!

Im vorherigen Teil haben wir erfolgreich unser eigenes Zertifizierungszentrum aufgebaut. Wie kann es für unsere Zwecke überhaupt hilfreich sein?

Mit Hilfe eines lokalen Zertifizierungszentrums können wir Zertifikate ausstellen und die Signatur dieser Zertifikate überprüfen.

Bei der Ausstellung eines Zertifikats verwendet das Zertifizierungszentrum eine spezielle Anfrage zur Ausstellung eines Zertifikats Pkcs#10, die das Dateiformat ‚.csr‘ hat. Diese Anfrage enthält eine codierte Sequenz, die das Zertifizierungszentrum weiß, wie man sie korrekt analysiert. 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 man eine Anfrage zur Ausstellung eines Zertifikats erhält, werden wir im nächsten Artikel besprechen, aber in diesem möchte ich die grundlegenden Befehle des Zertifizierungszentrums anführen, die uns helfen werden, unsere Aufgabe auf der Backend-Seite auszuführen.

Zunächst müssen wir ein Zertifikat erstellen. Dazu verwenden wir den Befehl:

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

ca — dieser Befehl gehört zu openSSL und bezieht sich auf das Zertifizierungszentrum,
-batch — hebt die Bestätigungsanforderungen bei der Erstellung des Zertifikats auf.
user.csr — die Anfrage zur Erstellung eines Zertifikats (Datei im Format .csr).
user.crt — das Zertifikat (das Ergebnis des Befehls).

Damit dieser Befehl funktioniert, muss das Zertifizierungszentrum genau so konfiguriert sein, wie es beschrieben ist im vorherigen Teil des Artikels. Andernfalls müssen wir den Standort des Stammzertifikats des Zertifizierungszentrums zusätzlich angeben.

Befehl zur Überprüfung eines Zertifikats:

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

cms — dieser Befehl von openSSL wird verwendet, um Daten zu signieren, Zertifikate zu überprüfen, Daten zu verschlüsseln und andere kryptografische Operationen mit openSSL durchzuführen.

-verify — in diesem Fall führen wir die Überprüfung des Zertifikats durch.

authenticate.cms — die Datei, die die mit dem zuvor vom Befehl ausgestellten Zertifikat signierten Daten enthält.

-inform PEM — das PEM-Format wird verwendet.

-CAfile /Users/......../demoCA/ca.crt — der Pfad zum Stammzertifikat. (ohne dies funktionierte mein Befehl nicht, obwohl 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 einer Zertifizierungsstelle auf der Backend-Seite lautet wie folgt:

  • Benutzerregistrierung:
    1. Wir erhalten eine Anfrage zur Erstellung eines Zertifikats und speichern sie in der Datei user.csr.
    2. Wir speichern den ersten Befehl dieses Artikels in einer Datei mit der Endung .bat oder .cmd. Wir führen diese Datei aus dem Code aus, nachdem wir die Anfrage zur Erstellung eines Zertifikats in der Datei user.csr gespeichert haben. Wir erhalten eine 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 Endung .bat oder .cmd. Wir führen diese Datei aus dem Code aus, nachdem wir die signierten Daten vom Server in authenticate.cms gespeichert haben. Wir erhalten eine Datei mit den entschlüsselten Daten data.file.
    3. Wir lesen die data.file und überprüfen diese Daten auf Gültigkeit. Was genau zu überprüfen ist, ist in dem ersten Artikelbeschrieben. Wenn die Daten gültig sind, gilt die Benutzerauthentifizierung als erfolgreich.

Zur Umsetzung dieser Algorithmen kann jede Programmiersprache verwendet werden, die für die Erstellung des Backends geeignet ist.

Im nächsten Artikel werden wir uns damit befassen, wie man mit dem RUTOKEN-Plugin arbeitet.

Vielen Dank für Ihre Aufmerksamkeit!

Quelle: habr.com

60GB SSD 8Gb DDR4