Doświadczenie w wykorzystaniu technologii Rutoken do rejestracji i autoryzacji użytkowników w systemie (część 2)

Dzień dobry Kontynuujmy ten temat (Poprzednią część znajdziesz pod linkiem).

Dziś przejdźmy do części praktycznej. Zacznijmy od skonfigurowania urzędu certyfikacji w oparciu o pełnoprawną bibliotekę kryptograficzną open source openSSL. Algorytm ten został przetestowany w systemie Windows 7.

Po zainstalowaniu openSSL możemy wykonywać różne operacje kryptograficzne (takie jak generowanie kluczy i certyfikatów) za pośrednictwem wiersza poleceń.

Algorytm działań jest następujący:

  1. Pobierz dystrybucję instalacyjną openssl-1.1.1g.
    openSSL ma różne wersje. W dokumentacji Rutokena podano, że wymagany jest openSSL w wersji 1.1.0 lub nowszej. Użyłem wersji openssl-1.1.1g. Możesz pobrać openSSL z oficjalnej strony internetowej, ale dla łatwiejszej instalacji musisz znaleźć plik instalacyjny dla systemu Windows w Internecie. Zrobiłem to dla ciebie: slproweb.com/products/Win32OpenSSL.html
    Musisz przewinąć do dołu strony i pobrać instalator Win64 OpenSSL v1.1.1g EXE 63MB.
  2. Zainstaluj openssl-1.1.1g na swoim komputerze.
    Instalację należy przeprowadzić przy użyciu standardowej ścieżki, która jest automatycznie określana w folderze C:Program Files. Program zostanie zainstalowany w folderze OpenSSL-Win64.
  3. Aby skonfigurować openSSL według potrzeb, znajduje się plik openssl.cfg. Plik ten znajduje się w ścieżce C:Program FilesOpenSSL-Win64bin, jeśli zainstalowałeś openSSL zgodnie z opisem w poprzednim akapicie. Przejdź do folderu, w którym przechowywany jest plik openssl.cfg i otwórz ten plik za pomocą np. Notepad++.
  4. Pewnie domyśliłeś się, że konfiguracja centrum certyfikacji zostanie przeprowadzona poprzez jakąś zmianę zawartości pliku openssl.cfg i masz całkowitą rację. Aby to zrobić, musisz skonfigurować polecenie [ca]. W pliku openssl.cfg początek tekstu, w którym dokonamy zmian, znajdziemy jako: [ca].
  5. Teraz podam przykład konfiguracji wraz z jej opisem:
    [ 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
    

    Teraz musisz utworzyć katalog i podkatalogi demoCA, jak pokazano w powyższym przykładzie. I umieść go w tym katalogu wzdłuż ścieżki określonej w katalogu (mam /Users/username/bin/openSSLca/demoCA).

    Bardzo ważne jest prawidłowe wpisanie katalogu - jest to ścieżka do katalogu, w którym będzie się mieścić nasz urząd certyfikacji. Katalog ten musi znajdować się w katalogu /Users (czyli na koncie użytkownika). Jeśli umieścisz ten katalog np. w C:Program Files, system nie zobaczy pliku z ustawieniami openssl.cfg (przynajmniej tak było u mnie).

    $dir - tutaj podstawiana jest ścieżka określona w dir.

    Kolejną ważną kwestią jest utworzenie pustego pliku Index.txt, bez tego pliku polecenia „openSSL ca…” nie będą działać.

    Musisz także mieć plik szeregowy, główny klucz prywatny (ca.key) i certyfikat główny (ca.crt). Proces uzyskiwania tych plików zostanie opisany poniżej.

  6. Włączamy algorytmy szyfrowania dostarczane przez Rutoken.
    To połączenie występuje w pliku openssl.cfg.

    • Przede wszystkim musisz pobrać niezbędne algorytmy Rutoken. Są to pliki rtengine.dll, rtpkcs11ecp.dll.
      Aby to zrobić, pobierz pakiet SDK Rutoken: www.rutoken.ru/developers/sdk.

      Rutoken SDK to wszystko, co jest dostępne dla programistów, którzy chcą wypróbować Rutoken. Znajdują się tam zarówno indywidualne przykłady pracy z Rutokenem w różnych językach programowania, jak i zaprezentowane zostały niektóre biblioteki. Nasze biblioteki rtengine.dll i rtpkcs11ecp.dll znajdują się odpowiednio w Rutoken sdk w lokalizacji:

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

      Bardzo ważny punkt. Biblioteki rtengine.dll, rtpkcs11ecp.dll nie będą działać bez zainstalowanego sterownika dla Rutokena. Ponadto Rutoken musi być podłączony do komputera. (aby zainstalować wszystko, co niezbędne dla Rutokena, zobacz poprzednią część artykułu habr.com/en/post/506450)

    • Biblioteki rtengine.dll i rtpkcs11ecp.dll można przechowywać w dowolnym miejscu konta użytkownika.
    • Rejestrujemy ścieżki do tych bibliotek w openssl.cfg. W tym celu otwórz plik openssl.cfg, na początku tego pliku musisz umieścić linię:
      openssl_conf = openssl_def

      Na końcu pliku należy dodać:

      [ 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 – musisz podać swoją ścieżkę do biblioteki rtengine.dll.
      MODULE_PATH - musisz podać swoją ścieżkę do biblioteki rtpkcs11ecp.dll.

  7. Dodawanie zmiennych środowiskowych.

    Należy dodać zmienną środowiskową określającą ścieżkę do pliku konfiguracyjnego openssl.cfg. W moim przypadku zmienna OPENSSL_CONF została utworzona ze ścieżką C:Program FilesOpenSSL-Win64binopenssl.cfg.

    Zmienna path musi zawierać ścieżkę do folderu, w którym znajduje się plik openssl.exe, w moim przypadku jest to: C:Program FilesOpenSSL-Win64bin.

  8. Teraz możesz wrócić do kroku 5 i utworzyć brakujące pliki dla katalogu demoCA.
    1. Pierwszym ważnym plikiem bez którego nic nie będzie działać jest serial. Jest to plik bez rozszerzenia, którego wartość powinna wynosić 01. Możesz sam stworzyć taki plik i wpisać w nim 01. Możesz go także pobrać z Rutoken SDK ścieżką sdk/openssl/rtengine/samples/tool/demoCA /.
      W katalogu demoCA znajduje się plik seryjny, czyli dokładnie to, czego potrzebujemy.
    2. Utwórz główny klucz prywatny.
      W tym celu użyjemy polecenia biblioteki openSSL, które należy uruchomić bezpośrednio z wiersza poleceń:

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

    3. Utwórz certyfikat główny.
      W tym celu użyjemy następującego polecenia z biblioteki openSSL:

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

      Pamiętaj, że do utworzenia certyfikatu głównego potrzebny jest główny klucz prywatny, który został utworzony w poprzednim kroku. Dlatego wiersz poleceń musi zostać uruchomiony w tym samym katalogu.

    Wszystkie brakujące pliki do pełnej konfiguracji katalogu demoCA są już dostępne. Umieść utworzone pliki w katalogach określonych w kroku 5.

Zakładamy, że po zrealizowaniu wszystkich 8 punktów nasze centrum certyfikacji jest w pełni skonfigurowane.

W kolejnej części opowiem jak będziemy współpracować z urzędem certyfikacji, aby osiągnąć to co zostało opisane w poprzednia część artykułu.

Źródło: www.habr.com

Dodaj komentarz