SoftHSMv2¶
SoftHSM je softwarový kryptografický úložiště přístupné prostřednictvím rozhraní PKCS#11.
Je emulátorem hardwarového bezpečnostního modulu (HSM), který běží na hlavním CPU.
TeskaLabs SeaCat PKI podporuje SoftHSMv2.
Více na: http://www.softhsm.org
Tip
SoftHSMv2 je k dispozici v TeskaLabs SeaCat PKI kontejnerovém obraze.
Příprava SoftHSM2¶
1) Připravte konfigurační soubor SoftHSM2
softhsm2.conf
:
directories.tokendir = ...softhsm/tokens/
objectstore.backend = file
log.level = INFO
Note
directories.tokendir
je umístění, kde SoftHSM2 ukládá soukromé klíče a další objekty.
2) Specifikujte umístění konfiguračního souboru SoftHSM2
export SOFTHSM2_CONF=.../softhsm2.conf
Note
Proměnná prostředí SOFTHSM2_CONF
musí být nastavena také pro runtime mikroservisu TeskaLabs SeaCat PKI.
3) Inicializujte token
% softhsm2-util --init-token --free --label "MySoftHSMToken"
Slot 0 má volný/neinicializovaný token.
=== SO PIN (4-255 znaků) ===
Zadejte SO PIN: ********
Znovu zadejte SO PIN: ********
=== Uživatelský PIN (4-255 znaků) ===
Zadejte uživatelský PIN: ******
Znovu zadejte uživatelský PIN: ******
Token byl inicializován a je přiřazen ke slotu 1735718982
--free
znamená, že bude použit první volný/neinicializovaný token v instanci SoftHSM2.
Uživatelský PIN se používá v konfiguraci tokenu v secatpki.conf
.
Danger
label
musí být jedinečný název tokenu v instanci SoftHSM2.
Spuštění softhsm2-util v Docker kontejneru
$ docker exec -it
4) Přidejte modul SoftHSM2 do konfigurace SeaCat PKI
secatpki.conf
:
[seacatpki:pkcs11:softhsm2]
path=.../libsofthsm2.so
tokens=
MySoftHSMToken,<pin>,mytenant
Token "MySoftHSMToken" bude zpřístupněn nájemci "mytenant".
Tip
softhsm2
je interní název poskytovatele a může být zvolen libovolně.
4) Restartujte mikroservis SeaCat PKI
Generování soukromého klíče¶
Soukromé klíče mohou být generovány z webového rozhraní SeaCat PKI nebo pomocí příkazového nástroje pkcs11-tool
.
Druhá metoda je popsána zde.
Generování EC soukromého klíče¶
pkcs11-tool --module .../libsofthsm2.so --login --token-label "MySoftHSMToken" --keypairgen --label "ECKey" --id 100001 --key-type EC:brainpoolP384r1
Generování RSA soukromého klíče¶
pkcs11-tool --module .../libsofthsm2.so --login --token-label "MySoftHSMToken" --keypairgen --label "RSAKey" --id 100002 --key-type RSA:2048
Danger
--id
je jedinečný identifikátor soukromého klíče v tokenu a musí být poskytnut.
Přidání soukromého klíče SoftHSM2 explicitně¶
Můžete chtít explicitně přidat soukromý klíč do konfigurace SeaCat PKI.
secatpki.conf
:
[seacatpki:private_key:softhsm2_key]
provider=pkcs11:softhsm2
tenants=tenant1,tenant2
token_label=MySoftHSMToken
pin=<PIN>
cka_id=100001
Generátor náhodných čísel¶
SoftHSM2 může být použit jako generátor náhodných čísel (RNG) v TeskaLabs SeaCat PKI.
Není to praktické, ale možné.
Inicializujte dedikovaný token pro RNG:
$ softhsm2-util --init-token --free --label "MyRandomNumberGenerator"
secatpki.conf
:
[seacatpki:random]
provider=pkcs11:softhsm2
pin=<PIN>
token_label=MyRandomNumberGenerator
Řešení problémů¶
RuntimeError: Chyba inicializace (není inicializováno). Toto by se nikdy nemělo objevit.
Musíte správně nastavit proměnnou prostředí SOFTHSM2_CONF
.