Přeskočit obsah

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  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 softhsm2-util --init-token --free --label "MySoftHSMToken"

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.