При инициализации openssl engine c библиотекой pkcs11.so в версии openssl 1.1.1n происходит ошибка. Соответственно openssl не может работать с аппаратными токенами. Ошибка воспроизводится на след. версии openssl: $ rpm -q openssl openssl-1.1.1n-alt1.x86_64 $ openssl engine dynamic -pre SO_PATH:/usr/lib64/openssl/engines-1.1/pkcs11.so -pre ID:pkcs11 -pre LIST_ADD:1 -pre LOAD -pre MODULE_PATH:/usr/lib64/pkcs11/librtpkcs11ecp.so (dynamic) Dynamic engine loading support [Success]: SO_PATH:/usr/lib64/openssl/engines-1.1/pkcs11.so [Success]: ID:pkcs11 [Success]: LIST_ADD:1 [Success]: LOAD [Success]: MODULE_PATH:/usr/lib64/pkcs11/librtpkcs11ecp.so Loaded: (pkcs11) pkcs11 engine 139850181737984:error:2506406A:DSO support routines:dlfcn_bind_func:could not bind to the requested symbol name:crypto/dso/dso_dlfcn.c:188:symname(EVP_PKEY_get_base_id): /usr/lib64/openssl/engines-1.1/pkcs11.so: undefined symbol: EVP_PKEY_get_base_id 139850181737984:error:2506C06A:DSO support routines:DSO_bind_func:could not bind to the requested symbol name:crypto/dso/dso_lib.c:186: Как должно быть и как работает на предыдущей версии: $ rpm -q openssl openssl-1.1.1l-alt1.x86_64 $ openssl engine dynamic -pre SO_PATH:/usr/lib64/openssl/engines-1.1/pkcs11.so -pre ID:pkcs11 -pre LIST_ADD:1 -pre LOAD -pre MODULE_PATH:/usr/lib64/pkcs11/librtpkcs11ecp.so (dynamic) Dynamic engine loading support [Success]: SO_PATH:/usr/lib64/openssl/engines-1.1/pkcs11.so [Success]: ID:pkcs11 [Success]: LIST_ADD:1 [Success]: LOAD [Success]: MODULE_PATH:/usr/lib64/pkcs11/librtpkcs11ecp.so Loaded: (pkcs11) pkcs11 engine Смотрим доступные engine: $ openssl engine -t (dynamic) Dynamic engine loading support [ unavailable ] (pkcs11) pkcs11 engine [ available ] Смотрим доступные протоколы для engine pkcs11: $ openssl engine pkcs11 -c (pkcs11) pkcs11 engine [RSA, rsaEncryption, id-ecPublicKey]
Скорее блокер, т.к. из-за этой регрессии отвалились все токены, не получится проверить доменную и локальную 2ФА при выпуске K-10.
Проверьте, пожалуйста задание: #297394 TESTED #1 [test-only] sisyphus openssl.git=1.1.1n-alt2
$ apt-repo rpm [alt] http://ftp.altlinux.org/pub/distributions ALTLinux/Sisyphus/x86_64 classic rpm [alt] http://ftp.altlinux.org/pub/distributions ALTLinux/Sisyphus/noarch classic rpm [alt] http://ftp.altlinux.org/pub/distributions ALTLinux/Sisyphus/x86_64-i586 classic $ rpm -q openssl openssl-1.1.1n-alt2.x86_64 Если engine инициализировать из командной строки: $ openssl engine dynamic -pre SO_PATH:/usr/lib64/openssl/engines-1.1/pkcs11.so -pre ID:pkcs11 -pre LIST_ADD:1 -pre LOAD -pre MODULE_PATH:/usr/lib64/pkcs11/librtpkcs11ecp.so (dynamic) Dynamic engine loading support [Success]: SO_PATH:/usr/lib64/openssl/engines-1.1/pkcs11.so [Success]: ID:pkcs11 [Success]: LIST_ADD:1 [Success]: LOAD [Success]: MODULE_PATH:/usr/lib64/pkcs11/librtpkcs11ecp.so Loaded: (pkcs11) pkcs11 engine Вроде бы загружает, но $ openssl engine -t (dynamic) Dynamic engine loading support [ unavailable ] говорит что нет доступного engine Если engine инициализировать явно, через конфиг openssl (как здесь указано https://github.com/OpenSC/libp11): в начало /etc/openssl/openssl.cnf добавляем openssl_conf = openssl_def в конец /etc/openssl/openssl.cnf добавляем [ openssl_def ] engines = engine_section [ engine_section ] pkcs11 = pkcs11_section [ pkcs11_section ] dynamic_path = /usr/lib64/openssl/engines-1.1/pkcs11.so MODULE_PATH = /usr/lib64/pkcs11/librtpkcs11ecp.so то: $ openssl engine -t (dynamic) Dynamic engine loading support [ unavailable ] (pkcs11) pkcs11 engine [ available ] $ openssl engine pkcs11 -c (pkcs11) pkcs11 engine [RSA, rsaEncryption, id-ecPublicKey] Нормально. Бывало и раньше сталкивался с тем, что из командной строки engine не инициализируется, а через конфиг нормально. Но правда тогда в командной строки была ошибка. В данном случае "говорит" что загрузил, но по итогу - нет. Возможно особенность Сизифа.
А если в конец первой команды openssl добавить опцию -t?
Или вторым аргументом: $ openssl engine -t dynamic \ -pre SO_PATH:/usr/lib64/openssl/engines-1.1/pkcs11.so \ -pre ID:pkcs11 -pre LIST_ADD:1 \ -pre LOAD -pre MODULE_PATH:/usr/lib64/pkcs11/librtpkcs11ecp.so
$ openssl engine -t pkcs11 -pre SO_PATH:/usr/lib64/openssl/engines-1.1/pkcs11.so \ -pre ID:pkcs11 -pre LIST_ADD:1 -pre LOAD \ -pre MODULE_PATH:/usr/lib64/pkcs11/librtpkcs11ecp.so engine: Cannot mix flags and engine names. engine: Use -help for summary. -t - тестирует доступные engine
Коллеги, перепроверил свое первое сообщение, где я писал "Как должно быть и как работает на предыдущей версии". Так вот вывод: $ openssl engine -t (dynamic) Dynamic engine loading support [ unavailable ] (pkcs11) pkcs11 engine [ available ] был при прописанном engine в openssl. При инициализации через командную строку на ВМ, где "Как должно быть", без прописывания в конфиге openssl - вывод такой же как и в #297394, т.е. [ unavailable ] На c9f1, где openssl-1.1.1l-alt1.x86_64, также не инициализируется через ком.строку: # rpm -q openssl openssl-1.1.1l-alt1.x86_64 # openssl engine dynamic -pre SO_PATH:/usr/lib64/openssl/engines-1.1/pkcs11.so -pre ID:pkcs11 -pre LIST_ADD:1 -pre LOAD -pre MODULE_PATH:/usr/lib64/librtpkcs11ecp.so (dynamic) Dynamic engine loading support [Success]: SO_PATH:/usr/lib64/openssl/engines-1.1/pkcs11.so [Success]: ID:pkcs11 [Success]: LIST_ADD:1 [Success]: LOAD [Success]: MODULE_PATH:/usr/lib64/librtpkcs11ecp.so Loaded: (pkcs11) pkcs11 engine alt8sp-vm344 ~ # openssl engine -t (dynamic) Dynamic engine loading support [ unavailable ] Похоже, что инициализация через командную строку поломана когда-то раньше.
Мне кажется, у вас какие-то ложные ожидания. (In reply to Белаш Константин from comment #7) > # openssl engine dynamic -pre > SO_PATH:/usr/lib64/openssl/engines-1.1/pkcs11.so -pre ID:pkcs11 -pre > LIST_ADD:1 -pre LOAD -pre MODULE_PATH:/usr/lib64/librtpkcs11ecp.so > (dynamic) Dynamic engine loading support > [Success]: SO_PATH:/usr/lib64/openssl/engines-1.1/pkcs11.so > [Success]: ID:pkcs11 > [Success]: LIST_ADD:1 > [Success]: LOAD > [Success]: MODULE_PATH:/usr/lib64/librtpkcs11ecp.so > Loaded: (pkcs11) pkcs11 engine Эта команда загружает указанный в командной строке модуль, но на конфигурацию это ни коим образом не влияет. В данном случае это просто позволяет проверить, что конкретный модуль можно загрузить. > # openssl engine -t > (dynamic) Dynamic engine loading support > [ unavailable ] Предыдущая команда на вывод этой команды не влияет совсем.
Но давайте, пожалуйста вернёмся к основной теме этой ошибки. Я хотел бы получить ответ на вопрос -- исправляет ли openssl 1.1.1n-alt2 изначальную регрессию.
(Ответ для Gleb F-Malinovskiy на комментарий #9) > Я хотел бы получить ответ на вопрос -- исправляет ли openssl 1.1.1n-alt2 > изначальную регрессию. Я считаю, что исправляет, т.к. и через командную строку engine подгружается, и через конфиг. Нужно отправлять тестировщикам. Давай, дождёмся ответа Константина.
(Ответ для Gleb F-Malinovskiy на комментарий #8) > Мне кажется, у вас какие-то ложные ожидания. Возможно я ошибаюсь. > Эта команда загружает указанный в командной строке модуль, но на > конфигурацию это ни коим образом не влияет. В данном случае это просто > позволяет проверить, что конкретный модуль можно загрузить. После использования openssl из задания #297394 след. команда: $ openssl engine dynamic -pre SO_PATH:/usr/lib64/openssl/engines-1.1/pkcs11.so \ -pre ID:pkcs11 -pre LIST_ADD:1 -pre LOAD \ -pre MODULE_PATH:/usr/lib64/pkcs11/librtpkcs11ecp.so выполняется без ошибок. Инициализация openssl engine в конфигурационном файле также происходит без ошибок. Видимо, проблема решена. Спасибо.
openssl1.1-1.1.1n-alt2 -> sisyphus: Mon Mar 28 2022 Gleb F-Malinovskiy <glebfm@altlinux> 1.1.1n-alt2 - Backported upstream fix for engine version check (ALT#42274).