Jump to content
Калькуляторы

Работа с ЭЦП с командной строки (бесплатно)

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

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

Share this post


Link to post
Share on other sites
22 минуты назад, baide сказал:

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

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

Share this post


Link to post
Share on other sites
On 02.08.2018 at 8:50 PM, YuryD said:

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

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

 

On 02.08.2018 at 8:31 PM, TheUser said:

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

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

Share this post


Link to post
Share on other sites
11 часов назад, baide сказал:

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

 

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

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

Share this post


Link to post
Share on other sites
В 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

Share this post


Link to post
Share on other sites
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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites
1 hour ago, alibek said:

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

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

 

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

 

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

 

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

 

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

 

 

Share this post


Link to post
Share on other sites
15 минут назад, Painter сказал:

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

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

 

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

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

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

Share this post


Link to post
Share on other sites

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

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

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

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

Share this post


Link to post
Share on other sites
В 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

Share this post


Link to post
Share on other sites

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

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

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

Share this post


Link to post
Share on other sites
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

Share this post


Link to post
Share on other sites
7 минут назад, hsvt сказал:

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

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

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

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

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

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

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

Share this post


Link to post
Share on other sites
4 минуты назад, alibek сказал:

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

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

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

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

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

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

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

 

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

Share this post


Link to post
Share on other sites

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

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

Share this post


Link to post
Share on other sites
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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

Алгоритм создания сертификата 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.
 

Share this post


Link to post
Share on other sites
4 часа назад, neperpbl3 сказал:

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

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

Share this post


Link to post
Share on other sites

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

GOST2001-GOST89-GOST89
GOST94-GOST89-GOST89

 

Share this post


Link to post
Share on other sites

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

Edited by iSasha

Share this post


Link to post
Share on other sites
1 час назад, iSasha сказал:

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

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

Edited by arhead

Share this post


Link to post
Share on other sites

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

 

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

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now