alibek Posted June 13, 2019 · Report post Не поделитесь инструкцией по сабжу? Исходники OpenSSL беру отсюда, версия 1.1.1c. engine беру отсюда (пакет cprocsp-cpopenssl-~11315-5.x86_64.rpm, в нем есть библиотека libgost.so, а это вроде бы именно то, что нужно). Собираю так: ./config no-shared zlib --prefix=/opt/gostssl Собирается успешно, OpenSSL запускается и показывает, что поддержка engine есть: # openssl engine (dynamic) Dynamic engine loading support Но как только я пытаюсь подключить engine: openssl_conf = openssl_def [openssl_def] engines = engine_section [engine_section] gostengy = gost_section [gost_section] engine_id = gostengy dynamic_path = /opt/gostssl/lib/engines-1.1/libgost.so default_algorithms = CIPHERS, DIGESTS, PKEY, PKEY_CRYPTO, PKEY_ASN1 то при запуске OpenSSL тут же получаю сообщение, что он не может загрузить so, возможно как раз потому, что я собирал OpenSSL со статической линковкой (без shared libs). Но если я собираю OpenSSL так: ./config shared zlib --prefix=/opt/gostssl то он собирается, но при запуске пишет, что error while loading shared libraries: libssl.so.1.1. Эта библиотека в /opt/gostssl/lib/ (как она сама, так и симлинк libssl.so), но видимо OpenSSL пытается искать ее где-то в другом месте, скорее всего в общесистемном. # ldd openssl linux-vdso.so.1 => (0x00007fff43fff000) libssl.so.1.1 => not found libcrypto.so.1.1 => not found libz.so.1 => /lib64/libz.so.1 (0x00007fa234b42000) libdl.so.2 => /lib64/libdl.so.2 (0x00007fa23493e000) libpthread.so.0 => /lib64/libpthread.so.0 (0x00007fa234720000) libc.so.6 => /lib64/libc.so.6 (0x00007fa23438c000) /lib64/ld-linux-x86-64.so.2 (0x00007fa234d61000) Видимо путь нужно указывать где-то дополнительно. На первый взгляд это похоже на баг, хотя и для бага указано, что он уже закрыт. Кстати, по ссылке был предложен костыль, в виде добавления пути /opt/gostssl/lib в файле ld.so.conf. Это помогло, теперь новая сборка OpenSSL запускается, но engine все равно не загружается: # ./openssl engine (dynamic) Dynamic engine loading support 140729665955584:error:25066067:DSO support routines:dlfcn_load:could not load the shared library:crypto/dso/dso_dlfcn.c:119:filename(/opt/gostssl/lib/engines-1.1/libgost.so): libcrypto.so.1.0.0: cannot open shared object file: No such file or directory 140729665955584:error:25070067:DSO support routines:DSO_load:could not load the shared library:crypto/dso/dso_lib.c:162: 140729665955584:error:260B6084:engine routines:dynamic_load:dso not found:crypto/engine/eng_dyn.c:414: 140729665955584:error:260BC066:engine routines:int_engine_configure:engine configuration error:crypto/engine/eng_cnf.c:141:section=gost_section, name=dynamic_path, value=/opt/gostssl/lib/engines-1.1/libgost.so 140729665955584:error:0E07606D:configuration file routines:module_run:module initialization error:crypto/conf/conf_mod.c:177:module=engines, value=engine_section, retcode=-1 Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
alibek Posted June 13, 2019 · Report post Кстати, в пакете cprocsp-cpopenssl-110-64-5.0.11315-5.x86_64.rpm лежит не просто engine, а целиком сборка OpenSSL. Она даже запускается сразу. Вот только: # ./openssl ciphers | tr ":" "\n" | grep -i gost GOST2001-GOST89-GOST89 GOST94-GOST89-GOST89 # ./openssl engine (dynamic) Dynamic engine loading support (gost) Reference implementation of GOST engine То ли я что-то не так сделал, то ли на самом деле там не полноценная библиотека, а заглушка. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
NewUse Posted June 13, 2019 · Report post попадался пакет с поддержкой ГОСТа готовый, гуглите в Яндексе, ну и на хабре подробная инструкция по сборке. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
alibek Posted June 13, 2019 · Report post Не выходит что-то каменный цветок. По ссылке выше на форум КриптоПро беру два дистрибутива: cprocsp-cpopenssl-110-64-5.0.11315-5.x86_64.rpm — сборка OpenSSL cprocsp-cpopenssl-110-gost-64-5.0.11315-5.x86_64.rpm — поддержка ГОСТ Установочные скрипты в обоих пакетах максимально простые — в первом пакете помимо копирования обновляется файл ld.so.conf, а во втором также обновляется файл ld.so.conf плюс обновляется конфигурационный файл openssl.cnf. В итоге конфигурационный файл получается такой: HOME = . oid_section = new_oids openssl_conf = openssl_def [openssl_def] engines = engine_section [engine_section] gostengy = gost_section [gost_section] engine_id = gostengy dynamic_path = /opt/cprocsp/cp-openssl-1.1.0/lib/amd64/engines/libgostengy.so default_algorithms = CIPHERS, DIGESTS, PKEY, PKEY_CRYPTO, PKEY_ASN1 Но при запуске выдает то же самое: # ./openssl engine (dynamic) Dynamic engine loading support 139803887970048: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/libgostengy.so): libcapi20.so.4: cannot open shared object file: No such file or directory 139803887970048:error:25070067:DSO support routines:DSO_load:could not load the shared library:crypto/dso/dso_lib.c:161: 139803887970048:error:260B6084:engine routines:dynamic_load:dso not found:crypto/engine/eng_dyn.c:414: 139803887970048:error:260BC066:engine routines:int_engine_configure:engine configuration error:crypto/engine/eng_cnf.c:141:section=gost_section, name=dynamic_path, value=/opt/cprocsp/cp-openssl-1.1.0/lib/amd64/engines/libgostengy.so 139803887970048:error:0E07606D:configuration file routines:module_run:module initialization error:crypto/conf/conf_mod.c:173:module=engines, value=engine_section, retcode=-1 Все ссылки, которые я находил, в конечном итоге основывались на этой теме: https://www.cryptopro.ru/forum2/default.aspx?g=posts&t=8544 Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
NewUse Posted June 13, 2019 (edited) · Report post 37 минут назад, alibek сказал: libcapi20.so.4: cannot open shared object file: No such file or directory разве не оно? вроде по этой статье делал: https://www.easycoding.org/2018/11/28/dobavlyaem-podderzhku-gost-dlya-openssl-v-fedora.html в добавок: https://github.com/gost-engine/rpm Edited June 13, 2019 by NewUse дополнил Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
alibek Posted June 13, 2019 · Report post gost-engine я находил. Но не могу собрать, нужен cmake третьей версии, а на CentOS 6 он второй версии. Я даже rpm находил, но и он требовал glibc версии 2.18, а в репозитории у меня версия младше. Обновлять подобные пакеты вручную потом боком выйдет, а обновить ядро/ОС не могу, потому что на этом сервере работает СКАТ и менять версию ядра нельзя. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
NewUse Posted June 13, 2019 (edited) · Report post Скат, ну удачи...(сорри за офтоп) зачем Вам 1.1? у меня под центос 6 как раз 101е с гостом, пакет лежит на сайте криптопро... ну и в чём проблема собрать из сорцов, гост давно в них? Edited June 13, 2019 by NewUse Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
alex39x Posted June 14, 2019 · Report post Делали в виртуалке этим скриптом : https://github.com/kov-serg/get-cpcert ( зы не мучайте скат-а ) Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
alibek Posted June 14, 2019 · Report post СКАТ я и не трогаю, просто у меня скрипт, забирающий дампы, работает на том же сервере, что и СКАТ. Вроде бы нашел способ, как поставить glibc 2.14 в отдельный каталог, не заменяя системные библиотеки. Аллилуйя! # ./openssl engine (dynamic) Dynamic engine loading support (gost) Reference implementation of GOST engine # ./openssl ciphers | tr ":" "\n" | grep -i gost GOST2012-GOST8912-GOST8912 GOST2001-GOST89-GOST89 Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
alibek Posted June 14, 2019 · Report post Рано радовался. Конвертировать PFX в PEM не хочет, жалуется на неподдерживаемые атрибуты. Вроде бы где-то на форуме CryptoPro я читал, что в библиотеке gostengy не реализована генерация ключа, может быть в этом дело. Вообщем я воспользовался предыдущим советом и поставил на виртуальную Ubuntu 14 утилиту get-cpcert. Утилитой преобразовал ключ в PEM, а уже полученный PEM просто скопировал на сервер, где собран OpenSSL с поддержкой ГОСТ 2012, и уже он спокойно все подписал. Так что сейчас все работает и до следующего года можно спать спокойно. Посмотрел я, что делает скрипт prepare.sh. В принципе ничего сверхъестественного, можно было бы и вручную повторить. Но боюсь, что на CentOS 6 этого не повторить, системные библиотеки слишком старые, а обновлять их нельзя. Запишу на всякий случай, если нужно будет вернуться через год. 1. Собираем из исходников OpenSSL версии не ниже 1.1.1, с поддержкой engine. Добавляем ГОСТовский engine, брать с форума CryptoPro. 2. В принципе можно не собирать OpenSSL, а взять готовую бинарную сборку тут: https://update.cryptopro.ru/support/nginx-gost/bin/185515/ (в пакете 110-64 лежит сам OpenSSL, в пакете 110-gost-64 лежит engine). 3. Ставим скрипт get-cpcert, берем отсюда: https://github.com/kov-serg/get-cpcert 4. Экспортируем ЭЦП в формате CryptoPro на флешку (получится каталог вида folder.000, внутри которого лежат части ключа). 5. Этот каталог скармливаем скрипту get-cpcert и получаем ключ в формате PEM. 6. А уже с этим PEM нормально работает обычный OpenSSL. 7. А чтобы не словить крайне странные глюки, то бинарный файл openssl переименовываем в openssl.real, а вместо него создает враппер с таким содержимым: #!/bin/sh EXE=$(readlink -f "$0") DIR=$(dirname "$EXE") export LD_LIBRARY_PATH=/srv/erdi/gostssl/lib:/opt/glibc-2.14/lib exec $DIR/openssl.real $* А то если в систему подсунуть glibc-2.14, то там начинается нечто феерическое. У меня сходу слетел часовой пояс (точнее он перестал читаться), перестал работать yum и сломались утилиты, использующие сокеты. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
snvoronkov Posted June 14, 2019 · Report post @alibek , вы зачем над трупом ОС измываетесь? Померло оно. Причем, походу, всем семейством: http://www.opennet.ru/opennews/art.shtml?num=50861 Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
alibek Posted June 14, 2019 · Report post Э... Тут дело не в моих предпочтениях. СКАТ работает именно на этой версии. И кроме СКАТ на этом сервере ничего нет и не планируется, поэтому и резона никакого нет менять/обновлять ОС. Забирать и подписывать выгрузки РКН — это всякая попутная мелочь, которую логично запускать на сервере со СКАТом — ресурсов она практически не потребляет, зато все в одном месте. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
snvoronkov Posted June 14, 2019 · Report post 3 часа назад, alibek сказал: Забирать и подписывать выгрузки РКН — это всякая попутная мелочь, которую логично запускать на сервере со СКАТом — ресурсов она практически не потребляет, зато все в одном месте. Нет, нелогично. Ось старая, ядро со всеми накопленными дырами. Нафига на потенциальные неприятности напрашиваться? Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
alibek Posted June 14, 2019 · Report post Какие? СКАТ подключен в разрыв, он прозрачен и невидим на L2. У него вообще нет абонентских или каких других сервисов. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
Ivan_83 Posted June 14, 2019 · Report post 3 часа назад, alibek сказал: Какие? СКАТ подключен в разрыв, он прозрачен и невидим на L2. У него вообще нет абонентских или каких других сервисов. Те секса со сборкой опенссл вам показалось мало?) Посыл в том, что платформа не поддерживаемая, и сегодня у вас опенссл не собирается, завтра что то ещё. Тут либо всё переносить на актуальную версию либо вообще внутрь не лазить и делать подпорки на внешних серверах. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
bike Posted June 14, 2019 · Report post Трафик в СКАТ идёт с DNA интерфейсов через ZC драйвер полностью минуя систему. А хотелки прикрутить сбоку ещё что то, то тут уже - секас, причем, по моему, лишний в рамках СКАТа. Сорри за офтоп. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
snvoronkov Posted June 15, 2019 · Report post 8 часов назад, alibek сказал: и невидим на L2. Ага. А к источникам обновлений и, в вашем случае, выгрузкам он через подпространственный туннель телепатирует? Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
alibek Posted June 15, 2019 · Report post 5 часов назад, Ivan_83 сказал: Тут либо всё переносить на актуальную версию либо вообще внутрь не лазить и делать подпорки на внешних серверах В этом смысле да, знал бы заранее, может быть и не стал бы лезть. Но все же получилось, на год хватит, а что через год будет, ещё неизвестно. 13 минут назад, snvoronkov сказал: А к источникам обновлений и, в вашем случае, выгрузкам он через подпространственный туннель телепатирует? Это все же не абонентские сервисы, доступные извне. Это mgmt-интерфейс для управления, он может быть упрятан за NAT или прокси, входящие подключения на нем не нужны. Рабочие интерфейсы DNA и они прозрачны. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
snvoronkov Posted June 15, 2019 · Report post 1 час назад, alibek сказал: Это mgmt-интерфейс для управления, он может быть упрятан за NAT или прокси При некоторых ошибках ядра можно ронять сервер ACK пакетом... Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
hsvt Posted June 18, 2019 · Report post В 14.06.2019 в 14:55, alibek сказал: 4. Экспортируем ЭЦП в формате CryptoPro на флешку (получится каталог вида folder.000, внутри которого лежат части ключа). Это с помощью CSP экспорт делается или покупали новую P12fromCSP? Флешка имеется в виду обычная или рутокен? Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
alibek Posted June 18, 2019 · Report post С помощью CSP. Флешка обычная (не токен). Старая версия P12fromCSP новые ключи не поддерживает (вылетает при экспорте). Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
arhead Posted December 11, 2019 · Report post Не получается собрать gost-engine. Собрал OpenSSL из сорцов. Скрытый текст root@blackhole:/usr/src/openssl-1.1.1d# ./config --prefix=/usr/local/gost-ssl --openssldir=/usr/local/gost-ssl -Wl,-rpath,/whatever/path make make install Все собирается и работает root@blackhole:/usr/local/gost-ssl/bin# ./openssl version OpenSSL 1.1.1d 10 Sep 2019 root@blackhole:/usr/local/gost-ssl/bin# ./openssl engine (dynamic) Dynamic engine loading support root@blackhole:/usr/local/gost-ssl/bin# Но вот долбаный engine собираться не хочет. Скрытый текст root@blackhole:/usr/src/GOST/build# cmake -DOPENSSL_ROOT_DIR=/usr/local/gost-ssl/bin -DOPENSSL_LIBRARIES=/usr/local/gost-ssl/lib -DCMAKE_BUILD_TYPE=Release .. -- The C compiler identification is GNU 4.9.2 -- 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 CMake Error at /usr/share/cmake-3.0/Modules/FindPackageHandleStandardArgs.cmake:136 (message): Could NOT find OpenSSL, try to set the path to OpenSSL root folder in the system variable OPENSSL_ROOT_DIR: Found unsuitable version "1.0.1t", but required is at least "1.1.1" (found /usr/lib/x86_64-linux-gnu/libssl.so;/usr/lib/x86_64-linux-gnu/libcrypto.so) Call Stack (most recent call first): /usr/share/cmake-3.0/Modules/FindPackageHandleStandardArgs.cmake:341 (_FPHSA_FAILURE_MESSAGE) /usr/share/cmake-3.0/Modules/FindOpenSSL.cmake:318 (find_package_handle_standard_args) CMakeLists.txt:10 (find_package) -- Configuring incomplete, errors occurred! See also "/usr/src/GOST/build/CMakeFiles/CMakeOutput.log". Ведь указываю где OpenSSL но все равно тащит из системы. Подскажите насчет этого. Или ссыль на пакет дайте. Все перерыл не нашел. Система Debian 8.1 Linux blackhole 3.16.0-4-amd64 #1 SMP Debian 3.16.51-3 (2017-12-13) x86_64 GNU/Linux Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
alibek Posted December 11, 2019 · Report post https://forum.nag.ru/index.php?/topic/150051-sborka-openssl-s-podderzhkoy-gost-2012/&do=findComment&comment=1552175 Пункт 7 выполняли? Пункт 7 выполняли? Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
arhead Posted December 11, 2019 (edited) · Report post 11 минут назад, alibek сказал: https://forum.nag.ru/index.php?/topic/150051-sborka-openssl-s-podderzhkoy-gost-2012/&do=findComment&comment=1552175 Пункт 7 выполняли? Пункт 7 выполняли? Нет, а нужно для сборки engine glibc-2.14? Edited December 11, 2019 by arhead Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
alibek Posted December 11, 2019 · Report post Я смог запустить OpenSSL, только поменяв для него системные библиотеки (с которыми его собирал). Но если это делать глобально для системы, то система начинает работать нестабильно. Поэтому нужен враппер, который меняет LD_LIBRARY_PATH только для конкретного процесса. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...