Движок PKCS#11 для openSSL
Я пытаюсь настроить openSSL под Windows 7, чтобы использовать модуль безопасности конкретного поставщика.
От поставщика я получил dll API PKCS#11 (скажем, vendor.dll). Механизм PKCS#11 был создан в соответствии с https://github.com/OpenSC/libp11
Как описано в ссылке, для тестирования я запускаю
двигатель openssl pkcs11 -t
но получите:
D:\Gateway\openSSL\Win32\Release>openssl engine pkcs11 -t
11020:error:25078067:DSO support routines:WIN32_LOAD:could not load the shared library:.\crypto\dso\dso_win32.c:179:filename(\usr\local\ssl\lib\engines\pkcs11.dll)
11020:error:25070067:DSO support routines:DSO_load:could not load the shared library:.\crypto\dso\dso_lib.c:233:
11020:error:260B6084:engine routines:DYNAMIC_LOAD:dso not found:.\crypto\engine\eng_dyn.c:467:
11020:error:2606A074:engine routines:ENGINE_by_id:no such engine:.\crypto\engine\eng_list.c:390:id=pkcs11
Файл конфигурации:
[engine_section]
pkcs11 = pkcs11_section
[pkcs11_section]
engine_id = pkcs11
dynamic_path = D:\Gateway\libp11\libp11-master\src\pkcs11.dll
MODULE_PATH = D:\Gateway\driver\smgw\Win32\vendor.dll
init = 0
Он пытается найти dll в каталоге unix \usr\local... Кажется, что содержимое динамического пути вообще не оценивается, потому что я могу указать что угодно, я всегда получаю сообщение об ошибке выше.
Что я делаю неправильно?
1 ответ
Перед другими записями в конфигурационном файле вам необходимо:
[openssl_def]
engines = engine_section
С другой стороны, следующие строки не нужны:
engine_id = pkcs11
init = 0
Также проверьте (используя, например, ldd
) что библиотеки, на которые вы ссылаетесь, действительно могут быть загружены. Если библиотека, от которой они зависят, не может быть найдена, динамический загрузчик завершится с ошибкой, а затем попытается использовать пути к библиотекам по умолчанию, такие как
/usr/local/ssl/lib/engines/<engine-id>.dll