Jump to content

Recommended Posts

Posted

@baide Где Вы взяли устаревший ключ? Может быть его нужно отдать обратно?

Может быть это ошибка конвертера P12FromGostCSP? Посмотрите в вашем CPS (что там у вас, КриптоПро?) в Windows как виден сертификат.

  • Replies 51
  • Created
  • Last Reply

Top Posters In This Topic

Posted
22 минуты назад, baide сказал:

Так у вас 2012гост отсутствует.  С 2001 у меня тоже все работало

 Вывод сделаете сами ? У меня работает....

Posted
On 02.08.2018 at 8:50 PM, YuryD said:

 Вывод сделаете сами ? У меня работает....

У вас ключ когда выпущен? У меня неделю назад

 

On 02.08.2018 at 8:31 PM, TheUser said:

Где Вы взяли устаревший ключ?

КриптоПро говорит 2012гост, все ок. Либо P12FromGostCSP  косячит, либо gost-engine криво собрался

Posted
11 часов назад, baide сказал:

У вас ключ когда выпущен? У меня неделю назад

 

КриптоПро говорит 2012гост, все ок. Либо P12FromGostCSP  косячит, либо gost-engine криво собрался

 Ключ в ноябре прошлого года, fromgost куплен тогда-же.

  • 8 months later...
Posted
В 02.08.2018 в 19:26, baide сказал:

Старая версия 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#
 
 

Если ещё актуально... В openssl pkcs12 попробуйте опцию -nomacver

  • 2 months later...
Posted
Quote

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:

Такая ошибка возникает при сохранении сертификата с GOST R... в файл .pfx с помощью стандартного диалога сохранения в Windows. Насколько я понял, для того, чтобы gost engine для openssl мог прочесть этот файл, pfx файл должен быть в определенном формате.

 

Вот тут человек пытается получить содержимое без дополнительных программ: https://vgimly.blogspot.com/2019/03/2.html

 

Работающая с GOST R 34.10-2012 версия P12FromGostCSP (не требует файла лицензии): https://www105.zippyshare.com/v/0cZxZR8r/file.html

Взято отсюда: https://ru.stackoverflow.com/questions/910436/pfx-файл-Подпись-документа

 

Так же прикрепил к этому сообщению

P12FromGostCSP.exe

Posted
1 hour ago, alibek said:

Файл модифицирован. Может быть и зараза какая-нибудь встроена.

К сожалению, мне не известна история этого файла.

 

Что интересно, размер файла такой же как и у утилиты на http://ftp.lissi.ru/Utils/P12FromGOSTCSP/

 

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

 

Или можно купить программу за 2990 (каждый год). Которая меняет несколько байт и сохраняет купленный вами сертификат и закрытый ключ на диск.

 

Кстати вопрос, а можно сразу купить в PEM формате на обычной флешке (или скачать из личного кабинета)? Был у кого-нибудь такой опыт?

 

 

Posted
15 минут назад, Painter сказал:

Что интересно, размер файла такой же как и у утилиты

По сравнению с оригиналом изменено 7 байт, причем все на JMP. Для трояна наверное маловато. Вероятно отключены только лицензионные проверки.

 

15 минут назад, Painter сказал:

Кстати вопрос, а можно сразу купить в PEM формате на обычной флешке (или скачать из личного кабинета)?

Нельзя. Это сертифицированные УЦ, работают с соответствии с российским законодательством и с российским сертифицированным ПО.

Posted

Попробовал поизучать в виртуалке ломанный P12FromGostCSP.

Вроде бы действительно никуда не лезет и ничего плохого не делает.

Да и вроде бы пока самый маленький дроппер под x86 меньше пары сотен байт делать еще не научились.

Вообщем не то, чтобы это было принципиально при наличии get-cpcert, но все хе с утилитой экспортировать в PEM проще.

  • 3 weeks later...
  • 4 weeks later...
Posted (edited)
В 15.07.2019 в 22:25, alibek сказал:

Попробовал поизучать в виртуалке ломанный P12FromGostCSP.

Вроде бы действительно никуда не лезет и ничего плохого не делает.

Да и вроде бы пока самый маленький дроппер под x86 меньше пары сотен байт делать еще не научились.

Вообщем не то, чтобы это было принципиально при наличии get-cpcert, но все хе с утилитой экспортировать в PEM проще.

Экспортировал с помощью P12FromGostCSP.

 

/usr/local/gost-ssl/bin/openssl asn1parse -in last20_p12.pfx -inform DER



