9

Friends, I have a smart card, which I want to integrate OpenSSL. Plan to do this through a system of "ENGINE" in OpenSSL. However, I have a problem with understanding. The fact that there are such things as engine_pkcs11, opensc, libp11, pkcs11-helper. Can anyone explain the relationship? What is and what to compile in the first place?

Is it enough to write me a library with external PKCS # 11 functions to connect it to openssl? I have to take the source code of the library engine_pkcs11 and modify it to fit my card? Do I need this opensc, libp11, pkcs11-helper? Why, then, need these libraries?

Also, I should note that the smart card does not support RSA-algorithm, it will be a different algorithm!!!!

Really looking forward to your answers!

4

3 回答 3

8

需要 OpenSC 的 pkcs#11 的 openssl 引擎才能使 pkcs#11 的 openssl 和智能卡之间的交互成为可能。

该引擎由 OpenSC 构建在 libp11 之上,这是一个抽象/包装层/接口,基于 pkcs#11 标准 API 构建以用于实用目的。

从上到下,我们有:

  • openssl(由 Openssl 提供)
  • openssl pkcs#11 引擎(由 OpenSC 提供)
  • libp11(由 OpenSC 提供)
  • pkcs#11 标准 api(由 RSA 实验室提供)
  • pkcs#11 模块(由智能卡供应商提供)

因此,在最佳情况下,您只需为特定的智能卡硬件编写 pkcs#11 模块,然后使用 pkcs#11 引擎加载它。

这里的问题是 pkcs#11 引擎目前仅支持 CKM_RSA_PKCS,因此,您可能还必须扩展当前的 pkcs#11 openssl 引擎。

更多信息请访问https://github.com/OpenSC/OpenSC/wiki

于 2014-02-07T09:29:34.643 回答
3

我添加了一些最近的信息,可以帮助陷入这个问题的用户。

  • opensc-pkcs11.so 是实现 PKCS#11 API 的 OpenSC 模块。它与 libopensc.so 和其他 OpenSC 库一起着墨。

  • libp11 是一个帮助程序库,旨在使在应用程序中更轻松地使用 PKCS#11,而无需对 PKCS#11 API 进行编程。它将打开一个 pkcs#11 模块。

  • engine_pkcs11 是一个使用 libp11 的 OpenSSL 引擎模块,它非常依赖于 OpenSSL 和 libp11 的版本,因此它现在包含在 libp11 中,因为 libp11 也可以用作引擎。

  • pkcs11-helper(我从未使用过)是另一个使用 PKCS#11“更容易”使用的库。

  • pkcs11-spy 是一个 PKCS#11 API 模块,它跟踪 pkcs11-spy dlopen 的另一个 PKCS#11 模块的所有调用和返回。

了解更多信息

于 2016-06-20T09:51:27.793 回答
1

此外:

这里是windows用户的描述

windows下需要自己编译engine_pkcs11.dll。OpenSC 安装程序将不再提供它。

此处的说明: https ://github.com/OpenSC/libp11/blob/master/INSTALL.md

确保将 OpenSSL 64 位版本安装到 C:\OpenSSL-Win64

从 - https://github.com/OpenSC/libp11/releases下载最新版本)使用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 设备了。

于 2019-10-08T13:59:18.650 回答