Izkušnje z uporabo tehnologije Rutoken za registracijo in avtorizacijo uporabnikov v sistemu (2. del)

Dober večer Nadaljujmo s to temoPrejšnji del najdete na povezavi).

Danes prehajamo na praktični del. Začnimo z nastavitvijo našega CA na podlagi polne odprtokodne kriptografske knjižnice openSSL. Ta algoritem je bil preizkušen z operacijskim sistemom Windows 7.

Z nameščenim openSSL lahko izvajamo različne kriptografske operacije (kot je ustvarjanje ključev in certifikatov) prek ukazne vrstice.

Algoritem dejanj je naslednji:

  1. Prenesite namestitveno distribucijo openssl-1.1.1g.
    openSSL ima različne različice. V dokumentaciji za Rutoken je navedeno, da je potrebna različica openSSL 1.1.0 ali novejša. Uporabil sem različico openssl-1.1.1g. OpenSSL lahko prenesete z uradne strani, vendar morate za lažjo namestitev poiskati namestitveno datoteko za windows na netu. To sem naredil zate: slproweb.com/products/Win32OpenSSL.html
    Pomaknite se navzdol po strani in prenesite namestitveni program Win64 OpenSSL v1.1.1g EXE 63 MB.
  2. Namestite openssl-1.1.1g v računalnik.
    Namestitev je treba izvesti po standardni poti, ki je samodejno navedena v mapi C: Program Files. Program bo nameščen v mapo OpenSSL-Win64.
  3. Za nastavitev openSSL, kot jo potrebujete, obstaja datoteka openssl.cfg. Ta datoteka se nahaja na poti C:\Program Files\OpenSSL-Win64bin, če ste namestili openSSL, kot je opisano v prejšnjem odstavku. Pojdite v mapo, v kateri je shranjen openssl.cfg, in odprite to datoteko, na primer z Notepad++.
  4. Verjetno ste uganili, da bo overitelj na nek način konfiguriran s spremembo vsebine datoteke openssl.cfg, in imate popolnoma prav. To zahteva prilagoditev ukaza [ ca ]. V datoteki openssl.cfg lahko začetek besedila, kjer bomo spreminjali, najdete kot: [ ca ].
  5. Zdaj bom dal primer nastavitve z njenim opisom:
    [ 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
    

    Zdaj moramo ustvariti imenik demoCA in podimenike, kot je prikazano v zgornjem primeru. In ga postavite v ta imenik po poti, ki je navedena v dir (imam /Users/username/bin/openSSLca/demoCA).

    Zelo pomembno je, da pravilno črkujete dir – to je pot do imenika, kjer bo naš certifikacijski center. Ta imenik mora biti v /Users (to je v računu nekega uporabnika). Če ta imenik postavite na primer v C: Program Files, sistem ne bo videl datoteke z nastavitvami openssl.cfg (vsaj pri meni je bilo tako).

    $dir - tukaj je nadomeščena pot, navedena v dir.

    Druga pomembna točka je ustvariti prazno datoteko index.txt, brez te datoteke ukazi »openSSL ca ...« ne bodo delovali.

    Imeti morate tudi serijsko datoteko, korenski zasebni ključ (ca.key), korensko potrdilo (ca.crt). Postopek pridobivanja teh datotek bo opisan spodaj.

  6. Povezujemo algoritme šifriranja, ki jih ponuja Rutoken.
    Ta povezava poteka v datoteki openssl.cfg.

    • Najprej morate prenesti potrebne algoritme Rutoken. To sta datoteki rtengine.dll, rtpkcs11ecp.dll.
      Če želite to narediti, prenesite Rutoken SDK: www.rutoken.ru/developers/sdk.

      Rutoken SDK je vse, kar je na voljo za razvijalce, ki želijo preizkusiti Rutoken. Obstajata oba ločena primera za delo z Rutokenom v različnih programskih jezikih in predstavljene so nekatere knjižnice. Naši knjižnici rtengine.dll in rtpkcs11ecp.dll se nahajata v Rutoken sdk oziroma na lokaciji:

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

      Zelo pomembna točka. Knjižnice rtengine.dll, rtpkcs11ecp.dll ne delujejo brez nameščenega gonilnika za Rutoken. Tudi Rutoken mora biti povezan z računalnikom. (za namestitev vsega, kar potrebujete za Rutoken, glejte prejšnji del članka habr.com/en/post/506450)

    • Knjižnici rtengine.dll in rtpkcs11ecp.dll lahko shranite kjer koli v uporabniškem računu.
    • Poti do teh knjižnic zapišemo v openssl.cfg. Če želite to narediti, odprite datoteko openssl.cfg, postavite vrstico na začetek te datoteke:
      openssl_conf = openssl_def

      Na koncu datoteke morate dodati:

      [ 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 - določiti morate svojo pot do knjižnice rtengine.dll.
      MODULE_PATH - morate napisati svojo pot do knjižnice rtpkcs11ecp.dll.

  7. Dodajanje spremenljivk okolja.

    Ne pozabite dodati spremenljivke okolja, ki določa pot do konfiguracijske datoteke openssl.cfg. V mojem primeru je bila spremenljivka OPENSSL_CONF ustvarjena s potjo C:Program FilesOpenSSL-Win64binopenssl.cfg.

    V spremenljivki poti morate določiti pot do mape, kjer se nahaja openssl.exe, v mojem primeru je to: C: Program FilesOpenSSL-Win64bin.

  8. Zdaj se lahko vrnete na 5. korak in ustvarite manjkajoče datoteke za imenik demoCA.
    1. Prva pomembna datoteka, brez katere nič ne deluje, je serijska. To je datoteka brez končnice, katere vrednost bi morala biti 01. To datoteko lahko ustvarite sami in vanjo vpišete 01. Lahko jo tudi prenesete iz Rutoken SDK po poti sdk/openssl/rtengine/samples/tool/demoCA /.
      Imenik demoCA vsebuje serijsko datoteko, ki je točno to, kar potrebujemo.
    2. Ustvarite korenski zasebni ključ.
      Za to bomo uporabili ukaz knjižnice openSSL, ki ga moramo zagnati neposredno v ukazni vrstici:

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

    3. Ustvarimo korensko potrdilo.
      Če želite to narediti, uporabite naslednji ukaz knjižnice openSSL:

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

      Upoštevajte, da je za generiranje korenskega potrdila potreben korenski zasebni ključ, ki je bil ustvarjen v prejšnjem koraku. Zato je treba ukazno vrstico zagnati v istem imeniku.

    Vse ima zdaj vse manjkajoče datoteke za popolno konfiguracijo imenika demoCA. Ustvarjene datoteke postavite v imenike, navedene v 5. točki.

Predvidevamo, da je po izpolnitvi vseh 8 točk naš certifikacijski center v celoti konfiguriran.

V naslednjem delu bom opisal, kako bomo sodelovali s overiteljem, da bi dosegli, kar je opisano v prejšnji del članka.

Vir: www.habr.com

Dodaj komentar