特定のスマートカードとインターフェイスするダイナミックに読み込まれたライブラリである「モジュール」が必要です。あなたのスマートカードが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を少し構成する必要があります。 SoftHSMモジュールは、Linuxシステムでは通常/usr/lib/x86_64-linux-gnu/softhsm/libsofthsm2.so
です。それぞれの実行で--module
を指定し、pkcs11-tool
を指定する必要があります。ここで
設定および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は、デフォルトでは1つのスロットを持っています。最初のスロットでトークンを初期化すると、自動的に2番目のスロットが追加されます。
$ 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 – ksoop
あなたが言及しました - あなたがそれを使用する前にSoftHSMを少し必要なスロットを作成するために少し構成する必要があります - それをするためのステップは何ですか? – ksoop
興味深いことに私が - softhsm2-util --show-slotsを使用すると、スロットが表示されます。しかし、pkcs11-tool -L --module /usr/lib/softhsm/libsofthsm.soではそうではありません。何故ですか ? – ksoop