Cryptography 如何使用pkcs11工具创建插槽?

Cryptography 如何使用pkcs11工具创建插槽?,cryptography,pkcs#11,Cryptography,Pkcs#11,我正在尝试在我的应用程序中使用pkcs11来访问智能卡。以下是“列表插槽”命令的输出- root@penguin:~/src/tools$ pkcs11-tool -L Available slots: Slot 0 (0xffffffffffffffff): Virtual hotplug slot (empty) 我有两个问题 如何模拟假卡,使插槽0中有一个令牌/设备,我可以访问 我可以创建其他插槽并向其中添加令牌/设备吗 如果没有,我可以如何将令牌/设备添加到可用插槽0?您需要一个“

我正在尝试在我的应用程序中使用pkcs11来访问智能卡。以下是“列表插槽”命令的输出-

root@penguin:~/src/tools$ pkcs11-tool -L
Available slots:
Slot 0 (0xffffffffffffffff): Virtual hotplug slot
  (empty)
我有两个问题

  • 如何模拟假卡,使插槽0中有一个令牌/设备,我可以访问

  • 我可以创建其他插槽并向其中添加令牌/设备吗

  • 如果没有,我可以如何将令牌/设备添加到可用插槽0?

    您需要一个“模块”,一个与特定智能卡交互的动态加载库。如果您的智能卡与OpenSC(例如,PIV模式下的Yubikey)配合使用,您将使用OpenSC模块,它通常位于linux系统上的
    /usr/lib/x86_64-linux-gnu/OpenSC-pkcs11.so
    ,或者macOS系统上的
    /Library/OpenSC/lib/OpenSC-pkcs11.dylib
    。如果您没有物理智能卡,只想使用PKCS#11 API,您可以安装并使用它,它在软件中模拟PKCS#11设备。在使用SoftHSM之前,需要对其进行一点配置,以创建必要的插槽。SoftHSM模块通常位于linux系统上的
    /usr/lib/x86_64-linux-gnu/SoftHSM/libsofthsm2。每次执行
    pkcs11工具时,都需要指定
    --module

    以下是如何设置和使用SoftHSMv2的示例:

    mkdir softhsm
    cd softhsm
    echo "directories.tokendir = $PWD/" > softhsm2.conf
    export SOFTHSM2_CONF=$PWD/softhsm2.conf
    pkcs11-tool -L --module /usr/lib/x86_64-linux-gnu/softhsm/libsofthsm2.so
    
    默认情况下,SoftHSMv2将有一个插槽。在第一个插槽中初始化令牌后,它将自动添加第二个插槽,依此类推

    $ pkcs11-tool  --module /usr/lib/x86_64-linux-gnu/softhsm/libsofthsm2.so -L
    Available slots:
    Slot 0 (0x0): SoftHSM slot 0
      token state:   uninitialized
    $ pkcs11-tool  --module /usr/lib/x86_64-linux-gnu/softhsm/libsofthsm2.so --init-token --label my_token
    Using slot 0 with a present token (0x0)
    Please enter the new SO PIN: 
    Please enter the new SO PIN (again): 
    Token successfully initialized
    membrane:~ $ pkcs11-tool  --module /usr/lib/x86_64-linux-gnu/softhsm/libsofthsm2.so -L
    Available slots:
    Slot 0 (0x0): SoftHSM slot 0
      token label        : my_token
      token manufacturer : SoftHSM project
      token model        : SoftHSM v2
      token flags        : rng, login required, token initialized, other flags=0x20
      hardware version   : 2.0
      firmware version   : 2.0
      serial num         : 5bed215e0df0d1f1
    Slot 1 (0x1): SoftHSM slot 1
      token state:   uninitialized
    

    如果您使用的是硬件智能卡,通常您会有一组固定的插槽。

    我尝试安装SoftHSM,但认为没有帮助,因为我看到了相同的输出(没有可用的插槽) : root@penguin:~/src/tools$pkcs11 tool-L--module/usr/lib/softhsm/libsofthsm.so可用插槽:没有空位@jshaYou提到-在使用SoftHSM之前,您需要稍微配置一下它,以创建必要的插槽-执行此操作的步骤是什么?有趣的是,如果我使用-softhsm2 util--show slots,我会看到插槽。但不能使用pkcs11工具-L--module/usr/lib/softhsm/libsofthsm.so。这是为什么?设置softhsm的说明在上面的“下面是一个如何设置和使用SoftHSMv2的示例”下。我不确定为什么你看不到pkcs11工具的插槽;这对我有用!您确定为pkcs11工具提供了正确的模块路径吗?您是否在这两种情况下都正确导出了SOFTHSM2_CONF环境变量?