Сегодня перейдем к практической части. Начнем с настройки своего удостоверяющего центра на основе полноценной криптографической библиотеки с открытым исходным кодом openSSL. Данный алгоритм был проверен с использованием windows 7.
Установив openSSL, мы можем выполнять различные криптографические операции (например, создание ключей и сертификатов) через командную строку.
Алгоритм действий следующий:
Скачиваем установочный дистрибутив 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.
Устанавливаем openssl-1.1.1g на компьютер.
Установку необходимо провести по стандартному пути, который указывается автоматически в папку C:Program Files. Программа установится в папку OpenSSL-Win64.
Для того, чтобы настроить openSSL так как вам нужно, существует файл openssl.cfg. Этот файл расположен в пути C:Program FilesOpenSSL-Win64bin если вы установили openSSL так, как было сказано в предыдущем пункте. Переходим в папку, где хранится openssl.cfg и открываем этот файл с использованием, например, Notepad++.
Вы наверно догадались, что настройка удостоверяющего центра будет производиться как-то изменением содержимого файла openssl.cfg, и вы абсолютно правы. Для этого требуется настроить команду [ ca ]. В файле openssl.cfg начало текста, куда мы будем вносить изменения, можно найти как: [ ca ].
Теперь я приведу пример настройки с его описанием:
Сейчас необходимо создать каталог 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). Процесс получения этих файлов будет описан далее.
Подключаем алгоритмы шифрования предоставляемые Рутокеном.
Это подключение происходит в файле openssl.cfg.
Прежде всего требуется скачать необходимые алгоритмы Рутокена. Это файлы rtengine.dll, rtpkcs11ecp.dll.
Для этого скачиваем Рутокен SDK: www.rutoken.ru/developers/sdk.
Рутокен SDK – это все, что есть для разработчиков, которые хотят опробовать Рутокен. Там есть как отдельные примеры для работы с Рутокеном на разных языках программирования, так и представлены некоторые библиотеки. Наши библиотеки rtengine.dll и rtpkcs11ecp.dll находятся в Рутокен sdk соответственно по расположению:
Очень важный момент. Библиотеки rtengine.dll, rtpkcs11ecp.dll не работают без установленного драйвера для Рутокена. Также Рутокен обязательно должен быть подключен к компьютеру. (про установку всего необходимого для Рутокен смотри в предыдущей части статьи habr.com/ru/post/506450)
Библиотеки rtengine.dll и rtpkcs11ecp.dll можно держать в любом месте учетной записи пользователя.
Прописываем пути к этим библиотекам в openssl.cfg. Для этого открываем файл openssl.cfg, в начало этого файла необходимо поместить строчку:
dynamic_path – необходимо прописать свой путь к библиотеке rtengine.dll.
MODULE_PATH — необходимо прописать свой путь к библиотеке rtpkcs11ecp.dll.
Добавляем переменные среды.
Обязательно нужно добавить переменную среды, которая указывает путь к файлу конфигурации openssl.cfg. В моем случае была создана переменная OPENSSL_CONF с путем C:Program FilesOpenSSL-Win64binopenssl.cfg.
В переменную path необходимо указать путь до папки, в которой находится openssl.exe, в моем случае это: C:Program FilesOpenSSL-Win64bin.
Теперь можно вернуться к пункту 5 и создать недостающие файлы для каталога demoCA.
Первый важный файл без которого ничего не будет работать — serial. Это файл без расширения, значение которого должно быть 01. Можно создать этот файл самостоятельно и прописать внутрь 01. Также можно скачать его из Рутокен SDK по пути sdk/openssl/rtengine/samples/tool/demoCA/.
В каталоге demoCA лежит файл serial, который нам как раз и нужен.
Создаем корневой приватный ключ.
Для этого воспользуемся командой библиотеки openSSL, которую необходимо запустить прямо в командной строке:
Создаем корневой сертификат.
Для этого воспользуемся следующей командой библиотеки openSSL:
openssl req -utf8 -x509 -key ca.key -out ca.crt
Обратите внимание, что для создания корневого сертификата требуется корневой приватный ключ, который создавался на предыдущем шаге. Поэтому командная строка должна быть запущена в одной и той же директории.
Все теперь имеются все недостающие файлы для полной конфигурации каталога demoCA. Поместите созданные файлы в те каталоги, которые указаны в пункте 5.
Будем считать, что после выполнения всех 8 пунктов наш удостоверяющий центр полностью настроен.
В следующей части я расскажу, каким образом мы будем работать с удостоверяющим центром, чтобы выполнить то, что было описано в предыдущей части статьи.