Добрый день! Продолжим разбираться с данной темой (с предыдущей частью можно ознакомиться по ссылке).
Сегодня перейдем к практической части. Начнем с настройки своего удостоверяющего центра на основе полноценной криптографической библиотеки с открытым исходным кодом openSSL. Данный алгоритм был проверен с использованием windows 7.
Установив openSSL, мы можем выполнять различные криптографические операции (например, создание ключей и сертификатов) через командную строку.
Алгоритм действий следующий:
Будем считать, что после выполнения всех 8 пунктов наш удостоверяющий центр полностью настроен.
В следующей части я расскажу, каким образом мы будем работать с удостоверяющим центром, чтобы выполнить то, что было описано в предыдущей части статьи.
Сегодня перейдем к практической части. Начнем с настройки своего удостоверяющего центра на основе полноценной криптографической библиотеки с открытым исходным кодом 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 Files\OpenSSL-Win64\bin если вы установили openSSL так, как было сказано в предыдущем пункте. Переходим в папку, где хранится openssl.cfg и открываем этот файл с использованием, например, Notepad++.
- Вы наверно догадались, что настройка удостоверяющего центра будет производиться как-то изменением содержимого файла openssl.cfg, и вы абсолютно правы. Для этого требуется настроить команду [ ca ]. В файле openssl.cfg начало текста, куда мы будем вносить изменения, можно найти как: [ ca ].
- Теперь я приведу пример настройки с его описанием:
[ 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). Процесс получения этих файлов будет описан далее.
- Подключаем алгоритмы шифрования предоставляемые Рутокеном.
Это подключение происходит в файле 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.
- Прежде всего требуется скачать необходимые алгоритмы Рутокена. Это файлы rtengine.dll, rtpkcs11ecp.dll.
- Добавляем переменные среды.
Обязательно нужно добавить переменную среды, которая указывает путь к файлу конфигурации openssl.cfg. В моем случае была создана переменная OPENSSL_CONF с путем C:\Program Files\OpenSSL-Win64\bin\openssl.cfg.
В переменную path необходимо указать путь до папки, в которой находится openssl.exe, в моем случае это: C:\Program Files\OpenSSL-Win64\bin.
- Теперь можно вернуться к пункту 5 и создать недостающие файлы для каталога demoCA.
- Первый важный файл без которого ничего не будет работать — serial. Это файл без расширения, значение которого должно быть 01. Можно создать этот файл самостоятельно и прописать внутрь 01. Также можно скачать его из Рутокен SDK по пути sdk/openssl/rtengine/samples/tool/demoCA/.
В каталоге demoCA лежит файл serial, который нам как раз и нужен.
- Создаем корневой приватный ключ.
Для этого воспользуемся командой библиотеки openSSL, которую необходимо запустить прямо в командной строке:
openssl genpkey -algorithm gost2012_256 -pkeyopt paramset:A -out ca.key
- Создаем корневой сертификат.
Для этого воспользуемся следующей командой библиотеки openSSL:
openssl req -utf8 -x509 -key ca.key -out ca.crt
Обратите внимание, что для создания корневого сертификата требуется корневой приватный ключ, который создавался на предыдущем шаге. Поэтому командная строка должна быть запущена в одной и той же директории.
Все теперь имеются все недостающие файлы для полной конфигурации каталога demoCA. Поместите созданные файлы в те каталоги, которые указаны в пункте 5.
- Первый важный файл без которого ничего не будет работать — serial. Это файл без расширения, значение которого должно быть 01. Можно создать этот файл самостоятельно и прописать внутрь 01. Также можно скачать его из Рутокен SDK по пути sdk/openssl/rtengine/samples/tool/demoCA/.
Будем считать, что после выполнения всех 8 пунктов наш удостоверяющий центр полностью настроен.
В следующей части я расскажу, каким образом мы будем работать с удостоверяющим центром, чтобы выполнить то, что было описано в предыдущей части статьи.