Автоматическая выгрузка реестра с zapret-info.gov.ru

1. Предположим у вас уже есть сертификат (электронная подпись) на USB носителе, называется эта штука «Рутокен». Если нет, приобретаем у любого аккредитованного удостоверяющего центра, список см. на сайте zapret-info.gov.ru

2. Нужно установить сертификат с электронного ключа Рутокен на локальную машину под управлением Windows. Подробно описано тут: www.kontur-extern.ru/support/faq/34/61

3. Когда сертификат установлен, нужно экспортировать ключ в формате PKCS#12 из криптоконтейнера в Windows с помощью утилиты P12FromGostCSP , в итоге у нас получится файл p12.pfx . Закидываем его на сервер с FreeBSD, Windows нам больше не понадобится

4.0 в FreeBSD в системе уже установлен openssl, но старой версси, с которой ничего не получится. Ставим из портов свежую и будем обращаться к ней по полному пути /usr/local/bin/openssl . Проверим /usr/local/bin/openssl version , должно быть не меньше OpenSSL 1.0.1c 10 May 2012

4.1 В файл /usr/local/openssl/openssl.cnf добавим:

В самом начале, до начала всех секций:
openssl_conf = openssl_def

В конце новые секции:
[openssl_def] engines=engine_section

[engine_section] gost=gost_section
[gost_section] engine_id=gost
default_algorithms=ALL
4.2 Преобразуем файл p12.pfx из формата PKCS#12 в PEM вот такой командой:

$ /usr/local/bin/openssl pkcs12 -in p12.pfx -out p12.pem -nodes -clcerts
5.0 Составляем запрос в соответствии с требованиями. Будье внимательны, xml файл запроса обязательно должен быть в коидровке cp1251
5.1 Подписываем запрос полученным ранее файлом p12.pem вот так:

$ /usr/local/bin/openssl smime -sign -in zapros2.xml -out zapros.bin -binary -signer p12.pem -outform DER -nodetach
6. Руками проверяем правильность запроса и цифровой подписи http://www.zapret-info.gov.ru/tooperators/form/ — если все впорядке, двигаемся дальше. Если нет — проверяем xml файл и правальность подписи.

Также информация имеется тут