Dzień dobry! Kontynuujemy zgłębianie tego tematu ().
Dziś przejdziemy do części praktycznej. Zaczniemy od konfiguracji własnego centrum certyfikacji opartego na pełnowartościowej bibliotece kryptograficznej open source openSSL. Algorytm ten został przetestowany przy użyciu systemu Windows 7.
Po zainstalowaniu openSSL możemy wykonywać różne operacje kryptograficzne (na przykład, tworzenie kluczy i certyfikatów) za pośrednictwem wiersza poleceń.
Kroki działania są następujące:
- Pobieramy instalacyjny pakiet openssl-1.1.1g.
OpenSSL ma różne wersje. W dokumentacji do RUTokenu napisano, że niezbędna jest wersja openSSL 1.1.0 lub nowsza. Użyłem wersji openssl-1.1.1g. Można pobrać openSSL z oficjalnej strony, ale dla prostszej instalacji warto znaleźć plik instalacyjny dla systemu Windows w sieci. Zrobiłem to za Ciebie:
Należy przewinąć w dół strony i pobrać Win64 OpenSSL v1.1.1g EXE 63MB Installer. - Instalujemy openssl-1.1.1g na komputerze.
Instalację należy przeprowadzić według standardowej ścieżki, która jest automatycznie wskazywana w folderze C:Program Files. Program zainstaluje się w folderze OpenSSL-Win64. - Aby skonfigurować openSSL tak, jak potrzebujesz, istnieje plik openssl.cfg. Plik ten znajduje się w ścieżce C:Program FilesOpenSSL-Win64bin, jeśli zainstalowałeś openSSL w sposób wskazany w poprzednim punkcie. Przechodzimy do folderu, w którym znajduje się openssl.cfg i otwieramy ten plik na przykład w Notepad++.
- Pewnie się domyślasz, że konfiguracja centrum certyfikacji będzie polegać na modyfikacji zawartości pliku openssl.cfg, i masz absolutnie rację. Wymaga to skonfigurowania sekcji [ ca ]. W pliku openssl.cfg początek tekstu, w którym wprowadzimy zmiany, można znaleźć jako: [ ca ].
- Teraz podam przykład konfiguracji 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_certTeraz należy utworzyć katalog demoCA i podkatalogi, jak pokazano w powyższym przykładzie. I umieścić w tym katalogu według ścieżki podanej w dir (u mnie /Users/username/bin/openSSLca/demoCA).
Bardzo ważne jest prawidłowe określenie dir – to ścieżka do katalogu, w którym znajdować się będzie nasze centrum certyfikacji. Katalog ten musi znajdować się w /Users (tj. w koncie jakiegoś użytkownika). Jeśli umieścimy ten katalog, na przykład, w C:Program Files, system nie znajdzie pliku z ustawieniami openssl.cfg (przynajmniej tak miałem).
$dir – tutaj wstawiamy ścieżkę określoną w dir.
Kolejna ważna kwestia to stworzenie pustego pliku index.txt, bez tego pliku polecenia "openSSL ca …" nie będą działać.
Należy również mieć plik serial, klucz prywatny root (ca.key) oraz certyfikat root (ca.crt). Proces uzyskiwania tych plików zostanie opisany dalej.
- Podłączamy algorytmy szyfrowania dostarczane przez Rutoken.
Proces ten odbywa się w pliku openssl.cfg.- Przede wszystkim należy pobrać niezbędne algorytmy Rutokena. To pliki rtengine.dll, rtpkcs11ecp.dll.
W tym celu pobieramy SDK Rutoken: .SDK Rutoken to wszystko, co jest dostępne dla programistów, którzy chcą przetestować Rutoken. Znajdują się tam zarówno osobne przykłady pracy z Rutokenem w różnych językach programowania, jak i niektóre biblioteki. Nasze biblioteki rtengine.dll i rtpkcs11ecp.dll znajdują się w SDK Rutoken w odpowiednich lokalizacjach:
sdk/openssl/rtengine/bin/windows-x86_64/lib/rtengine.dll
sdk/pkcs11/lib/windows-x86_64/rtpkcs11ecp.dllBardzo ważny moment. Biblioteki rtengine.dll, rtpkcs11ecp.dll nie działają bez zainstalowanego sterownika dla Rutokena. Rutoken musi być również podłączony do komputera. (więcej o instalacji wszystkiego, co potrzebne dla Rutokena, patrz w poprzedniej części artykułu. )
- Biblioteki rtengine.dll i rtpkcs11ecp.dll można przechowywać w dowolnym miejscu konta użytkownika.
- Określamy ścieżki do tych bibliotek w openssl.cfg. Aby to zrobić, otwieramy plik openssl.cfg, na początku tego pliku musimy umieścić linię:
openssl_conf = openssl_defNa 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=AktivCo.;model=RutokenECP default_algorithms = CIPHERS, DIGEST, PKEY, RANDdynamic_path – należy określić własną ścieżkę do biblioteki rtengine.dll.
MODULE_PATH – należy określić własną ścieżkę do biblioteki rtpkcs11ecp.dll.
- Przede wszystkim należy pobrać niezbędne algorytmy Rutokena. To pliki rtengine.dll, rtpkcs11ecp.dll.
- Dodajemy zmienne środowiskowe.
Koniecznie należy dodać zmienną środowiskową, która wskazuje ścieżkę do pliku konfiguracyjnego openssl.cfg. W moim przypadku utworzono zmienną OPENSSL_CONF z wartością C:Program FilesOpenSSL-Win64binopenssl.cfg.
W zmiennej path należy wskazać ścieżkę do folderu, w którym znajduje się openssl.exe, w moim przypadku to: C:Program FilesOpenSSL-Win64bin.
- Teraz można wrócić do punktu 5 i utworzyć brakujące pliki dla katalogu demoCA.
- Pierwszym ważnym plikiem, bez którego nic nie będzie działać, jest serial. To plik bez rozszerzenia, którego wartość powinna wynosić 01. Można go utworzyć samodzielnie i wpisać do niego 01. Można także pobrać go z SDK RUTOKEN pod ścieżką sdk/openssl/rtengine/samples/tool/demoCA/.
W katalogu demoCA znajduje się plik serial, którego właśnie potrzebujemy. - Tworzymy klucz prywatny korzenia.
W tym celu skorzystamy z polecenia biblioteki openSSL, które należy uruchomić bezpośrednio w wierszu polecenia:openssl genpkey -algorithm gost2012_256 -pkeyopt paramset:A -out ca.key - Tworzymy certyfikat korzenia.
W tym celu skorzystamy z następującego polecenia biblioteki openSSL:openssl req -utf8 -x509 -key ca.key -out ca.crtZauważ, że do utworzenia certyfikatu korzenia potrzebny jest klucz prywatny korzenia, który został utworzony w poprzednim kroku. Dlatego wiersz polecenia powinien być uruchomiony w tej samej katalogu.
Teraz wszystkie brakujące pliki są dostępne do pełnej konfiguracji katalogu demoCA. Umieść utworzone pliki w tych katalogach, które wskazano w punkcie 5.
- Pierwszym ważnym plikiem, bez którego nic nie będzie działać, jest serial. To plik bez rozszerzenia, którego wartość powinna wynosić 01. Można go utworzyć samodzielnie i wpisać do niego 01. Można także pobrać go z SDK RUTOKEN pod ścieżką sdk/openssl/rtengine/samples/tool/demoCA/.
Uznajmy, że po wykonaniu wszystkich 8 punktów nasz urząd certyfikacji jest w pełni skonfigurowany.
W następnej części opowiem, w jaki sposób będziemy pracować z urzędem certyfikacji, aby wykonać to, co zostało opisane w .
Źródło: habr.com
