alibek Опубликовано 4 июня, 2018 · Жалоба Есть усиленная квалифицированная ЭЦП, которая используется в электронном документообороте, используются ГОСТ-овские алгоритмы. Нужно сделать документ с открепленной (отсоединенной) подписью. Сама система ЭД такое делать не умеет. Крипто-Про использовать буду только от безысходности. Не посоветуете софт, которым это можно сделать? У меня есть старая сборка OpenSSL с поддержкой ГОСТ-28147-89, но она с ЭЦП работать не умеет, в ЭЦП есть неподдерживаемые атрибуты. Стоит ли возиться со сборкой свежего OpenSSL? Или есть что-нибудь более простое и удобное? Можно под Windows, можно под Linux. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Andrei Опубликовано 4 июня, 2018 · Жалоба Извлечь ЭЦП с помощью P12FromGostCSP и потом использовать ее как хочется. Или я не понял задачу? Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
vop Опубликовано 4 июня, 2018 · Жалоба Для цифровой подписи нужен только ключ? Зачем там атрибуты сертификата? Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
TheUser Опубликовано 4 июня, 2018 · Жалоба 7 часов назад, alibek сказал: Нужно сделать документ с открепленной (отсоединенной) подписью. ... У меня есть старая сборка OpenSSL с поддержкой ГОСТ-28147-89, но она с ЭЦП работать не умеет, в ЭЦП есть неподдерживаемые атрибуты. На сколько я помню, запрос на выемку запрещенных сайтов также подписывается открепленной подписью, и там вроде бы тоже ГОСТ (какой конкретно - хз). Так что есть смысл взять работающую сборку openssl и сделать на ней. Сборку уже гуглить. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Ivan_83 Опубликовано 4 июня, 2018 · Жалоба 8 часов назад, alibek сказал: Стоит ли возиться со сборкой свежего OpenSSL? Я бы посмотрел что libressl поддерживает, кажется там больше всего. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
alibek Опубликовано 4 июня, 2018 · Жалоба 3 часа назад, Andrei сказал: Извлечь ЭЦП с помощью P12FromGostCSP Извлекать не надо, ЭЦП уже есть в файле. 2 часа назад, vop сказал: Для цифровой подписи нужен только ключ? И поддержка алгоритмов шифрования. 2 часа назад, TheUser сказал: Так что есть смысл взять работающую сборку openssl и сделать на ней. Работающая (с реестром) сборка уже есть, но видимо этого недостаточно. При попытке использовать извлеченный ЭЦП, например преобразовать в PEM, получаю такую ошибку: MAC verified OK Error outputting keys and certificates 140093694572200:error:06074079:digital envelope routines:EVP_PBE_CipherInit:unknown pbe algorithm:evp_pbe.c:162:TYPE=1.2.840.113549.1.12.1.80 140093694572200:error:23077073:PKCS12 routines:PKCS12_pbe_crypt:pkcs12 algor cipherinit error:p12_decr.c:87: 140093694572200:error:2306A075:PKCS12 routines:PKCS12_item_decrypt_d2i:pkcs12 pbe crypt error:p12_decr.c:139: 1 час назад, Ivan_83 сказал: Я бы посмотрел что libressl поддерживает Спасибо, посмотрю. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Andrei Опубликовано 4 июня, 2018 · Жалоба Находил в свое время где-то на просторах инета нижеприведенную инструкцию. По ней и делал. http://www.openssl.org tar xzf openssl-1.0.1с.tar.gz cd openssl-1.0.1с ./config shared zlib enable-rfc3779 --prefix=/gost-ssl make depend make make test make install Правим конфиг /gost-ssl/ssl/openssl.cnf В самом верху, первой строкой пишем: openssl_conf = openssl_def Далее добавляем в конец: [openssl_def] engines = engine_section [engine_section] gost = gost_section [gost_section] default_algorithms = ALL engine_id = gost dynamic_path = /gost-ssl/lib/engines/libgost.so CRYPT_PARAMS = id-Gost28147-89-CryptoPro-A-ParamSet Далее проверяем работоспособность и наличие GOST (полный путь до openssl обязателен) /gost-ssl/bin/openssl ciphers | tr ":" "\n" | grep GOST GOST2001-GOST89-GOST89 GOST94-GOST89-GOST89 /gost-ssl/bin/openssl ciphers | grep -Fq GOST && echo "OK" OK подписываем xml файл: /gost-ssl/bin/openssl smime -sign -in request.xml -out request.bin -signer kontur.pem -outform DER Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
TheUser Опубликовано 5 июня, 2018 · Жалоба 12 часов назад, alibek сказал: Извлекать не надо, ЭЦП уже есть в файле. Что это за файл, откуда взяли? Сделайте команду openssl asn1parse -in FILENAME -inform DER для него, уберите все длинные HEX-строки, оставьте только первые 4 столбца. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
alibek Опубликовано 5 июня, 2018 · Жалоба 9 минут назад, TheUser сказал: Что это за файл, откуда взяли? Экспортировал из токена. 11 минут назад, TheUser сказал: Сделайте команду 0:d=0 hl=4 l=3650 cons: SEQUENCE 4:d=1 hl=2 l= 1 prim: INTEGER :03 7:d=1 hl=4 l=3582 cons: SEQUENCE 11:d=2 hl=2 l= 9 prim: OBJECT :pkcs7-data 22:d=2 hl=4 l=3567 cons: cont [ 0 ] 26:d=3 hl=4 l=3563 prim: OCTET STRING [HEX DUMP]:<hex> 3593:d=1 hl=2 l= 59 cons: SEQUENCE 3595:d=2 hl=2 l= 31 cons: SEQUENCE 3597:d=3 hl=2 l= 7 cons: SEQUENCE 3599:d=4 hl=2 l= 5 prim: OBJECT :sha1 3606:d=3 hl=2 l= 20 prim: OCTET STRING [HEX DUMP]:<hex> 3628:d=2 hl=2 l= 20 prim: OCTET STRING [HEX DUMP]:<hex> 3650:d=2 hl=2 l= 2 prim: INTEGER :07D0 Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
TheUser Опубликовано 5 июня, 2018 · Жалоба У меня pfx выглядит так: # /opt/itcs/bin/openssl asn1parse -in my.pfx -inform DER 0:d=0 hl=4 l=1213 cons: SEQUENCE 4:d=1 hl=2 l= 1 prim: INTEGER :03 7:d=1 hl=4 l=1108 cons: SEQUENCE 11:d=2 hl=2 l= 9 prim: OBJECT :pkcs7-data 22:d=2 hl=4 l=1093 cons: cont [ 0 ] 26:d=3 hl=4 l=1089 prim: OCTET STRING [HEX DUMP]: 1119:d=1 hl=2 l= 96 cons: SEQUENCE 1121:d=2 hl=2 l= 80 cons: SEQUENCE 1123:d=3 hl=2 l= 12 cons: SEQUENCE 1125:d=4 hl=2 l= 8 prim: OBJECT :GOST R 34.11-2012 with 512 bit hash 1135:d=4 hl=2 l= 0 prim: NULL 1137:d=3 hl=2 l= 64 prim: OCTET STRING [HEX DUMP]: 1203:d=2 hl=2 l= 8 prim: OCTET STRING [HEX DUMP]: 1213:d=2 hl=2 l= 2 prim: INTEGER :0800 Выделил хеш-функцию. У меня она отечественная, у Вас - sha1. Дальше, сделайте dd if=ваш_файл of=obj26 bs=1 skip=30 count=3563 (здесь 30 - это 26 + 4 из строки 26:d=3...) и потом openssl asn1parse -in obj26 -inform DER Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
alibek Опубликовано 5 июня, 2018 · Жалоба Вырезанный фрагмент выглядит так: 0:d=0 hl=4 l=3559 cons: SEQUENCE 4:d=1 hl=4 l= 416 cons: SEQUENCE 8:d=2 hl=2 l= 9 prim: OBJECT :pkcs7-data 19:d=2 hl=4 l= 401 cons: cont [ 0 ] 23:d=3 hl=4 l= 397 prim: OCTET STRING [HEX DUMP]:<hex> 424:d=1 hl=4 l=3135 cons: SEQUENCE 428:d=2 hl=2 l= 9 prim: OBJECT :pkcs7-encryptedData 439:d=2 hl=4 l=3120 cons: cont [ 0 ] 443:d=3 hl=4 l=3116 cons: SEQUENCE 447:d=4 hl=2 l= 1 prim: INTEGER :00 450:d=4 hl=4 l=3109 cons: SEQUENCE 454:d=5 hl=2 l= 9 prim: OBJECT :pkcs7-data 465:d=5 hl=2 l= 28 cons: SEQUENCE 467:d=6 hl=2 l= 10 prim: OBJECT :pbeWithSHA1And40BitRC2-CBC 479:d=6 hl=2 l= 14 cons: SEQUENCE 481:d=7 hl=2 l= 8 prim: OCTET STRING [HEX DUMP]:<hex> 491:d=7 hl=2 l= 2 prim: INTEGER :07D0 495:d=5 hl=4 l=3064 prim: cont [ 0 ] Наверное действительно экспортировать нужно было через P12FromGostCSP. Попробую сделать экспорт еще раз и проверить на готовой сборке OpenSSL. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
YuryD Опубликовано 5 июня, 2018 · Жалоба P12FromGostCSP теперь платный и на год всего. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
TheUser Опубликовано 5 июня, 2018 · Жалоба 10 минут назад, YuryD сказал: P12FromGostCSP теперь платный и на год всего. Кое-кто сохранил старую версию тулзы и невозбранно пользуется ею. Приложенный файл сконвертировать из base64 в бинарь. Цифровая подпись производителя имеется. P12FromGostCSP.txt Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
alibek Опубликовано 5 июня, 2018 · Жалоба Да, у меня есть старый архив. Наверное разработчики утилиты локти себе кусают, что ранее выкладывали ее свободно. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
YuryD Опубликовано 5 июня, 2018 · Жалоба Если бы было всё так радостно :( Не работают старые версии утилит, по крайней мере те, что раньше работали у меня, и торренты тоже всё протухшее. Пришлось покупать, и быстро... Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
alibek Опубликовано 5 июня, 2018 · Жалоба Буквально дней десять назад обновлял ЭЦП для реестра. Утилита отлично работает, выгрузила ключ из реестра (продлевал прямо в ЛК) в файл. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
YuryD Опубликовано 5 июня, 2018 · Жалоба Повезло вам, а мне нет. Вот кусок лога купленной версии Initialization: file path_lic = 'C:\Users\ххх\.P12FromGostCSP\LIC.DAT' Initialization: date OK Initialization: check license SN OK Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
TheUser Опубликовано 5 июня, 2018 · Жалоба Вы тогда уж напишите что у Вас за ключи (тип ключа, удостоверяющий центр), чтобы можно было знать какие ключи не заказывать. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
YuryD Опубликовано 5 июня, 2018 · Жалоба 4 минуты назад, TheUser сказал: Вы тогда уж напишите что у Вас за ключи (тип ключа, удостоверяющий центр), чтобы можно было знать какие ключи не заказывать. Мой опыт вам не поможет, у нас в конторе своё подразделение по эцп, вот что они умеют, то и делают. Такском. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
baide Опубликовано 2 августа, 2018 · Жалоба Старая версия P12FromGostCSP не работает с сертификатами по 2012 госту. Купил платную версию, в p12 выгрузил, а вот /etc/gost-ssl/bin/openssl pkcs12 -in ./p12_2017.pfx -out provider.pem -nodes -clcerts Валит ошибки. Использовал gost engine, но все равно не помогает. На выходе битый файл без приватного ключа root@ubuntu-gost-2012:~/zapret# openssl version OpenSSL 1.1.0g 2 Nov 2017 root@ubuntu-gost-2012:~/zapret# openssl ciphers | tr ":" "\n" | grep GOST GOST2012-GOST8912-GOST8912 GOST2001-GOST89-GOST89 root@ubuntu-gost-2012:~/zapret# Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
TheUser Опубликовано 2 августа, 2018 · Жалоба 23 минуты назад, baide сказал: Валит ошибки. Использовал gost engine, но все равно не помогает. На выходе битый файл без приватного ключа А что выводит команда: openssl asn1parse -in p12_2017.pfx -inform DER Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
baide Опубликовано 2 августа, 2018 · Жалоба 3 minutes ago, TheUser said: А что выводит команда root@ubuntu-gost-2012:~/zapret# openssl asn1parse -in p12_2018.pfx -inform DER 0:d=0 hl=4 l=2999 cons: SEQUENCE 4:d=1 hl=2 l= 1 prim: INTEGER :03 7:d=1 hl=4 l=2921 cons: SEQUENCE 11:d=2 hl=2 l= 9 prim: OBJECT :pkcs7-data 22:d=2 hl=4 l=2906 cons: cont [ 0 ] 26:d=3 hl=4 l=2902 prim: OCTET STRING [HEX DUMP]:30820B5230820A2006092A864886F70D010706A0820A1130820A0D02010030820A0606092A864886F70D010701305C06092A864886F70D01050D304F302E06092A864886F70D01050C30210408BF467AC6C712862502020800301106062A850302020A06072A850302021E01301D06062A850302021530130408F77CB986446D602406072A850302021F0180820999C084647488BD4A5DA56D48345C ... ... ... 27750A728A2B34377B1215EF8BB17522485E8F56ABD3971D115C4A976E22AC7C85B61314E302306092A864886F70D01091531160414E6459A248E4E43698D0D644C1548466B0EEE54D1302706092A864886F70D010914311A1E18006300730070005F006500780070006F0072007400650064 2932:d=1 hl=2 l= 69 cons: SEQUENCE 2934:d=2 hl=2 l= 53 cons: SEQUENCE 2936:d=3 hl=2 l= 17 cons: SEQUENCE 2938:d=4 hl=2 l= 6 prim: OBJECT :GOST R 34.11-94 2946:d=4 hl=2 l= 7 prim: OBJECT :id-GostR3411-94-CryptoProParamSet 2955:d=3 hl=2 l= 32 prim: OCTET STRING [HEX DUMP]:A1F918E889BCC3E018ACC476B53BBCF4BBDF7E12BAB43607596E104608FB8AB7 2989:d=2 hl=2 l= 8 prim: OCTET STRING [HEX DUMP]:B23406E7533978A4 2999:d=2 hl=2 l= 2 prim: INTEGER :0800 Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
TheUser Опубликовано 2 августа, 2018 · Жалоба 21 минуту назад, baide сказал: root@ubuntu-gost-2012:~/zapret# openssl asn1parse -in p12_2018.pfx -inform DER ... 2938:d=4 hl=2 l= 6 prim: OBJECT :GOST R 34.11-94 2946:d=4 hl=2 l= 7 prim: OBJECT :id-GostR3411-94-CryptoProParamSet ... Судя по этим строкам, у Вас устаревший ГОСТ. Либо openssl его считает устаревшим. Как бы то ни было, выше в топике есть пример как с помощью команды dd вытащить из pfx нужный объект. Попробуйте. Тьфу... У вас же openssl не поддерживает GOST94! Слишком новый openssl... Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
YuryD Опубликовано 2 августа, 2018 · Жалоба Похоже что да, вот мой, нормально жующий.. OpenSSL 1.0.1e 11 Feb 2013 /usr/local/bin/openssl ciphers | tr ":" "\n" | grep GOST GOST2001-GOST89-GOST89 GOST94-GOST89-GOST89 Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
baide Опубликовано 2 августа, 2018 · Жалоба 1 hour ago, YuryD said: GOST2001-GOST89-GOST89 GOST94-GOST89-GOST89 Так у вас 2012гост отсутствует. С 2001 у меня тоже все работало Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...