Опыт применения технологии Рутокен для регистрации и авторизации пользователей в системе (часть 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 Files\OpenSSL-Win64\bin если вы установили 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/ru/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 Files\OpenSSL-Win64\bin\openssl.cfg.

      В переменную path необходимо указать путь до папки, в которой находится openssl.exe, в моем случае это: C:\Program Files\OpenSSL-Win64\bin.
    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 пунктов наш удостоверяющий центр полностью настроен.

    В следующей части я расскажу, каким образом мы будем работать с удостоверяющим центром, чтобы выполнить то, что было описано в предыдущей части статьи.
    AdBlock похитил этот баннер, но баннеры не зубы — отрастут

    Подробнее
    Реклама

    Комментарии 0

    Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

    Самое читаемое