Как я генерировал PKCS#12
Для того, чтобы иметь возможность получать выгрузки от всеми "Любимого" РосКомНадзора, нужно иметь ЭЦП. Пусть она и стоит копейки, но организация должа потратить свои(!) деньги на это "благое" дело. Ну ладно... раз так - приобретаем! Авось еще где-нибудь пригодится, мало ли чего надо будет подписать.
Для приобретения и регистрации ЭЦП я обратился к компании ИжТендер, так как они находятся в непосредственной близости к нашей организации.
Подали заявку, оплатили, подписали документы присланные нам по электронке, взяли доверенность и поехали получать. При себе имели флешку, на которую были бережно скпированы несколько файлов:
header.key
masks.key
masks2.key
name.key
primary.key
primary2.key
Отлично! Теперь надо эти файлы конвертировать в формат PKCS#12, для того чтоб мы могли работать с ними при помощи OpenSSL на любой *nix системе... ну или Windows... кому как удобнее.
Устанавливаем КриптоПро CSP 3.9 R2 для Windows. На момент написания статьи была доступна эта версия. Никаких лицензий на пользование программой не требуется. Ну или временная там действует, это не важно. Суть в том, что теперь можно установить сертификат и как-то с ним работать далее.
Итак, скачиваем прогу, устанавливаем её, перезагружаем комп и запускаем КриптоПро CSP.
Открываем вкладку "Сервис" и нажимаем кнопку "Просмотреть сертификаты в контейнере". В открывшемся окне нажимаем кнопку "Обзор". Выбираем ключевой контейнер, нажимаем кнопку "Ок", затем "Далее". Нажимаем кнопку "Установить".
Жмем кнопку "Свойства", выбираем вкладку "Путь сертификации". Если верхний уровень с красным крестиком (если нет, то КриптоПро CSP можно закрыть), нужно кликнуть по нему и нажать "Просмотр сертификата". Далее нажимаем "Установить сертификат". Откроется мастер установки сертификатов. Выбираем "Далее" и указываем хранилище "Доверенные корневые центры сертификации". Жмем "Далее". После этого появится сообщение о готовности к установке сертификата, нужно нажать "Да".
Теперь нам нужно выгрузить сертификат при помощи программы P12FromGostCSP.zip . Скачиваем её и распаковываем из архива, запускаем. Выбираем нужную ЭЦП, вводим пароли, сохраняем на диск.
Всё! Наш ключик готов к работе.
Теперь берем любой сервер на базе FreeBSD (я предпочитаю данную ОС, но ничего не мешает Вам сделать по образу и подобию на любой *NIX машине). Так как системный OpenSSL в FreeBSD не поддерживает шифрование ГОСТ, ставим свежую версию из портов. Это не затрагивает работоспособность всей системы, и портовый OpenSSL прекрасно существует параллельно системному:
# openssl version
OpenSSL 1.0.1p-freebsd 9 Jul 2015
# /usr/local/bin/openssl version
OpenSSL 1.0.2f 28 Jan 2016
Находим файл /usr/local/openssl/openssl.cnf и пишем в конец файла:
[openssl_def]
engines = engine_section
[engine_section]
gost = gost_section
[gost_section]
default_algorithms = ALL
engine_id = gost
#dynamic_path = /usr/local/lib/engines/libgost.so
CRYPT_PARAMS = id-Gost28147-89-CryptoPro-A-ParamSet
В начало этого файла пишем :
openssl_conf = openssl_def
Копируем на сервер наш сертификат в формате PKSC#12 и конвертируем его в формат PEM:
/usr/local/bin/openssl pkcs12 -in p12.pfx -out cert.pem -nodes -clcerts
Проверить период действия ЭЦП можно следующей командой:
# /usr/local/bin/openssl x509 -in 2016.pem -noout -dates
notBefore=Nov 14 08:22:00 2016 GMT
notAfter=Nov 14 08:27:00 2017 GMT
Теперь файл .pem можно использовать для подписания запроса к РКН. Всем удачи!