0:d=0  hl=4 l=3191 cons: SEQUENCE
    4:d=1  hl=2 l=   1 prim: INTEGER           :03
    7:d=1  hl=4 l=3100 cons: SEQUENCE
   11:d=2  hl=2 l=   9 prim: OBJECT            :pkcs7-data

 3115:d=3  hl=2 l=  10 cons: SEQUENCE
 3117:d=4  hl=2 l=   6 prim: OBJECT            :GOST R 34.11-94



 /usr/local/gost-ssl/bin/openssl pkcs12 -in last20_p12.pfx -out new20.pem -nodes -clcerts -nomacver
Enter Import Password:
Error outputting keys and certificates
139822647420592:error:0D07207B:asn1 encoding routines:ASN1_get_object:header too long:asn1_lib.c:157:
139822647420592:error:0D068066:asn1 encoding routines:ASN1_CHECK_TLEN:bad object header:tasn_dec.c:1189:
139822647420592:error:0D08303A:asn1 encoding routines:ASN1_TEMPLATE_NOEXP_D2I:nested asn1 error:tasn_dec.c:627:
139822647420592:error:2306A065:PKCS12 routines:PKCS12_item_decrypt_d2i:decode error:p12_decr.c:159:



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

 

 

Она мне в старом стандарте экспорт сделала ? Завтра ключ заканчивается старый))), почитал тут ветку бегло, как вытащить pem то теперь?

 

P.S. но судя по логу P12FromGostCSP он в экспортит в GOST3410_2012_256 и как бы check license SN OK, нужно openssl пересобирать с engine новым? Как это сделать чтобы не поломать системный))) давно делал и уже всё забыл.

Edited by hsvt
Posted

Я логи не сохранил, но у меня при экспорте/импорте вроде бы никаких ошибок не выдавало.

Но engine нужно было пересобирать.

Как собирал не помню, были нюансы, но я где-то на форуме о них писал.

Posted (edited)
10 минут назад, alibek сказал:

Я логи не сохранил, но у меня при экспорте/импорте вроде бы никаких ошибок не выдавало.

Но engine нужно было пересобирать.

Как собирал не помню, были нюансы, но я где-то на форуме о них писал.

Пробую через crp, не выходит что то. Нюансы читал, у вас в итоге через get-cpcert вся пляска закончилась и через rpm пакеты и ручную компиляцию не вышло?


 

/opt/cprocsp/cp-openssl-1.1.0/bin/amd64$ openssl engine gost_capi
140513156073376:error:25066067:DSO support routines:DLFCN_LOAD:could not load the shared library:dso_dlfcn.c:187:filename(/usr/lib64/openssl/engines/libgost_capi.so): /usr/lib64/openssl/engines/libgost_capi.so: cannot open shared object
file: No such file or directory
140513156073376:error:25070067:DSO support routines:DSO_load:could not load the shared library:dso_lib.c:244:
140513156073376:error:260B6084:engine routines:DYNAMIC_LOAD:dso not found:eng_dyn.c:450:
140513156073376:error:2606A074:engine routines:ENGINE_by_id:no such engine:eng_list.c:419:id=gost_capi



/opt/cprocsp/cp-openssl-1.1.0/bin/amd64$ openssl engine gost -c -t
140688238622528:error:25066067:DSO support routines:dlfcn_load:could not load the shared library:crypto/dso/dso_dlfcn.c:113:filename(/opt/cprocsp/cp-openssl-1.1.0/lib/amd64/engines/gost.so): /opt/cprocsp/cp-openssl-1.1.0/lib/amd64/engines/gost.so: cannot open shared object file: No such file or directory
140688238622528:error:25070067:DSO support routines:DSO_load:could not load the shared library:crypto/dso/dso_lib.c:161:
140688238622528:error:260B6084:engine routines:dynamic_load:dso not found:crypto/engine/eng_dyn.c:414:
140688238622528:error:2606A074:engine routines:ENGINE_by_id:no such engine:crypto/engine/eng_list.c:339:id=gost



./openssl pkcs12 -in /tmp/last20_p12.pfx -nodes -nomacver
Enter Import Password:
Error outputting keys and certificates
140435784144704:error:06074078:digital envelope routines:EVP_PBE_CipherInit:keygen failure:crypto/evp/evp_pbe.c:126:
140435784144704:error:23077073:PKCS12 routines:PKCS12_pbe_crypt:pkcs12 algor cipherinit error:crypto/pkcs12/p12_decr.c:41:
140435784144704:error:2306A075:PKCS12 routines:PKCS12_item_decrypt_d2i:pkcs12 pbe crypt error:crypto/pkcs12/p12_decr.c:94:

 

