Как стать автором
Обновить

Комментарии 8

Почему-то когда слышу слово ГОСТ, всегда представляется нечто древнее, сильно устаревшее и скорее всего сделанное через то самое место через которое вам пришлось всё это настраивать.
а с PHP нет подобных ассоциаций?
Нашел для себя некоторые интересные моменты, труд имеет смысл. Но вот скажите, зачем вы пишите «Для того чтобы экспортировать данный сертификат в формате PKSC#12 вместе с закрытым ключом — нам понадобится сторонняя утилита. Которую можно либо купить здесь либо найти на просторах интернета по имени p12fromgostcsp.» ??
Если ключ помечен как экспортируемый, то это действие выполняется через диалог просмотра сертификата -> вкладка «состав» -> Копировать в файл. А если ключ не помечен как экспортируемый, то она ничем не поможет. Бесполезная софтина, на мой взгляд.
Не все так просто как кажется на первый взгляд. На самом деле сертификат, экспортируемый через стандартный диалог просмотра сертификата не распознается openssl. Получается такая ошибка:
MAC verified OK
Bag Attributes
    localKeyID: 01 00 00 00 
    friendlyName: REGISTRY\\mstaff
    Microsoft CSP Name: Crypto-Pro GOST R 34.10-2001 Cryptographic Service Provider
Error outputting keys and certificates
140017040754368:error:06074079:digital envelope routines:EVP_PBE_CipherInit:unknown pbe algorithm:evp_pbe.c:167:TYPE=1.2.840.113549.1.12.1.80
140017040754368:error:23077073:PKCS12 routines:PKCS12_pbe_crypt:pkcs12 algor cipherinit error:p12_decr.c:83:
140017040754368:error:2306A075:PKCS12 routines:PKCS12_item_decrypt_d2i:pkcs12 pbe crypt error:p12_decr.c:130:

Вот как раз эта утилита и позволяет избежать такой ошибки. Цитирую разработчиков данной утилиты:

Контейнер 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>
> вместо алгоритма хэширования ГОСТ Р 34.11-94 в контейнере от КриптоПро используется SHA1

И это сертифицировано в РФ?
Ну с этими вопросами думаю к разработчикам КриптоПро. Хотя я не настолько знаю Windows CrypoAPI чтобы сказать задействован ли сам крипто-провайдер КриптоПро при экспорте сертификата из контейнера либо это делается полностью средствами Windows.
xtron, огромное спасибо, очень помогли. Плюсы вам везде где можно. Подскажите, а подписывать сконверченным pem ключём получится текстовые сообщения?
Стоит задача подписывать xml файлы, ну и снимать подписи для тестов.
Да, подписывать возможно любые файлы. Мы подписываем soap-сообщения (по сути тот же XML).
Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.