TheUser Posted August 2, 2018 Posted August 2, 2018 @baide Где Вы взяли устаревший ключ? Может быть его нужно отдать обратно? Может быть это ошибка конвертера P12FromGostCSP? Посмотрите в вашем CPS (что там у вас, КриптоПро?) в Windows как виден сертификат. Вставить ник Quote
YuryD Posted August 2, 2018 Posted August 2, 2018 22 минуты назад, baide сказал: Так у вас 2012гост отсутствует. С 2001 у меня тоже все работало Вывод сделаете сами ? У меня работает.... Вставить ник Quote
baide Posted August 3, 2018 Posted August 3, 2018 On 02.08.2018 at 8:50 PM, YuryD said: Вывод сделаете сами ? У меня работает.... У вас ключ когда выпущен? У меня неделю назад On 02.08.2018 at 8:31 PM, TheUser said: Где Вы взяли устаревший ключ? КриптоПро говорит 2012гост, все ок. Либо P12FromGostCSP косячит, либо gost-engine криво собрался Вставить ник Quote
YuryD Posted August 4, 2018 Posted August 4, 2018 11 часов назад, baide сказал: У вас ключ когда выпущен? У меня неделю назад КриптоПро говорит 2012гост, все ок. Либо P12FromGostCSP косячит, либо gost-engine криво собрался Ключ в ноябре прошлого года, fromgost куплен тогда-же. Вставить ник Quote
Barry180 Posted April 18, 2019 Posted April 18, 2019 В 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 Вставить ник Quote
Painter Posted July 15, 2019 Posted July 15, 2019 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 Вставить ник Quote
alibek Posted July 15, 2019 Author Posted July 15, 2019 Файл модифицирован. Может быть и зараза какая-нибудь встроена. Вставить ник Quote
Painter Posted July 15, 2019 Posted July 15, 2019 1 hour ago, alibek said: Файл модифицирован. Может быть и зараза какая-нибудь встроена. К сожалению, мне не известна история этого файла. Что интересно, размер файла такой же как и у утилиты на http://ftp.lissi.ru/Utils/P12FromGOSTCSP/ Итоговые сертификаты и закрытый ключ всегда можно проверить после сохранения, нет ли там лишних записей и запускать в виртуальной машине без интернета. Или можно купить программу за 2990 (каждый год). Которая меняет несколько байт и сохраняет купленный вами сертификат и закрытый ключ на диск. Кстати вопрос, а можно сразу купить в PEM формате на обычной флешке (или скачать из личного кабинета)? Был у кого-нибудь такой опыт? Вставить ник Quote
alibek Posted July 15, 2019 Author Posted July 15, 2019 15 минут назад, Painter сказал: Что интересно, размер файла такой же как и у утилиты По сравнению с оригиналом изменено 7 байт, причем все на JMP. Для трояна наверное маловато. Вероятно отключены только лицензионные проверки. 15 минут назад, Painter сказал: Кстати вопрос, а можно сразу купить в PEM формате на обычной флешке (или скачать из личного кабинета)? Нельзя. Это сертифицированные УЦ, работают с соответствии с российским законодательством и с российским сертифицированным ПО. Вставить ник Quote
alibek Posted July 15, 2019 Author Posted July 15, 2019 Попробовал поизучать в виртуалке ломанный P12FromGostCSP. Вроде бы действительно никуда не лезет и ничего плохого не делает. Да и вроде бы пока самый маленький дроппер под x86 меньше пары сотен байт делать еще не научились. Вообщем не то, чтобы это было принципиально при наличии get-cpcert, но все хе с утилитой экспортировать в PEM проще. Вставить ник Quote
andrulez Posted August 1, 2019 Posted August 1, 2019 Вот рабочее решение. https://github.com/kulikan/privkey Вставить ник Quote
hsvt Posted August 27, 2019 Posted August 27, 2019 (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 August 27, 2019 by hsvt Вставить ник Quote
alibek Posted August 27, 2019 Author Posted August 27, 2019 Я логи не сохранил, но у меня при экспорте/импорте вроде бы никаких ошибок не выдавало. Но engine нужно было пересобирать. Как собирал не помню, были нюансы, но я где-то на форуме о них писал. Вставить ник Quote
hsvt Posted August 27, 2019 Posted August 27, 2019 (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 August 27, 2019 by hsvt Вставить ник Quote
alibek Posted August 27, 2019 Author Posted August 27, 2019 7 минут назад, hsvt сказал: Нюансы читал, у вас в итоге через get-cpcert вся пляска закончилась и через rpm пакеты и ручную компиляцию не вышло? Не совсем так. Через get-cpcert я получил pem. А чтобы затем использовать pem для подписывания файлов, потребовалось обновить openssl. Я его собирал вручную, но потом нашел на форуме КриптоПро готовые сборки. Если бы нашел раньше, можно было бы использовать сразу их. Если ломанный P12FromGostCSP работает нормально, то проще было бы с помощью утилиты получить PKCS#12, затем с помощью обновленного openssl преобразовать его в pem и далее использовать для подписывания. Вставить ник Quote
hsvt Posted August 27, 2019 Posted August 27, 2019 4 минуты назад, alibek сказал: Не совсем так. Через get-cpcert я получил pem. А чтобы затем использовать pem для подписывания файлов, потребовалось обновить openssl. Я его собирал вручную, но потом нашел на форуме КриптоПро готовые сборки. Если бы нашел раньше, можно было бы использовать сразу их. Если ломанный P12FromGostCSP работает нормально, то проще было бы с помощью утилиты получить PKCS#12, затем с помощью обновленного openssl преобразовать его в pem и далее использовать для подписывания. Выше ответил по сборкам КриптоПро, ЧЯДНТ не понятно( что в таком случае от них ожидать при протухшем ключе? Рутокен мне принесли только сегодня к сожалению и сразу начал разбираться. Как раз таки в pem формат и не выходит преобразовать из-за этих сборок, вручную ещё не пробовал отсюда https://github.com/gost-engine/engine делать дабы не запорость ОС... Вставить ник Quote
alibek Posted August 27, 2019 Author Posted August 27, 2019 Лично я бы, чтобы не заморачиваться, просто поставил бы на виртуальную машину Ubuntu 14.04 LTS 64bit, загрузил бы в нее скрипт get-cpcert и получил бы из сертификата PEM. А чтобы не запороть ОС, поставил бы OpenSSL в отдельный каталог (не трогая системный) и запускал бы его через враппер. Вставить ник Quote
hsvt Posted August 27, 2019 Posted August 27, 2019 (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 August 27, 2019 by hsvt Вставить ник Quote
murano Posted August 27, 2019 Posted August 27, 2019 А что, gost_engine научился работать с sha256 в ГОСТ 2012? Я что-то упустил? Проблема была именно в реализации sha256 со стороны КриптоПРО. Вставить ник Quote
neperpbl3 Posted October 11, 2019 Posted October 11, 2019 Алгоритм создания сертификата 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. Вставить ник Quote
TheUser Posted October 11, 2019 Posted October 11, 2019 4 часа назад, neperpbl3 сказал: Алгоритм создания сертификата PEM для подписания файла-запроса в РосКомНадзор: Алгоритму 100 лет в обед. Или я ошибаюсь? Вставить ник Quote
arhead Posted December 11, 2019 Posted December 11, 2019 Тоже обновлять ключ надо. Подскажите утилита выше из поста получается не вирус и т.п. И какой OpenSSL надо? У меня сейчас 1.0.1f и как я понял с такими ГОСТами не пойдет GOST2001-GOST89-GOST89 GOST94-GOST89-GOST89 Вставить ник Quote
iSasha Posted December 12, 2019 Posted December 12, 2019 (edited) Господа, подскажите, делаю при помощи этой ломанной утилиты P12FromGostCSP файл .pfx при создании предлагает ввести пароль, сначала от подписи (тут все понятно), а потом на этот файл, так вот чтобы не ввел туда (даже без пароля) он прожевывает. Но дальше при попытке конвертировать в .pem просит пароль и что бы туда не ввел - инвалид! Подскажите в чем дело? Edited December 12, 2019 by iSasha Вставить ник Quote
arhead Posted December 12, 2019 Posted December 12, 2019 (edited) 1 час назад, iSasha сказал: Господа, подскажите, делаю при помощи этой ломанной утилиты P12FromGostCSP файл .pfx при создании предлагает ввести пароль, сначала от подписи (тут все понятно), а потом на этот файл, так вот чтобы не ввел туда (даже без пароля) он прожевывает. Но дальше при попытке конвертировать в .pem просит пароль и что бы туда не ввел - инвалид! Подскажите в чем дело? Может глюк в утилите. Попробуйте 123 на всякий при экспорте его. А можно на виртуалке разверните https://github.com/kov-serg/get-cpcert и проще намного. ОретSSL только с ГОСТ 2012 не забудьте сделать. Все работает. Edited December 12, 2019 by arhead Вставить ник Quote
YuryD Posted December 13, 2019 Posted December 13, 2019 Закопайте стюардессу :) Были полезные советы - подписать запрос один раз криптоармом например (бесплатный) и кормить им систему выгрузки реестров. Зачем так убиваться за непрофильное, вы так никогда не убъетесь :) И реально -зачем ? Для самописного блочения ? Народ в основном платные dpi ставит. Для имитации своей нужности ? Это пройдёт.... По закону что положено? - забирать реестр (как описано, даже криптоарм упомянут). И блочить по закону, что совсем не связано с забором реестра. Просто эти два условия надо соблюсти, забирать и блочить, и всё. Как и чем вы это делаете - не описано. Вставить ник Quote
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.