ll /opt/cprocsp/cp-openssl-1.1.0/lib/amd64/engines/
total 132
-rw-r--r-- 1 root root   1216 Jul  4 01:36 libgostengy.la
lrwxrwxrwx 1 root root     20 Aug 27 17:02 libgostengy.so -> libgostengy.so.0.0.0
lrwxrwxrwx 1 root root     20 Aug 27 17:02 libgostengy.so.0 -> libgostengy.so.0.0.0
-rw-r--r-- 1 root root 130189 Jul  4 01:37 libgostengy.so.0.0.0

 

 

rpm -ivh lsb-cprocsp-base-5.0.11455-5.noarch.rpm
rpm -ivh cprocsp-cpopenssl-110-base-5.0.11455-5.noarch.rpm
rpm -ivh cprocsp-cpopenssl-110-64-5.0.11455-5.x86_64.rpm

rpm -ivh lsb-cprocsp-rdr-64-5.0.11455-5.x86_64.rpm
rpm -ivh lsb-cprocsp-kc1-64-5.0.11455-5.x86_64.rpm
rpm -ivh lsb-cprocsp-capilite-64-5.0.11455-5.x86_64.rpm
rpm -ivh cprocsp-cpopenssl-110-gost-64-5.0.11455-5.x86_64.rpm

 

Ставил в таком порядке, что ему ещё нужно?

Edited by hsvt
Posted
7 минут назад, hsvt сказал:

Нюансы читал, у вас в итоге через get-cpcert вся пляска закончилась и через rpm пакеты и ручную компиляцию не вышло?

Не совсем так.

Через get-cpcert я получил pem.

А чтобы затем использовать pem для подписывания файлов, потребовалось обновить openssl.

Я его собирал вручную, но потом нашел на форуме КриптоПро готовые сборки.

Если бы нашел раньше, можно было бы использовать сразу их.

Если ломанный P12FromGostCSP работает нормально, то проще было бы с помощью утилиты получить PKCS#12, затем с помощью обновленного openssl преобразовать его в pem и далее использовать для подписывания.

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

Не совсем так.

Через get-cpcert я получил pem.

А чтобы затем использовать pem для подписывания файлов, потребовалось обновить openssl.

Я его собирал вручную, но потом нашел на форуме КриптоПро готовые сборки.

Если бы нашел раньше, можно было бы использовать сразу их.

Если ломанный P12FromGostCSP работает нормально, то проще было бы с помощью утилиты получить PKCS#12, затем с помощью обновленного openssl преобразовать его в pem и далее использовать для подписывания.

