Experiență în utilizarea tehnologiei Rutoken pentru înregistrarea și autorizarea utilizatorilor în sistem (partea 2)

Bună ziua Să continuăm cu acest subiectPartea anterioară poate fi găsită la link).

Astăzi trecem la partea practică. Să începem prin a configura CA-ul nostru bazat pe biblioteca criptografică open source cu drepturi depline openSSL. Acest algoritm a fost testat folosind Windows 7.

Cu openSSL instalat, putem efectua diverse operațiuni criptografice (cum ar fi crearea de chei și certificate) prin linia de comandă.

Algoritmul acțiunilor este după cum urmează:

  1. Descărcați distribuția de instalare openssl-1.1.1g.
    openSSL are versiuni diferite. Documentația pentru Rutoken spune că openSSL versiunea 1.1.0 sau mai nouă este necesară. Am folosit versiunea openssl-1.1.1g. Puteți descărca openSSL de pe site-ul oficial, dar pentru o instalare mai ușoară, trebuie să găsiți fișierul de instalare pentru Windows pe net. Am facut asta pentru tine: slproweb.com/products/Win32OpenSSL.html
    Derulați în jos în pagină și descărcați Win64 OpenSSL v1.1.1g EXE 63MB Installer.
  2. Instalați openssl-1.1.1g pe computer.
    Instalarea trebuie efectuată conform căii standard, care este indicată automat în folderul C: Program Files. Programul va fi instalat în folderul OpenSSL-Win64.
  3. Pentru a configura openSSL așa cum aveți nevoie, există fișierul openssl.cfg. Acest fișier se află în calea C:\Program Files\OpenSSL-Win64bin dacă ați instalat openSSL așa cum este descris în paragraful anterior. Accesați folderul în care este stocat openssl.cfg și deschideți acest fișier folosind, de exemplu, Notepad++.
  4. Probabil ați ghicit că autoritatea de certificare va fi configurată cumva prin modificarea conținutului fișierului openssl.cfg și aveți perfectă dreptate. Acest lucru necesită personalizarea comenzii [ca]. În fișierul openssl.cfg, începutul textului în care vom face modificări poate fi găsit ca: [ ca ].
  5. Acum voi da un exemplu de setare cu descrierea acesteia:
    [ 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
    

    Acum trebuie să creăm directorul și subdirectoarele demoCA așa cum se arată în exemplul de mai sus. Și plasați-l în acest director de-a lungul căii specificate în dir (am /Users/username/bin/openSSLca/demoCA).

    Este foarte important să scrieți corect dir - aceasta este calea către directorul în care va fi localizat centrul nostru de certificare. Acest director trebuie să fie localizat în /Users (adică în contul unui utilizator). Dacă plasați acest director, de exemplu, în C: Program Files, sistemul nu va vedea fișierul cu setările openssl.cfg (cel puțin așa a fost la mine).

    $dir - calea specificată în dir este înlocuită aici.

    Un alt punct important este să creați un fișier index.txt gol, fără acest fișier comenzile „openSSL ca…” nu vor funcționa.

    De asemenea, trebuie să aveți un fișier serial, o cheie privată rădăcină (ca.key), un certificat rădăcină (ca.crt). Procesul de obținere a acestor fișiere va fi descris mai jos.

  6. Conectăm algoritmii de criptare furnizați de Rutoken.
    Această conexiune are loc în fișierul openssl.cfg.

    • În primul rând, trebuie să descărcați algoritmii Rutoken necesari. Acestea sunt fișierele rtengine.dll, rtpkcs11ecp.dll.
      Pentru a face acest lucru, descărcați SDK-ul Rutoken: www.rutoken.ru/developers/sdk.

      Rutoken SDK este tot ce există pentru dezvoltatorii care doresc să încerce Rutoken. Există ambele exemple separate pentru lucrul cu Rutoken în diferite limbaje de programare și sunt prezentate câteva biblioteci. Bibliotecile noastre rtengine.dll și rtpkcs11ecp.dll sunt situate în Rutoken sdk, respectiv, la locația:

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

      Un punct foarte important. Bibliotecile rtengine.dll, rtpkcs11ecp.dll nu funcționează fără driverul instalat pentru Rutoken. De asemenea, Rutoken trebuie să fie conectat la computer. (pentru a instala tot ce aveți nevoie pentru Rutoken, consultați partea anterioară a articolului habr.com/en/post/506450)

    • Bibliotecile rtengine.dll și rtpkcs11ecp.dll pot fi păstrate oriunde în contul de utilizator.
    • Scriem căile către aceste biblioteci în openssl.cfg. Pentru a face acest lucru, deschideți fișierul openssl.cfg, puneți linia la începutul acestui fișier:
      openssl_conf = openssl_def

      La sfârșitul fișierului trebuie să adăugați:

      [ 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
      

      dynamic_path - trebuie să specificați calea către biblioteca rtengine.dll.
      MODULE_PATH - trebuie să vă setați calea către biblioteca rtpkcs11ecp.dll.

  7. Adăugarea de variabile de mediu.

    Asigurați-vă că adăugați o variabilă de mediu care specifică calea către fișierul de configurare openssl.cfg. În cazul meu, variabila OPENSSL_CONF a fost creată cu calea C:Program FilesOpenSSL-Win64binopenssl.cfg.

    În variabila cale, trebuie să specificați calea către folderul în care se află openssl.exe, în cazul meu este: C: Program FilesOpenSSL-Win64bin.

  8. Acum puteți reveni la pasul 5 și puteți crea fișierele lipsă pentru directorul demoCA.
    1. Primul fișier important fără de care nimic nu va funcționa este serialul. Acesta este un fișier fără extensie, a cărui valoare ar trebui să fie 01. Puteți să creați singur acest fișier și să scrieți înăuntru 01. De asemenea, îl puteți descărca din Rutoken SDK de-a lungul căii sdk/openssl/rtengine/samples/tool/demoCA /.
      Directorul demoCA conține fișierul serial, care este exact ceea ce avem nevoie.
    2. Creați o cheie privată rădăcină.
      Pentru a face acest lucru, vom folosi comanda bibliotecii openSSL, care trebuie rulată direct pe linia de comandă:

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

    3. Creăm un certificat rădăcină.
      Pentru a face acest lucru, utilizați următoarea comandă de bibliotecă openSSL:

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

      Vă rugăm să rețineți că cheia privată rădăcină, care a fost generată în pasul anterior, este necesară pentru a genera certificatul rădăcină. Prin urmare, linia de comandă trebuie lansată în același director.

    Totul are acum toate fișierele lipsă pentru configurarea completă a directorului demoCA. Plasați fișierele create în directoarele indicate la punctul 5.

Vom presupune că, după finalizarea tuturor celor 8 puncte, centrul nostru de certificare este complet configurat.

În partea următoare, voi descrie modul în care vom lucra cu autoritatea de certificare pentru a realiza ceea ce a fost descris în partea anterioară a articolului.

Sursa: www.habr.com

Adauga un comentariu