Jump to content

Recommended Posts

Posted

Есть усиленная квалифицированная ЭЦП, которая используется в электронном документообороте, используются ГОСТ-овские алгоритмы.

Нужно сделать документ с открепленной (отсоединенной) подписью.

Сама система ЭД такое делать не умеет.

Крипто-Про использовать буду только от безысходности.

Не посоветуете софт, которым это можно сделать?

У меня есть старая сборка OpenSSL с поддержкой ГОСТ-28147-89, но она с ЭЦП работать не умеет, в ЭЦП есть неподдерживаемые атрибуты.

Стоит ли возиться со сборкой свежего OpenSSL? Или есть что-нибудь более простое и удобное?

Можно под Windows, можно под Linux.

  • Replies 51
  • Created
  • Last Reply

Top Posters In This Topic

Posted
7 часов назад, alibek сказал:

Нужно сделать документ с открепленной (отсоединенной) подписью.

...

У меня есть старая сборка OpenSSL с поддержкой ГОСТ-28147-89, но она с ЭЦП работать не умеет, в ЭЦП есть неподдерживаемые атрибуты.

 

На сколько я помню, запрос на выемку запрещенных сайтов также подписывается открепленной подписью, и там вроде бы тоже ГОСТ (какой конкретно - хз). Так что есть смысл взять работающую сборку openssl и сделать на ней. Сборку уже гуглить.

Posted
8 часов назад, alibek сказал:

Стоит ли возиться со сборкой свежего OpenSSL?

Я бы посмотрел что libressl поддерживает, кажется там больше всего.

Posted
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 поддерживает

Спасибо, посмотрю.

Posted

Находил в свое время где-то на просторах инета нижеприведенную инструкцию. По ней и делал.

 

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
 

Posted
12 часов назад, alibek сказал:

Извлекать не надо, ЭЦП уже есть в файле.

Что это за файл, откуда взяли?

Сделайте команду openssl asn1parse -in FILENAME -inform DER для него, уберите все длинные HEX-строки, оставьте только первые 4 столбца.

Posted
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

 

Posted

У меня 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

Posted

Вырезанный фрагмент выглядит так:

    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.

Posted
10 минут назад, YuryD сказал:

P12FromGostCSP  теперь платный и на год всего.

Кое-кто сохранил старую версию тулзы и невозбранно пользуется ею.

Приложенный файл сконвертировать из base64 в бинарь. Цифровая подпись производителя имеется.

P12FromGostCSP.txt

Posted

 Если бы было всё так радостно :( Не работают старые версии утилит, по крайней мере те, что раньше работали у меня, и торренты тоже всё протухшее. Пришлось покупать, и быстро...

Posted

Буквально дней десять назад обновлял ЭЦП для реестра.

Утилита отлично работает, выгрузила ключ из реестра (продлевал прямо в ЛК) в файл.

Posted

 Повезло вам, а мне нет. Вот кусок лога купленной версии

 

Initialization: file path_lic = 'C:\Users\ххх\.P12FromGostCSP\LIC.DAT'
Initialization: date OK

Initialization: check license SN OK

Posted
4 минуты назад, TheUser сказал:

Вы тогда уж напишите что у Вас за ключи (тип ключа, удостоверяющий центр), чтобы можно было знать какие ключи не заказывать.

 Мой опыт вам не поможет, у нас в конторе своё подразделение по эцп, вот что они умеют, то и делают. Такском.

  • 1 month later...
Posted

Старая версия 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#
 
 
Posted
23 минуты назад, baide сказал:

Валит ошибки. Использовал gost engine, но все равно не помогает. На выходе битый файл без приватного ключа

А что выводит команда:

openssl asn1parse -in p12_2017.pfx -inform DER

Posted
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

 

Posted
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...

Posted

 Похоже что да, вот мой, нормально жующий..

OpenSSL 1.0.1e 11 Feb 2013

 

/usr/local/bin/openssl  ciphers | tr ":" "\n" | grep GOST
GOST2001-GOST89-GOST89
GOST94-GOST89-GOST89

 

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


×
×
  • Create New...
На сайте используются файлы cookie и сервисы аналитики для корректной работы форума и улучшения качества обслуживания. Продолжая использовать сайт, вы соглашаетесь с использованием файлов cookie и с Политикой конфиденциальности.