Выше ответил по сборкам КриптоПро, ЧЯДНТ не понятно( что в таком случае от них ожидать при протухшем ключе? Рутокен мне принесли только сегодня к сожалению и сразу начал разбираться.

 

Как раз таки в pem формат и не выходит преобразовать из-за этих сборок, вручную ещё не пробовал отсюда https://github.com/gost-engine/engine делать дабы не запорость ОС...

Posted

Лично я бы, чтобы не заморачиваться, просто поставил бы на виртуальную машину Ubuntu 14.04 LTS 64bit, загрузил бы в нее скрипт get-cpcert и получил бы из сертификата PEM.

А чтобы не запороть ОС, поставил бы OpenSSL в отдельный каталог (не трогая системный) и запускал бы его через враппер.

Posted (edited)
2 часа назад, alibek сказал:

Лично я бы, чтобы не заморачиваться, просто поставил бы на виртуальную машину Ubuntu 14.04 LTS 64bit, загрузил бы в нее скрипт get-cpcert и получил бы из сертификата PEM.

А чтобы не запороть ОС, поставил бы OpenSSL в отдельный каталог (не трогая системный) и запускал бы его через враппер.

В общем собрал вроде бы в ручную openssl-1.1.1c, а engine взял из скрипта get-cpcert, (wget -O gost-engine.zip -c https://codeload.github.com/gost-engine/engine/zip/1b374532c2d494710c39371e83c197d08c65e8bc)

Потому как отсюда если брать (git clone -b openssl_1_1_0 https://github.com/gost-engine/engine engine_openssl_1_1_0), make install не видит target почему то...

 

/opt/engine_openssl_1_1_0/build$ cmake3 -DCMAKE_BUILD_TYPE=Release -DOPENSSL_ROOT_DIR=/opt/gost-ssl/ ..
-- The C compiler identification is GNU 4.8.5
-- Check for working C compiler: /usr/bin/cc
-- Check for working C compiler: /usr/bin/cc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Found OpenSSL: /opt/gost-ssl/lib/libcrypto.so (found suitable version "1.1.1c", minimum required is "1.1")
-- Check if the system is big endian
-- Searching 16 bit integer
-- Looking for sys/types.h
-- Looking for sys/types.h - found
-- Looking for stdint.h
-- Looking for stdint.h - found
-- Looking for stddef.h
-- Looking for stddef.h - found
-- Check size of unsigned short
-- Check size of unsigned short - done
-- Using unsigned short
-- Check if the system is big endian - little endian
-- LITTLE_ENDIAN
-- Configuring done
-- Generating done
-- Build files have been written to: /opt/engine_openssl_1_1_0/build



/opt/engine_openssl_1_1_0/build$ cmake3 --build . --config Release
[ 40%] Built target gost
[ 46%] Built target gostsum
[ 53%] Built target gost12sum
[ 93%] Built target gost_engine
[100%] Built target test_grasshopper



/opt/engine_openssl_1_1_0/build$ cmake3 --build . --target install --config Release
gmake: *** No rule to make target `install'.  Stop.



/opt/engine_openssl_1_1_0/build$ make install;
make: *** No rule to make target `install'.  Stop.

 

ldconfig -p|grep libcrypt
        libcryptsetup.so.12 (libc6,x86-64) => /lib64/libcryptsetup.so.12
        libcryptsetup.so.4 (libc6,x86-64) => /lib64/libcryptsetup.so.4
        libcrypto.so.10 (libc6,x86-64) => /lib64/libcrypto.so.10
        libcrypto.so.1.1 (libc6,x86-64) => /opt/gost-ssl/lib/libcrypto.so.1.1
        libcrypto.so (libc6,x86-64) => /opt/gost-ssl/lib/libcrypto.so
        libcrypto.so (libc6,x86-64) => /lib64/libcrypto.so
        libcrypt.so.1 (libc6,x86-64, OS ABI: Linux 2.6.32) => /lib64/libcrypt.so.1
        libcrypt.so (libc6,x86-64, OS ABI: Linux 2.6.32) => /lib64/libcrypt.so

 

А это выхлоп сборки с версии codeload.github.com/gost-engine/engine/zip/1b374532c2d494710c39371e83c197d08c65e8bc

/opt/engine/build$ cmake3 --build . --target install --config Release
[  4%] Built target test_tlstree
[ 30%] Built target gost_core
[ 34%] Built target gost12sum
[ 64%] Built target gost_engine
[ 68%] Built target test_curves
[ 72%] Built target test_params
[ 76%] Built target test_context
[ 80%] Built target test_keyexpimp
[ 84%] Built target test_sign
[ 88%] Built target sign
[ 92%] Built target test_grasshopper
[ 96%] Built target gostsum
[100%] Built target test_gost89
/opt/engine/build$ cmake3 --build . --target install --config Release
[  4%] Built target test_tlstree
[ 30%] Built target gost_core
[ 34%] Built target gost12sum
[ 64%] Built target gost_engine
[ 68%] Built target test_curves
[ 72%] Built target test_params
[ 76%] Built target test_context
[ 80%] Built target test_keyexpimp
[ 84%] Built target test_sign
[ 88%] Built target sign
[ 92%] Built target test_grasshopper
[ 96%] Built target gostsum
[100%] Built target test_gost89
Install the project...
-- Install configuration: "Release"
-- Up-to-date: /usr/lib64/openssl/engines/gost.so
-- Up-to-date: /usr/local/bin/gostsum
-- Up-to-date: /usr/local/bin/gost12sum
-- Up-to-date: /usr/local/share/man/man1/gostsum.1
-- Up-to-date: /usr/local/share/man/man1/gost12sum.1


 

./openssl engine gost -c -t
(gost) Reference implementation of GOST engine
 [gost89, gost89-cnt, gost89-cnt-12, gost89-cbc, grasshopper-ecb, grasshopper-cbc, grasshopper-cfb, grasshopper-ofb, grasshopper-ctr, magma-cbc, magma-ctr, id-tc26-cipher-gostr3412-2015-kuznyechik-ctracpkm, md_gost94, gost-mac, md_gost12_256, md_gost12_512, gost-mac-12, magma-mac, grasshopper-mac, id-tc26-cipher-gostr3412-2015-kuznyechik-ctracpkm-omac, gost2001, gost-mac, gost2012_256, gost2012_512, gost-mac-12, magma-mac, grasshopper-mac, id-tc26-cipher-gostr3412-2015-magma-ctracpkm-omac, id-tc26-cipher-gostr3412-2015-kuznyechik-ctracpkm-omac]
     [ available ]



./openssl version -e
ENGINESDIR: "/opt/gost-ssl/lib/engines-1.1

 

Тут всё собралось и установилось

 

Так же понадобилось перетащить модуль mv /usr/lib64/openssl/engines/gost.so /opt/gost-ssl/lib/engines-1.1/ и поправить openssl.cnf и /etc/ld.so.conf

 

Кстати даже свежий openssl 1.1.1c с GOST2012 всё равно выдаёт в -inform DE 3117:d=4  hl=2 l=   6 prim: OBJECT            :GOST R 34.11-94

 

Извиняюсь что зафлудил вашу тему скрипта выгрузки, перенесу в соотвествующую.

Edited by hsvt
Posted

А что, gost_engine научился работать с sha256 в ГОСТ 2012? Я что-то упустил? Проблема была именно в реализации sha256 со стороны КриптоПРО.

  • 1 month later...
Posted

Алгоритм создания сертификата PEM для подписания файла-запроса в РосКомНадзор:
1.    Скачать КриптоПро CSP  и установить на Windows;
2.    Импортировать сертификаты в Windows при помощи КриптоПро CSP. Сертификаты могут предоставлятся в виде файла реестра или токен USB-ключа. При импорте из файла реестра нужно в предварительно файле заменить ID пользователя на актуальный. Узнать его можно с помощью команды «whoami /USER»;
3.    Запустить программу P12FromGostCSP последней версии для ГОСТ 2012 и сохранить сертификаты в формате «.pfx». Версия программы для ГОСТ 2001 не работает с новыми сертификатами 2019 года сформированные по ГОСТ 2012 (программа попросту вылетает);
4.    Собрать openssl с поддержкой ГОСТ 2012. Проверить поддержку ГОСТа можно командой «openssl ciphers | tr ":" "\n" | grep GOST»;
5.    Ввести команду openssl pkcs12 -in file.pfx -out file.pem -nodes -clcerts.
 

Posted
4 часа назад, neperpbl3 сказал:

Алгоритм создания сертификата PEM для подписания файла-запроса в РосКомНадзор:

Алгоритму 100 лет в обед. Или я ошибаюсь?

  • 1 month later...
Posted

Тоже обновлять ключ надо. Подскажите утилита выше из поста получается не вирус и т.п. И какой OpenSSL надо? У меня сейчас 1.0.1f и как я понял с такими ГОСТами не пойдет

GOST2001-GOST89-GOST89
GOST94-GOST89-GOST89

 

Posted (edited)

Господа, подскажите, делаю при помощи этой ломанной утилиты P12FromGostCSP файл .pfx при создании предлагает ввести пароль, сначала от подписи (тут все понятно), а потом на этот файл, так вот чтобы не ввел туда (даже без пароля) он прожевывает. Но дальше при попытке конвертировать в .pem просит пароль и что бы туда не ввел - инвалид! Подскажите в чем дело?

Edited by iSasha
Posted (edited)
1 час назад, iSasha сказал:

Господа, подскажите, делаю при помощи этой ломанной утилиты P12FromGostCSP файл .pfx при создании предлагает ввести пароль, сначала от подписи (тут все понятно), а потом на этот файл, так вот чтобы не ввел туда (даже без пароля) он прожевывает. Но дальше при попытке конвертировать в .pem просит пароль и что бы туда не ввел - инвалид! Подскажите в чем дело?

Может глюк в утилите. Попробуйте 123 на всякий при экспорте его. А можно на виртуалке разверните https://github.com/kov-serg/get-cpcert и проще намного. ОретSSL только с ГОСТ 2012 не забудьте сделать. Все работает.

Edited by arhead
Posted

 Закопайте стюардессу :) Были полезные советы - подписать запрос один раз криптоармом например (бесплатный) и кормить им систему выгрузки реестров.  Зачем так убиваться за непрофильное, вы так никогда не убъетесь :)

 

 И реально -зачем ? Для самописного блочения ? Народ в основном платные dpi ставит. Для имитации своей нужности ? Это пройдёт.... По закону что положено? - забирать реестр (как описано, даже криптоарм упомянут). И блочить по закону, что совсем не связано с забором реестра. Просто эти два условия надо соблюсти, забирать и блочить, и всё. Как и чем вы это делаете - не описано.

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