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

Bună ziua! Să continuăm să explorăm acest subiect (partea anterioară poate fi consultată la linkul).

Astăzi vom trece la partea practică. Vom începe cu configurarea centrului nostru de certificare pe baza unei biblioteci criptografice complete cu sursă deschisă, openSSL. Acest algoritm a fost testat utilizând Windows 7.

După instalarea openSSL, putem efectua diverse operațiuni criptografice (de exemplu, generarea de chei și certificate) prin linia de comandă.

Algoritmul de acțiune este următorul:

  1. Descărcați pachetul de instalare openssl-1.1.1g.
    openSSL are diferite versiuni. În documentația pentru Rutoken s-a menționat că este necesară versiunea openSSL 1.1.0 sau mai recentă. Am folosit versiunea openssl-1.1.1g. Puteți descărca openSSL de pe site-ul oficial, dar pentru o instalare mai simplă, trebuie să găsiți fișierul de instalare pentru Windows pe internet. Eu am făcut asta pentru dumneavoastră: slproweb.com/products/Win32OpenSSL.html
    Trebuie să defilați în jos pe pagină și să descărcați Win64 OpenSSL v1.1.1g EXE 63MB Installer.
  2. Instalați openssl-1.1.1g pe computer.
    Instalarea trebuie efectuată pe calea standard, care se indică automat în folderul C:Program Files. Programul se va instala în folderul OpenSSL-Win64.
  3. Pentru a configura openSSL așa cum doriți, există un fișier openssl.cfg. Acest fișier se află pe calea C:Program FilesOpenSSL-Win64bin dacă ați instalat openSSL așa cum s-a spus în punctul anterior. Accesați folderul unde este stocat openssl.cfg și deschideți acest fișier folosind, de exemplu, Notepad++.
  4. Cred că ați ghicit că configurarea centrului de certificare se va face prin modificarea conținutului fișierului openssl.cfg, și aveți absolut dreptate. Pentru aceasta, trebuie să configurăm comanda [ ca ]. În fișierul openssl.cfg, începutul textului unde vom face modificările poate fi găsit ca: [ ca ].
  5. Acum voi da un exemplu de configurare cu descrierea sa:
    [ 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 este necesar să creați directorul demoCA și subdirectoarele, așa cum este demonstrat în exemplul de mai sus. Și să plasați în acest director pe calea specificată în dir (eu am /Users/username/bin/openSSLca/demoCA).

    Este foarte important să specifici corect dir – acesta este calea către directorul în care va fi amplasat centrul nostru de certificare. Acest director trebuie să fie neapărat în /Users (adică în contul unui utilizator). Dacă amplasezi acest director, de exemplu, în C:Program Files, sistemul nu va găsi fișierul de configurare openssl.cfg (cel puțin așa mi s-a întâmplat mie).

    $dir – aici se introduce calea care este specificată în dir.

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

    De asemenea, este necesar să ai un fișier serial, cheia privată rădăcină (ca.key), certificatul rădăcină (ca.crt). Procesul de obținere a acestor fișiere va fi descris mai departe.

  6. Conectăm algoritmii de criptare furnizați de Rutoken.
    Această conexiune se face în fișierul openssl.cfg.
    • În primul rând, trebuie să descarci algoritmii necesari de la Rutoken. Acestea sunt fișierele rtengine.dll, rtpkcs11ecp.dll.
      Pentru aceasta, descărcăm SDK-ul Rutoken: www.rutoken.ru/developers/sdk.

      SDK-ul Rutoken este tot ce ai nevoie pentru dezvoltatori care doresc să testeze Rutoken. Acolo găsești exemple separate pentru lucrul cu Rutoken în diferite limbaje de programare, precum și unele biblioteci. Bibliotecile noastre rtengine.dll și rtpkcs11ecp.dll se găsesc în SDK-ul Rutoken la următoarele locații:

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

      Un aspect 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 instalarea tuturor celor necesare pentru Rutoken vezi partea anterioară a articolului habr.com/ru/post/506450)

    • Bibliotecile rtengine.dll și rtpkcs11ecp.dll pot fi păstrate în orice locație din contul utilizatorului.
    • Specificați căile către aceste biblioteci în openssl.cfg. Pentru aceasta, deschideți fișierul openssl.cfg, începând cu următoarea linie:
      openssl_conf = openssl_def

      La sfârșitul fișierului, este necesar 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=AktivCo.;model=RutokenECP
      default_algorithms = CIPHERS, DIGEST, PKEY, RAND
      

      dynamic_path – trebuie să specifici calea ta către biblioteca rtengine.dll.
      MODULE_PATH – trebuie să specifici calea ta către biblioteca rtpkcs11ecp.dll.

  7. Adaugă variabilele de mediu.

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

    În variabila path trebuie specificată calea către folderul în care se află openssl.exe, în cazul meu acesta este: C:Program FilesOpenSSL-Win64bin.

  8. Acum putem reveni la punctul 5 și crea fișierele lipsă pentru directorul demoCA.
    1. Primul fișier important de care avem nevoie, fără de care nimic nu va funcționa, este serial. Acesta este un fișier fără extensie, al cărui conținut trebuie să fie 01. Îl putem crea noi înșine și să scriem în interior 01. De asemenea, îl putem descărca din SDK-ul RutuToken la calea sdk/openssl/rtengine/samples/tool/demoCA/.
      În directorul demoCA se află fișierul serial, de care avem nevoie.
    2. Creăm cheia privată rădăcină.
      Pentru aceasta, vom utiliza comanda din biblioteca openSSL, care trebuie rulată direct în linia de comandă:
      openssl genpkey -algorithm gost2012_256 -pkeyopt paramset:A -out ca.key

    3. Creăm certificatul rădăcină.
      Pentru aceasta, vom folosi următoarea comandă din biblioteca openSSL:
      openssl req -utf8 -x509 -key ca.key -out ca.crt

      Rețineți că pentru a crea certificatul rădăcină este necesară cheia privată rădăcină, care a fost creată în pasul anterior. Prin urmare, linia de comandă trebuie să fie rulată în același director.

    Acum toate fișierele lipsă pentru configurarea completă a directorului demoCA sunt disponibile. Plasați fișierele create în directoarele indicate în punctul 5.

Vom considera că, după finalizarea tuturor celor 8 puncte, autoritatea de certificare este complet configurată.

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

Sursa: habr.com

Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS 🔥 Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS | ProHoster