朋友们,我有一张智能卡,我想集成OpenSSL。计划通过OpenSSL中的“引擎”系统来实现这一点。然而,我对理解有一个问题。事实上,有engine_pkcs11,opensc,libp11,pkcs11-helper这样的东西。有人能解释一下这段关系吗?什么是什么,首先要编译什么?
为我编写一个具有外部PKCS # 11函数的库以将其连接到openssl是否足够?我必须获取库engine_pkcs11的源代码,并修改它以适应我的卡?我需要这个opensc,libp11,pkcs11-helper吗?那么,为什么需要这些图书馆呢?
也应该注意到,智能卡不支持RSA算法,它将是另一种算法!
真的很期待你的回答!
发布于 2014-02-07 09:29:34
为了使openssl与智能卡之间通过pkcs#11通过pkcs#11进行交互,需要OpenSC为openssl提供openssl引擎。
该引擎是在libp11之上通过OpenSC构建的,这是一个抽象/包装层/接口,构建在pkcs#11标准API上,用于实用目的。
从上到下我们有:
因此,在最佳情况下,您只需为特定的智能卡硬件编写pkcs#11模块,然后使用pkcs#11引擎加载它。
这里的问题是pkcs#11引擎目前只支持CKM_RSA_PKCS,所以您可能还必须扩展当前的pkcs#11 openssl引擎。
发布于 2016-06-20 09:51:27
我补充了一些最新的信息,这些信息可以帮助那些陷入这个问题的用户。
发布于 2019-10-08 13:59:18
此外:
这里是对windows用户的描述
在windows上,需要自己编译engine_pkcs11.dll。它将不再由OpenSC安装程序交付。
这里的说明:https://github.com/OpenSC/libp11/blob/master/INSTALL.md
确保将OpenSSL 64位版本安装到C:\OpenSSL 64
从-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设备。
https://stackoverflow.com/questions/19456555
复制相似问题