【问题标题】:How can I create a slot using the pkcs11-tool?如何使用 pkcs11-tool 创建插槽?
【发布时间】:2017-11-28 00:19:35
【问题描述】:

我正在尝试在我的应用程序中使用 pkcs11 来访问智能卡。这是“list-slots”命令的输出 -

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

我有两个问题

  1. 如何模拟一张假卡,以便插槽 0 中有一个我可以访问的令牌/设备。

  2. 我可以创建额外的插槽并向其中添加令牌/设备吗?

如果没有,我该怎么做才能将令牌/设备添加到可用的 Slot 0 中?

【问题讨论】:

    标签: cryptography pkcs#11


    【解决方案1】:

    您需要一个“模块”,一个与特定智能卡接口的动态加载库。如果您的智能卡与 OpenSC 配合使用(例如,处于 PIV 模式的 Yubikey),您将使用 OpenSC 模块,该模块通常位于 Linux 系统上的 /usr/lib/x86_64-linux-gnu/opensc-pkcs11.so 或 macOS 系统上的 /Library/OpenSC/lib/opensc-pkcs11.dylib。如果您没有物理智能卡并且只想使用 PKCS#11 API,您可以安装和使用SoftHSM,它在软件中模拟 PKCS#11 设备。您需要在使用 SoftHSM 之前对其进行一些配置,以创建必要的插槽。 SoftHSM 模块在 Linux 系统上通常位于 /usr/lib/x86_64-linux-gnu/softhsm/libsofthsm2.so。您需要在每次执行pkcs11-tool 时指定--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 可用插槽:无插槽。 - @jsha
    • 您提到 - 您需要在使用 SoftHSM 之前对其进行一些配置,以创建必要的插槽 - 执行此操作的步骤是什么?
    • 有趣的是,如果我使用 - softhsm2-util --show-slots,我会看到插槽。但不适用于 pkcs11-tool -L --module /usr/lib/softhsm/libsofthsm.so。为什么会这样?
    • 设置 softhsm 的说明在上面的“这里是如何设置和使用 SoftHSMv2 的示例”下。我不确定为什么您看不到带有 pkcs11-tool 的插槽;这个对我有用!您确定为 pkcs11-tool 提供正确的模块路径吗?您是否在这两种情况下都正确导出了 SOFTHSM2_CONF 环境变量?
    猜你喜欢
    • 1970-01-01
    • 2023-02-22
    • 1970-01-01
    • 2021-07-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-03
    相关资源
    最近更新 更多