Досвід застосування технології Рутокен для реєстрації та авторизації користувачів у системі (частина 2)

Добридень! Продовжимо розбиратися з цією темою (з попередньою частиною можна ознайомитись за посиланням).

Сьогодні перейдемо до практичної частини. Почнемо з налаштування свого центру, що засвідчує, на основі повноцінної криптографічної бібліотеки з відкритим вихідним кодом openSSL. Цей алгоритм був перевірений з використанням windows 7.

Встановивши openSSL, ми можемо виконувати різні криптографічні операції (наприклад, створення ключів та сертифікатів) через командний рядок.

Алгоритм дій наступний:

  1. Завантажуємо настановний дистрибутив openssl-1.1.1g.
    openSSL має різні версії. У документації до Рутокена було сказано, що потрібна версія openSSL версії 1.1.0 або новіша. Я використав версію openssl-1.1.1g. Можна завантажити openSSL з офіційного сайту, але для більш простої установки необхідно знайти файл інсталяції для windows в мережі. Я це зробив за вас: slproweb.com/products/Win32OpenSSL.html
    Необхідно переглянути вниз сторінки та завантажити Win64 OpenSSL v1.1.1g EXE 63MB Installer.
  2. Встановлюємо openssl-1.1.1g на комп'ютер.
    Установку необхідно провести стандартним шляхом, який вказується автоматично в папку C:Program Files. Програма встановиться у папку OpenSSL-Win64.
  3. Для того, щоб налаштувати openSSL, так як вам потрібно, існує файл openssl.cfg. Цей файл розташований на шляху C:Program FilesOpenSSL-Win64bin якщо ви встановили openSSL так, як було сказано в попередньому пункті. Переходимо до папки, де зберігається openssl.cfg і відкриваємо цей файл з використанням, наприклад, Notepad++.
  4. Ви напевно здогадалися, що налаштування центру, що засвідчує, буде проводитися якось зміною вмісту файлу openssl.cfg, і ви абсолютно праві. Для цього потрібно налаштувати команду [ca]. У файлі openssl.cfg початок тексту, куди ми будемо вносити зміни, можна знайти як: [ca].
  5. Тепер я наведу приклад налаштування з його описом:
    [ 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
    

    Зараз необхідно створити каталог demoCA та підкаталоги, як показано у прикладі вище. І розташувати цей каталог по шляху, що вказаний в dir (у мене /Users/username/bin/openSSLca/demoCA).

    Дуже важливо правильно прописати dir – це шлях до директорії, де буде наш посвідчувальний центр. Ця директорія повинна обов'язково перебувати в /Users (тобто в обліковому записі якогось користувача). Якщо розмістити цю директорію, наприклад, у C:Program Files, система не побачить файл з налаштуваннями openssl.cfg (принаймні у мене було так).

    $dir - сюди підставляється шлях, який вказаний у dir.

    Ще важливий момент створити порожній файл index.txt, без цього файлу команди OpenSSL ca ... не працюватимуть.

    Також необхідно мати файл serial, кореневий приватний ключ (ca.key), кореневий сертифікат (ca.crt). Процес отримання цих файлів буде описано далі.

  6. Підключаємо алгоритми шифрування, що надаються Рутокеном.
    Це підключення відбувається у файлі openssl.cfg.

    • Насамперед потрібно завантажити необхідні алгоритми Рутокена. Це файли rtengine.dll, rtpkcs11ecp.dll.
      Для цього завантажуємо Рутокен SDK: www.rutoken.ru/developers/sdk.

      Рутокен SDK це все, що є для розробників, які хочуть випробувати Рутокен. Там є окремі приклади для роботи з Рутокеном різними мовами програмування, так і представлені деякі бібліотеки. Наші бібліотеки rtengine.dll та rtpkcs11ecp.dll знаходяться в Рутокен sdk відповідно за розташуванням:

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

      Дуже важливий момент. Бібліотеки rtengine.dll, rtpkcs11ecp.dll не працюють без інстальованого драйвера для Рутокена. Також Рутокен обов'язково має бути підключений до комп'ютера. (про встановлення всього необхідного для Рутокен дивись у попередній частині статті habr.com/ua/post/506450)

    • Бібліотеки rtengine.dll та rtpkcs11ecp.dll можна тримати в будь-якому місці облікового запису користувача.
    • Прописуємо шляхи до цих бібліотек openssl.cfg. Для цього відкриваємо файл openssl.cfg, на початок цього файлу необхідно помістити рядок:
      openssl_conf = openssl_def

      В кінці файлу необхідно додати:

      [ 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 – потрібно прописати свій шлях до бібліотеки rtengine.dll.
      MODULE_PATH – необхідно прописати свій шлях до бібліотеки rtpkcs11ecp.dll.

  7. Додаємо змінні середовища.

    Обов'язково потрібно додати змінне середовище, яке вказує шлях до конфігураційного файлу openssl.cfg. У моєму випадку була створена змінна OPENSSL_CONF за допомогою C:Program FilesOpenSSL-Win64binopenssl.cfg.

    У змінну path необхідно вказати шлях до папки, в якій знаходиться openssl.exe, в моєму випадку це: C:Program FilesOpenSSL-Win64bin.

  8. Тепер можна повернутися до пункту 5 і створити відсутні файли для каталогу demoCA.
    1. Перший важливий файл без якого нічого не працюватиме – serial. Це файл без розширення, значення якого має бути 01. Можна створити цей файл самостійно і прописати всередину 01. Також можна завантажити його з Рутокен SDK шляхом sdk/openssl/rtengine/samples/tool/demoCA/.
      У каталозі demoCA лежить файл serial, який нам якраз і потрібний.
    2. Створюємо кореневий приватний ключ.
      Для цього скористаємося командою бібліотеки openSSL, яку необхідно запустити прямо в командному рядку:

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

    3. Створюємо кореневий сертифікат.
      Для цього скористаємося наступною командою бібліотеки openSSL:

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

      Зверніть увагу, що для створення кореневого сертифіката потрібен кореневий приватний ключ, який створювався на попередньому етапі. Тому командний рядок має бути запущений в одній і тій же директорії.

    Всі тепер є всі відсутні файли для повної конфігурації каталогу demoCA. Помістіть створені файли в каталоги, зазначені в пункті 5.

Вважатимемо, що після виконання всіх 8 пунктів наш центр, що засвідчує, повністю налаштований.

У наступній частині я розповім, яким чином ми будемо працювати з центром, що засвідчує, щоб виконати те, що було описано в попередньої частини статті.

Джерело: habr.com

Додати коментар або відгук