【问题标题】:Openssl, engine_pkcs11, libp11/OpenSCOpenssl、engine_pkcs11、libp11/OpenSC
【发布时间】:2019-10-08 21:59:18
【问题描述】:

朋友,我有一张智能卡,我想集成 OpenSSL。计划通过 OpenSSL 中的“ENGINE”系统来实现。但是,我的理解有问题。事实上,有engine_pkcs11opensclibp11pkcs11-helper 这样的东西。谁能解释一下关系?首先要编译什么以及要编译什么?

给我写一个带有外部 PKCS #11 函数的库来连接到 openssl 就足够了吗?我必须获取库engine_pkcs11 的源代码并修改它以适合我的卡? 我需要这个opensclibp11pkcs11-helper吗?那么,为什么需要这些库呢?

另外,我应该注意智能卡不支持 RSA 算法,这将是一个不同的算法!!!!

真的很期待你的回答!

【问题讨论】:

    标签: openssl pkcs#11 opensc


    【解决方案1】:

    需要 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

    【讨论】:

      【解决方案2】:

      我添加了一些最新信息,可以帮助遇到此问题的用户。

      • 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 模块的所有调用和返回。

      For more information

      【讨论】:

        【解决方案3】:

        此外:

        这里是针对 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下载最新版本) 使用 Visual Studio 的 x64 本机命令提示符编译

        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 设备了。

        【讨论】:

          猜你喜欢
          • 2021-12-07
          • 2012-01-28
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2017-02-26
          相关资源
          最近更新 更多