如何使用 pkcs11-tool 创建插槽?
How can I create a slot using the pkcs11-tool?
我正在尝试在我的应用程序中使用 pkcs11 来访问智能卡。这是 'list-slots' 命令的输出 -
root@penguin:~/src/tools$ pkcs11-tool -L
Available slots:
Slot 0 (0xffffffffffffffff): Virtual hotplug slot
(empty)
我有两个问题
我怎样才能模拟一张假卡,让 Slot 0 有一个 token/device 我可以访问。
我可以创建额外的插槽并向其中添加 tokens/devices 吗?
如果没有,我该怎么做才能将 token/device 添加到可用的插槽 0?
您需要 "module," 一个与特定智能卡接口的动态加载库。如果您的智能卡与 OpenSC 一起工作(例如,PIV 模式下的 Yubikey),您将使用 OpenSC 模块,该模块通常在 Linux 系统上位于 /usr/lib/x86_64-linux-gnu/opensc-pkcs11.so
,或在 /Library/OpenSC/lib/opensc-pkcs11.dylib
macOS 系统。如果您没有物理智能卡并且只想使用 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
如果您使用的是硬件智能卡,通常会有一组固定的插槽。
我试过上面的方法,但它显示没有可用的插槽,即使有插槽。
Available slots:
Slot 0 (0x239d88a): SoftHSM slot ID 0x239d88a
token label : my_token
token manufacturer : SoftHSM project
token model : SoftHSM v2
token flags : login required, rng, token initialized, other flags=0x20
hardware version : 2.2
firmware version : 2.2
serial num : fd57c0a78239d88a
pin min/max : 4/255
Slot 1 (0x25a0a789): SoftHSM slot ID 0x25a0a789
token label : Test
token manufacturer : SoftHSM project
token model : SoftHSM v2
token flags : login required, rng, token initialized, PIN initialized, other flags=0x20
hardware version : 2.2
firmware version : 2.2
serial num : 5c1db319a5a0a789
pin min/max : 4/255
Slot 2 (0x2): SoftHSM slot ID 0x2
token state: uninitialized
root@ip-172-31-3-199:/usr/lib/x86_64-linux-gnu/softhsm#
total 48
drwxr-xr-x 4 root root 4096 May 25 15:01 ./
drwxr-xr-x 29 root root 32768 May 25 12:37 ../
drwx------ 2 root root 4096 May 17 15:22 9dd60893-4135-947d-fd57-c0a78239d88a/
drwx------ 2 root root 4096 May 17 14:41 df7b71db-c341-4525-5c1d-b319a5a0a789/
lrwxrwxrwx 1 root root 31 May 25 15:01 libsofthsm2.so -> /usr/lib/softhsm/libsofthsm2.so
lrwxrwxrwx 1 root root 26 May 17 14:40 softhsm2.conf -> /etc/softhsm/softhsm2.conf
我正在尝试在我的应用程序中使用 pkcs11 来访问智能卡。这是 'list-slots' 命令的输出 -
root@penguin:~/src/tools$ pkcs11-tool -L
Available slots:
Slot 0 (0xffffffffffffffff): Virtual hotplug slot
(empty)
我有两个问题
我怎样才能模拟一张假卡,让 Slot 0 有一个 token/device 我可以访问。
我可以创建额外的插槽并向其中添加 tokens/devices 吗?
如果没有,我该怎么做才能将 token/device 添加到可用的插槽 0?
您需要 "module," 一个与特定智能卡接口的动态加载库。如果您的智能卡与 OpenSC 一起工作(例如,PIV 模式下的 Yubikey),您将使用 OpenSC 模块,该模块通常在 Linux 系统上位于 /usr/lib/x86_64-linux-gnu/opensc-pkcs11.so
,或在 /Library/OpenSC/lib/opensc-pkcs11.dylib
macOS 系统。如果您没有物理智能卡并且只想使用 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
如果您使用的是硬件智能卡,通常会有一组固定的插槽。
我试过上面的方法,但它显示没有可用的插槽,即使有插槽。
Available slots:
Slot 0 (0x239d88a): SoftHSM slot ID 0x239d88a
token label : my_token
token manufacturer : SoftHSM project
token model : SoftHSM v2
token flags : login required, rng, token initialized, other flags=0x20
hardware version : 2.2
firmware version : 2.2
serial num : fd57c0a78239d88a
pin min/max : 4/255
Slot 1 (0x25a0a789): SoftHSM slot ID 0x25a0a789
token label : Test
token manufacturer : SoftHSM project
token model : SoftHSM v2
token flags : login required, rng, token initialized, PIN initialized, other flags=0x20
hardware version : 2.2
firmware version : 2.2
serial num : 5c1db319a5a0a789
pin min/max : 4/255
Slot 2 (0x2): SoftHSM slot ID 0x2
token state: uninitialized
root@ip-172-31-3-199:/usr/lib/x86_64-linux-gnu/softhsm#
total 48
drwxr-xr-x 4 root root 4096 May 25 15:01 ./
drwxr-xr-x 29 root root 32768 May 25 12:37 ../
drwx------ 2 root root 4096 May 17 15:22 9dd60893-4135-947d-fd57-c0a78239d88a/
drwx------ 2 root root 4096 May 17 14:41 df7b71db-c341-4525-5c1d-b319a5a0a789/
lrwxrwxrwx 1 root root 31 May 25 15:01 libsofthsm2.so -> /usr/lib/softhsm/libsofthsm2.so
lrwxrwxrwx 1 root root 26 May 17 14:40 softhsm2.conf -> /etc/softhsm/softhsm2.conf