Openssl, engine_pkcs11, libp11 / OpenSC

Друзья, у меня есть смарт-карта, в которую я хочу интегрировать OpenSSL. Планирую сделать это через систему «ДВИГАТЕЛЬ» в OpenSSL. Однако у меня проблемы с пониманием. Дело в том, что есть такие вещи, как engine_pkcs11, opensc, libp11, pkcs11-helper. Кто-нибудь может объяснить отношения? Что есть и что компилировать в первую очередь?

Достаточно ли написать мне библиотеку с внешними функциями PKCS # 11, чтобы подключить ее к openssl? Мне нужно взять исходный код библиотеки engine_pkcs11 и изменить его, чтобы он соответствовал моей карте? Мне нужно это opensc, libp11, pkcs11-helper? Зачем тогда нужны эти библиотеки?

Также отмечу, что смарт-карта не поддерживает RSA-алгоритм, это будет другой алгоритм !!!!

Очень жду ваших ответов!


person user1650740    schedule 18.10.2013    source источник


Ответы (3)


Движок openssl для pkcs # 11 от OpenSC необходим для обеспечения взаимодействия между openssl и смарт-картой посредством pkcs # 11.

Движок построен на основе libp11 с помощью OpenSC, уровня / интерфейса абстракции / оболочки, построенного на стандартном API pkcs # 11 для служебных целей.

Сверху вниз имеем:

  • openssl (от Openssl)
  • Движок openssl pkcs # 11 (от OpenSC)
  • libp11 (от OpenSC)
  • pkcs # 11 стандартный api (от RSA Laboratories)
  • Модуль pkcs # 11 (от производителя смарт-карт)

Таким образом, в оптимальном случае вам нужно только написать модуль pkcs # 11 для конкретного оборудования смарт-карты, а затем загрузить его с помощью механизма pkcs # 11.

Проблема здесь в том, что движок pkcs # 11 на данный момент поддерживает только CKM_RSA_PKCS, поэтому, вероятно, вам также придется расширить текущий движок openssl pkcs # 11.

Дополнительная информация на https://github.com/OpenSC/OpenSC/wiki.

person lgaggini    schedule 07.02.2014

Я добавляю свежую информацию, которая может помочь пользователям, которые задаются этим вопросом.

  • opensc-pkcs11.so - это модуль OpenSC для реализации API PKCS # 11. Он подписан libopensc.so и другими библиотеками OpenSC.

  • libp11 - это вспомогательная библиотека, разработанная для упрощения использования PKCS # 11 в приложениях без необходимости программирования для PKCS # 11 API. Он откроет модуль pkcs # 11.

  • engine_pkcs11 был модулем движка OpenSSL, который использовал libp11, он был настолько зависим от версий OpenSSL и libp11, что теперь включен в libp11, поскольку libp11 также можно использовать в качестве движка.

  • pkcs11-helper (которую я никогда не использовал) - еще одна библиотека, которая упрощает использование PKCS # 11.

  • pkcs11-spy - это модуль API PKCS # 11, который отслеживает все вызовы и возвраты другого модуля PKCS # 11, который открывается pkcs11-spy.

Для получения дополнительной информации

person SyedElec    schedule 20.06.2016

И вдобавок:

Вот описание для пользователей Windows

В Windows необходимо самостоятельно скомпилировать engine_pkcs11.dll. Он больше не будет доставляться установщиком OpenSC.

Инструкции здесь: https://github.com/OpenSC/libp11/blob/master/INSTALL.md

Убедитесь, что вы установили 64-битную версию OpenSSL в C: \ OpenSSL-Win64.

загрузить последнюю версию из - https://github.com/OpenSC/libp11/releases) compile с собственной командной строкой x64 для Visual Studio с

nmake -f Makefile.mak OPENSSL_DIR=C:\OpenSSL-Win64 BUILD_FOR=WIN64

Тогда у вас есть pkcs11.dll. Скопируйте это и opensc-pkcs11.dll в каталог (без пробелов в именах). И теперь OpenSSL может загружать библиотеки DLL.

engine dynamic -pre ID:pkcs11 -pre SO_PATH:C:\Tools\pkcs11\pkcs11.dll -pre LIST_ADD:1 -pre LOAD -pre MODULE_PATH:C:\Tools\pkcs11\opensc-pkcs11.dll

Теперь вы можете использовать свое устройство OpenSC.

person Markus    schedule 08.10.2019