朋友们,我有一张智能卡,我想整合OpenSSL。计划通过OpenSSL中的“ENGINE”系统执行此操作。但是,我有一个理解的问题。事实上存在engine_pkcs11
,opensc
,libp11
,pkcs11-helper
等内容。有谁可以解释这种关系?首先是什么和什么编译?
写一个带有外部PKCS#11函数的库来将它连接到openssl是否足够?我必须获取库engine_pkcs11
的源代码并修改它以适合我的卡?
我需要opensc
,libp11
,pkcs11-helper
吗?那么,为什么需要这些库?
另外,我应该注意智能卡不支持RSA算法,它将是一个不同的算法 !!!!
真的很期待你的回答!
答案 0 :(得分:7)
OpenSC的11号pkcs引擎的openssl引擎需要通过pkcs#11在openssl和smartcard之间进行交互。
引擎构建于libp11之上,由OpenSC构建,这是一个抽象/包装层/接口,基于pkcs#11标准API构建,用于实用。
从上到下我们有:
因此,在最佳情况下,您只需为特定的智能卡硬件编写pkcs#11模块,然后使用pkcs#11引擎加载它。
问题在于pkcs#11引擎目前仅支持CKM_RSA_PKCS,因此,您可能还要扩展当前的pkcs#11 openssl引擎。
的更多信息答案 1 :(得分:1)
我添加了一些最新信息,可以帮助那些属于这个问题的用户。
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也可以用作引擎。
< / LI>pkcs11-helper(我从未使用过)是使用PKCS#11“更容易”使用的另一个库。
pkcs11-spy是一个PKCS#11 API模块,它跟踪pkcs11-spy dlopens的另一个PKCS#11模块的所有调用和返回。
答案 2 :(得分:0)
此外:
此处是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设备了。