в начало  предыдущее  закрыть  следущее  в конец
Закрыть окно

Резервное копирование сертификатов
ключей проверки ЭП из криптопровайдера Microsoft CSP с российской криптографией (утилита P12FromGostCSP)

Специалистами ООО «ЛИССИ-Софт» разработан набор средств, предназначенный для создания резервной копии личного сертификата пользователя вместе с ключом ЭП, хранящихся в контейнере криптопровайдера (MS CSP) с поддержкой российской криптографии (ГОСТ 28147-89, ГОСТ Р 34.11-94, ГОСТ Р 34.10-2001, ГОСТ Р 34.11-2012, ГОСТ Р 34.10-2012). Резервная копия создаётся в защищенном контейнере PKCS#12.

Наиболее распространенными криптопровайдерами MS CSP с поддержкой российской криптографии, являются ПМ ЛИССИ-CSP и КриптоПро CSP. При этом если у вас установлен криптопровайдер ПМ ЛИССИ-CSP, то у вас не возникнет проблем с созданием резервной копии личного сертификата в контейнере PKCS#12.

Точно также не возникнет проблем  с импортом личных сертификатов из контейнера PKCS#12 в хранилища ПМ ЛИССИ-CSP.

Удобным средством редством резервного копирования личных сертификатов из хранилищ, поддерживаемых КриптоПро CSP, является утилита P12FromGostCSP.  

Сколько стоит этот продукт?

Утилита P12FromGostCSP разработана в связи с многочисленными обращениями пользователей, которые хотели бы использовать уже имеющиеся сертификаты и ключи ЭП в приложениях, функционирующих не только на платформе MS Windows, но и на других платформах (Linux, Unix, OS X, Android и т.д.), и использующих в качестве криптопровайдера (СКЗИ) не только MS CSP, но и openssl, NSS, JCA (Java Cryptography Architecture), программные и аппаратные токены PKCS#11 с поддержкой российской криптографии, или желающих осуществить переход с КриптоПро CSP на криптопровайдер другого производителя (например, ПМ ЛИССИ-CSP) с сохранением ранее полученных сертификатов.

Утилита P12FromGostCSP позволяет использовать ключи ЭП, созданные КриптоПро-CSP, в OpenSSL-программах (рекомендуется версия 1.1.1 с ГОСТ-модулем), в Java-программах, использующих BouncyCastle (рекомендуется версия 1.63 и новее), а также в ViPNet CSP версии 4.2 и новее.

  Также, в связи с многочисленными обращениями пользователей, которые хотели бы использовать уже имеющиеся сертификаты и ключи ЭП, хранящиеся в контейнерах PKCS#12, была разработана утилита командной строки LSPKCS12_Sign. Данная утилита предназначена для  формирования электронной подписи (ЭП) документов, хранящихся в файлах, личным сертификатом ключа электронной подписи, хранящемся в контейнере PKCS#12. Контейнер PKCS#12 можно получить как утилитой P12FromGostCSP, так и воспользовавшись КриптоПлагином, Mozilla Firefox и т.д.

В настоящее время утилита P12FromGostCSP обеспечивает резервное копирование личных сертификатов из ключевых контейнеров КриптоПро CSP в контейнер PKCS#12. Экспорт возможен только для контейнеров с разрешённой операцией экспорта (флаг CRYPT_EXPORT). Для получения резервной копии достаточно запустить утилиту, выбрать личный сертификат, ввести пароль и на выходе получить файл с резервной копией в формате защищенного контейнера PKCS#12 (Personal Information Exchange Syntax Standard), созданном на базе российской криптографии.


Отметим, что в составе ПМ ЛИССИ-CSP есть своя утилита, позволяющая выполнить аналогичную операцию с контейнерами ПМ ЛИССИ-CSP.

PKCS#12 — формат для переноса сертификата и связанного с ним закрытого ключа с машины на машину или для резервного копирования. В этом формате могут также содержаться сертификаты удостоверяющего центра. Файлы формата PKCS#12 всегда кодируются в формате DER. Эти файлы требуют особенно пристального внимания, поскольку содержат ключ ЭП; при неосторожном обращении с таким файлом ключ ЭП легко скомпрометировать. Как правило, эти файлы защищены на пароле. Расширение файлов формата PKCS#12 либо «.p12», либо «.pfx».

Контейнер PKCS#12, создаваемый утилитой P12FromGostCSP полностью совместим с аналогичными контейнерами, создаваемыми ООО «КриптоКом» (в рамках проекта openssl) и ООО «Топ Кросс», чего, к сожалению, не скажешь о контейнере, создаваемом программными средствами, входящими в состав КриптоПро CSP (начиная с версии R3).

