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

Guten Tag! Machen wir mit diesem Thema weiterDen vorherigen Teil finden Sie unter dem Link).

Heute gehen wir zum praktischen Teil über. Beginnen wir mit der Einrichtung unserer CA basierend auf der vollwertigen Open-Source-Kryptografiebibliothek openSSL. Dieser Algorithmus wurde unter Windows 7 getestet.

Wenn openSSL installiert ist, können wir über die Befehlszeile verschiedene kryptografische Vorgänge (z. B. das Erstellen von Schlüsseln und Zertifikaten) ausführen.

Der Aktionsalgorithmus lautet wie folgt:

  1. Laden Sie die Installationsdistribution openssl-1.1.1g herunter.
    openSSL gibt es in verschiedenen Versionen. In der Dokumentation für Rutoken heißt es, dass openSSL Version 1.1.0 oder neuer erforderlich ist. Ich habe die Version openssl-1.1.1g verwendet. Sie können openSSL von der offiziellen Website herunterladen, für eine einfachere Installation müssen Sie jedoch die Installationsdatei für Windows im Internet finden. Ich habe das für dich getan: slproweb.com/products/Win32OpenSSL.html
    Scrollen Sie auf der Seite nach unten und laden Sie das Installationsprogramm für Win64 OpenSSL v1.1.1g EXE 63 MB herunter.
  2. Installieren Sie openssl-1.1.1g auf dem Computer.
    Die Installation muss gemäß dem Standardpfad erfolgen, der automatisch im Ordner C:Programme angezeigt wird. Das Programm wird im OpenSSL-Win64-Ordner installiert.
  3. Um openSSL so einzurichten, wie Sie es benötigen, gibt es die Datei openssl.cfg. Diese Datei befindet sich im Pfad C:\Programme\OpenSSL-Win64bin, wenn Sie openSSL wie im vorherigen Absatz beschrieben installiert haben. Gehen Sie in den Ordner, in dem openssl.cfg gespeichert ist, und öffnen Sie diese Datei beispielsweise mit Notepad++.
  4. Sie haben wahrscheinlich vermutet, dass die Zertifizierungsstelle irgendwie durch Ändern des Inhalts der Datei openssl.cfg konfiguriert wird, und Sie haben absolut Recht. Dies erfordert eine Anpassung des Befehls [ ca ]. In der Datei openssl.cfg finden Sie den Anfang des Textes, an dem wir Änderungen vornehmen werden, als: [ ca ].
  5. Jetzt gebe ich ein Beispiel für eine Einstellung mit ihrer Beschreibung:
    [ ca ]
    default_ca	= CA_default		
    
     [ CA_default ]
    dir		= /Users/username/bin/openSSLca/demoCA		 
    certs		= $dir/certs		
    crl_dir		= $dir/crl		
    database	= $dir/index.txt	
    new_certs_dir	= $dir/newcerts	
    certificate	= $dir/ca.crt 	
    serial		= $dir/private/serial 		
    crlnumber	= $dir/crlnumber	
    					
    crl		= $dir/crl.pem 		
    private_key	= $dir/private/ca.key
    x509_extensions	= usr_cert
    

    Jetzt müssen wir das demoCA-Verzeichnis und die Unterverzeichnisse erstellen, wie im obigen Beispiel gezeigt. Und platzieren Sie es in diesem Verzeichnis entlang des in dir angegebenen Pfads (ich habe /Benutzer/Benutzername/bin/openSSLca/demoCA).

    Es ist sehr wichtig, dir richtig zu buchstabieren – dies ist der Pfad zu dem Verzeichnis, in dem sich unser Zertifizierungszentrum befindet. Dieses Verzeichnis muss sich in /Users befinden (d. h. im Konto eines Benutzers). Wenn Sie dieses Verzeichnis beispielsweise in C:Programme ablegen, wird das System die Datei mit den openssl.cfg-Einstellungen nicht sehen (zumindest war das bei mir so).

    $dir – der in dir angegebene Pfad wird hier ersetzt.

    Ein weiterer wichtiger Punkt ist das Erstellen einer leeren index.txt-Datei, ohne diese Datei funktionieren die „openSSL ca …“-Befehle nicht.

    Sie benötigen außerdem eine serielle Datei, einen privaten Root-Schlüssel (ca.key) und ein Root-Zertifikat (ca.crt). Der Prozess zum Erhalten dieser Dateien wird im Folgenden beschrieben.

  6. Wir verbinden die von Rutoken bereitgestellten Verschlüsselungsalgorithmen.
    Diese Verbindung erfolgt in der Datei openssl.cfg.

    • Zunächst müssen Sie die erforderlichen Rutoken-Algorithmen herunterladen. Dies sind die Dateien rtengine.dll, rtpkcs11ecp.dll.
      Laden Sie dazu das Rutoken SDK herunter: www.rutoken.ru/developers/sdk.

      Das Rutoken SDK ist alles, was es für Entwickler gibt, die Rutoken ausprobieren möchten. Es gibt sowohl separate Beispiele für die Arbeit mit Rutoken in verschiedenen Programmiersprachen als auch einige Bibliotheken. Unsere Bibliotheken rtengine.dll und rtpkcs11ecp.dll befinden sich jeweils im Rutoken-SDK an folgender Stelle:

      sdk/openssl/rtengine/bin/windows-x86_64/lib/rtengine.dll
      sdk/pkcs11/lib/windows-x86_64/rtpkcs11ecp.dll

      Ein sehr wichtiger Punkt. Die Bibliotheken rtengine.dll und rtpkcs11ecp.dll funktionieren nicht ohne den installierten Treiber für Rutoken. Außerdem muss Rutoken mit dem Computer verbunden sein. (Informationen zur Installation von allem, was Sie für Rutoken benötigen, finden Sie im vorherigen Teil des Artikels habr.com/en/post/506450)

    • Die Bibliotheken rtengine.dll und rtpkcs11ecp.dll können an einer beliebigen Stelle im Benutzerkonto gespeichert werden.
    • Die Pfade zu diesen Bibliotheken schreiben wir in openssl.cfg. Öffnen Sie dazu die Datei openssl.cfg und fügen Sie die Zeile am Anfang dieser Datei ein:
      openssl_conf = openssl_def

      Am Ende der Datei müssen Sie Folgendes hinzufügen:

      [ openssl_def ]
      engines = engine_section
      [ engine_section ]
      rtengine = gost_section
      [ gost_section ]
      dynamic_path = /Users/username/bin/sdk-rutoken/openssl/rtengine/bin/windows-x86_64/lib/rtengine.dll
      MODULE_PATH = /Users/username/bin/sdk-rutoken/pkcs11/lib/windows-x86_64/rtpkcs11ecp.dll
      RAND_TOKEN = pkcs11:manufacturer=Aktiv%20Co.;model=Rutoken%20ECP
      default_algorithms = CIPHERS, DIGEST, PKEY, RAND
      

      dynamischer_Pfad – Sie müssen Ihren Pfad zur Bibliothek rtengine.dll angeben.
      MODULE_PATH – Sie müssen Ihren Pfad zur Bibliothek rtpkcs11ecp.dll festlegen.

  7. Umgebungsvariablen hinzufügen.

    Stellen Sie sicher, dass Sie eine Umgebungsvariable hinzufügen, die den Pfad zur Konfigurationsdatei openssl.cfg angibt. In meinem Fall wurde die Variable OPENSSL_CONF mit dem Pfad C:Program FilesOpenSSL-Win64binopenssl.cfg erstellt.

    In der Pfadvariablen müssen Sie den Pfad zu dem Ordner angeben, in dem sich openssl.exe befindet, in meinem Fall ist es: C: ProgrammeOpenSSL-Win64bin.

  8. Jetzt können Sie zu Schritt 5 zurückkehren und die fehlenden Dateien für das demoCA-Verzeichnis erstellen.
    1. Die erste wichtige Datei, ohne die nichts geht, ist die Seriennummer. Dies ist eine Datei ohne Erweiterung, deren Wert 01 sein sollte. Sie können diese Datei selbst erstellen und 01 hineinschreiben. Sie können sie auch vom Rutoken SDK über den Pfad sdk/openssl/rtengine/samples/tool/demoCA herunterladen /.
      Das demoCA-Verzeichnis enthält die serielle Datei, die genau das ist, was wir brauchen.
    2. Erstellen Sie einen privaten Root-Schlüssel.
      Dazu verwenden wir den openSSL-Bibliotheksbefehl, der direkt in der Befehlszeile ausgeführt werden muss:

      openssl genpkey -algorithm gost2012_256 -pkeyopt paramset:A -out ca.key

    3. Wir erstellen ein Root-Zertifikat.
      Verwenden Sie dazu den folgenden openSSL-Bibliotheksbefehl:

      openssl req -utf8 -x509 -key ca.key -out ca.crt

      Bitte beachten Sie, dass zur Generierung des Root-Zertifikats der private Root-Schlüssel benötigt wird, der im vorherigen Schritt generiert wurde. Daher muss die Befehlszeile im selben Verzeichnis gestartet werden.

    Alles verfügt nun über alle fehlenden Dateien für die vollständige Konfiguration des demoCA-Verzeichnisses. Legen Sie die erstellten Dateien in den in Punkt 5 angegebenen Verzeichnissen ab.

Wir gehen davon aus, dass unser Zertifizierungszentrum nach Abschluss aller 8 Punkte vollständig konfiguriert ist.

Im nächsten Teil werde ich beschreiben, wie wir mit der Zertifizierungsstelle zusammenarbeiten, um das zu erreichen, was in beschrieben wurde der vorherige Teil des Artikels.

Source: habr.com

Kommentar hinzufügen