Přeskočit obsah

Hardware Security Modules (HSM)

TeskaLabs SeaCat PKI podporuje hardwarové bezpečnostní moduly (HSM) s rozhraním PKCS#11.

Konkrétně se HSM používají pro generaci a správu privátních klíčů a také pro generaci náhodných čísel.

Warning

TeskaLabs SeaCat PKI v současnosti podporuje pouze jeden nakonfigurovaný modul PKCS#11, nelze nakonfigurovat více modulů v jedné instanci PKI. Můžete použít více tokenů stejného modulu.

Konfigurace

seacatpki.conf:

[seacatpki:pkcs11:<identifikace>]
path=/cesta/k/pkcs11modulu.so
  • identifikace je interní název PKCS#11 poskytovatele (např. softhsm2)
  • path je umístění modulu PKCS#11 v souborovém systému

  • session_persistence je boolean příznak, který určuje, zda by měla být relace PKCS#11 udržována otevřená po použití (výchozí hodnota je true). Některé tokeny uzavírají relaci po použití, takže tento příznak by měl být nastaven na false pro takové tokeny. Nastavení tohoto příznaku na false ovlivní výkon HSM.

Konfigurace autoskenování

Tento přístup znamená, že PKI automaticky prohledá tokeny PKCS#11 na dostupné privátní klíče.

seacatpki.conf:

[seacatpki:pkcs11:<identifikace>]
path=/cesta/k/pkcs11modulu.so
tokens=
    SoftHSMToken1,PIN1,tenant1
    SoftHSMToken2,PIN2,tenant2
    SoftHSMToken3,PIN2,tenant3
    ...
  • tokens je seznam tokenů v HSM

Každý token je definován následovně:

  • token_name je název tokenu (např. SoftHSMToken1)
  • pin je PIN tokenu (např. PIN1)
  • tenant je název nájemce, který má přístup k tokenu (např. tenant1)

Explicitní konfigurace

Tento přístup znamená, že PKI použije pouze privátní klíče, které jsou explicitně nakonfigurovány v souboru seacatpki.conf.

[seacatpki:pkcs11:<identifikace>]
path=/cesta/k/pkcs11modulu.so

[seacatpki:private_key:<nazev_klice>]
provider=pkcs11:<identifikace>
tenants=tenant1,tenant2
token_label=SoftHSMToken1
pin=PIN
cka_id=100002
  • nazev_klice je interní název privátního klíče (např. my_rsa_key)
  • provider je interní název modulu PKCS#11 (např. softhsm2)
  • tenants je seznam nájemců, kteří mají přístup k tokenu (např. tenant1,tenant2)
  • token_label je štítek tokenu (např. SoftHSMToken1)
  • pin je PIN tokenu (např. PIN)
  • cka_id je ID privátního klíče (např. 100002)

Požadavky na privátní klíče

Privátní klíče umístěné na tokeny PKCS#11 musí splňovat následující požadavky:

  • CKA_CLASS musí být CKO_PRIVATE_KEY
  • CKA_LABEL musí být nastaven
  • CKA_ID musí být nastaven a unikátní pro každý privátní klíč
  • Musí existovat exportovatelný veřejný klíč (CKA_CLASS musí být CKO_PUBLIC_KEY) se stejným CKA_ID