Просмотреть ASN1-структуры контейнера PKCS#12, созданного средствами КриптоПро CSP R3, и контейнеров, созданных другими средствами, удобно утилитами openssl или lirssl следующего вида:

#openssl asn1parse –inform DER –in <контейнер PKCS#12>

Если вы сравните эти структуры, то вам сразу бросится в глаза, что, например, вместо алгоритма хэширования ГОСТ Р 34.11-94 в контейнере от КриптоПро используется SHA1. Еще более интересный результат вы получите, если попробуете посмотреть содержимое контейнера, выполнив следующую команду:

#openssl pkcs12 –in <контейнер PKCS#12>

Содержимое контейнера PKCS#12, полученного путём использования утилиты P12FromGostCSP, можно импортировать и использовать в любых приложениях. Их можно импортировать в ПМ ЛИССИ-CSP, в Firefox, Thunderdird или SeaMonkey, использовать в приложениях, написанных на nss и openssl 1.x.x с подключенным engine ccgost от ООО «КриптоКом» или одним из engine семейства «lc_» от ООО «ЛИССИ-Софт» и т.д.

Для использования сохраненного в контейнере PKCS#12 личного сертификата и закрытого ключа при переходе, например, на использование ПМ ЛИССИ-CSP достаточно, после установки ПМ ЛИССИ-CSP, щелкнуть два раза по контейнеру и выполнить процедуру импорта. В результате ваш личный сертификат и ключ ЭП будут установлены в систему.

Получив с помощью утилиты P12FromGostCSP контейнер PKCS#12 можно также сохранить личный сертификат и ключ ЭП на программном или аппаратном токене с неизвлекаемым ключом, например на Рутокен ЭЦП или СКЗИ «MS_KEY K». Для этого вы можете воспользоваться Центром выдачи и управления сертификатами «Fox-XCA» (ЦС «Fox-XCA») .

Запустив ЦС «Fox-XCA» вам необходимо импортировать полученный контейнер PKCS#12 в базу данных «Fox-XCA».

И затем экспортировать сертификат и соответствующий ключ ЭП на соответствующий токен. При этом можно выставить необходимые вам метки на токене для сертификата и закрытого ключа. В дальнейшем необходимо помнить, что ключ  ЭП невозможно получить с аппаратного токена. Но если у вас хранится в надежном месте резервная копия в контейнере PKCS#12, то при уничтожении вашего аппаратного токена (именно уничтожении, а не при утрате) вы сможете восстановить ваш личный сертификат и ключ ЭП.

  Сохранив личный сертификат в контейнере PKCS#12 , вы можете теперь использовать его напрямую посредством утилиты командной строки LSPKCS12_Sign для формирования ЭП ваших документов.  Утилита имеет простой синтаксис:

./lspkcs12_sign <подписываемый файл> <файл PKCS12> <файл для подписи> <1|0 - присоединенная|отсоединенная подпись>

Первым параметром указывается файл, который необходимо подписать, второй параметр указывает на контейнер PKCS#12, в котором хранится личный сертификат, третий параметр задает файл, в котором будет сохранена ЭП и последний параметр указывает тип подписи – присоединенная или отсоединенная:

$ ./lspkcs12_sign DATA.txt LirPKCS12_CHAIN.p12 DATA.p7 1

Copyright(C) LISSI-Soft (http://soft.lissi.ru) 2013

Введите пароль для PKCS12 файла=LirPKCS12_CHAIN.p12

********

Подпись сохранена в файле DATA.p7

bash-4.2$

Утилита LSPKCS12_Sign написана на базе СКЗИ «ЛИРССЛ-CSP».

Получить демо-версию утилиты LSPKCS12_Sign для платформ MS Windows и Linux можно здесь.

Сохранив личный сертификат в контейнере PKCS#12 , вы можете теперь использовать его напрямую посредством графической утилиты cryptoarmpkcs  для формирования ЭП ваших документов, например, для Госуслуг:



Утилита позволяет выполнять различные действия с защищенным контейнером PKCS#12, в частности, промотреть содержимое сертификата:



И, конечно, создать электронную подпись различного формата:



Утилита доступна для платформ Linux, MS Windows, OS X:


и на платформе Android:


© 2002-2018. ООО "ЛИССИ-Софт". Все права защищены
Телефон: +7(495) 589-99-53
Техническая поддержка: +7(499) 110-90-40
E-mail: [email protected]