OpenSSL#

Varování

Pokus o získání soukromého klíče způsobí pád protokolu OpenSSL. To je normální, protože soukromé klíče nelze z NetHSM získat. Místo toho můžete chtít načíst veřejný klíč (viz příklad níže).

Motor#

Varování

Při použití enginu (libp11) verze 0.4.12 nebo starší způsobí, že klíč EdDSA na NetHSM nenajde žádný klíč OpenSSL. Ve verzi 0.4.12 a starší engine při požadavku na klíč vypíše všechny klíče na NetHSM. Při vyhledávání klíče podle štítku nebo id se doporučuje použít verzi 0.4.13 nebo novější, nebo sestavit libp11 ze zdrojových kódů. Binární soubor enginu bude ve formátu src/.libs/pkcs11.so.

Rozhraní OpenSSL engine je starý způsob implementace vlastních backendů pro OpenSSL, který je v OpenSSL 3 zastaralý. Stále se jedná o nejstabilnější způsob použití NetHSM s OpenSSL.

Budete muset nastavit modul PKCS#11 podle těchto pokynů.

Nainstalujte motor:

apt install libengine-pkcs11-openssl

Dále je třeba nakonfigurovat OpenSSL tak, aby engine používal. To provedete přidáním následujících řádků do souboru openssl.cnf:

openssl_conf = openssl_init

[openssl_init]
engines = engine_section

[engine_section]
pkcs11 = pkcs11_section

[pkcs11_section]
engine_id = pkcs11
dynamic_path = /usr/lib/x86_64-linux-gnu/engines-3/libpkcs11.so
MODULE_PATH = /usr/lib/x86_64-linux-gnu/pkcs11/libnethsm_pkcs11.so
init = 0

Poznámka

Pomocí proměnné prostředí OPENSSL_CONF můžete OpenSSL zadat cestu ke konfiguračnímu souboru OpenSSL.

Varování

Pokud by byl hlavní konfigurační soubor OpenSSL upraven tak, aby obsahoval pouze tyto řádky, mohlo by dojít k poškození ostatních programů používajících OpenSSL. Proto můžete chtít vytvořit samostatný konfigurační soubor pro engine.

Nahraďte adresu /usr/lib/x86_64-linux-gnu/pkcs11/libnethsm_pkcs11.so cestou k modulu PKCS#11, který jste nainstalovali dříve.

Nahraďte /usr/lib/x86_64-linux-gnu/engines-3/libpkcs11.so cestou k nainstalovanému enginu OpenSSL. Cesta se liší v závislosti na vaší distribuci. Číslo v engines-3 odpovídá vaší verzi OpenSSL. V Debianu je cesta k enginu OpenSSL 3 /usr/lib/x86_64-linux-gnu/engines-3/libpkcs11.so; ve Fedoře je to /usr/lib64/engines-3/libpkcs11.so.

Nyní můžete používat klíče v NetHSM pomocí PKCS#11 URI, příklad:

engine:pkcs11:pkcs11:object=webserver;type=private

Použije se klíč webserver.

Poznámka

Úplný URI klíčů můžete získat pomocí příkazu p11tool z GnuTLS <https://gnutls.org/>:

p11tool --provider /usr/lib/x86_64-linux-gnu/pkcs11/libnethsm_pkcs11.so --list-all

Příklad příkazu#

Získání veřejného klíče asymetrického páru klíčů v zařízení NetHSM :

openssl pkey -engine pkcs11 -inform ENGINE -in "pkcs11:object=webserver;type=public" -pubout

Poskytovatel#

Rozhraní OpenSSL provider je nový způsob implementace vlastních backendů pro OpenSSL. Backend pkcs11-provider je stále v rané fázi vývoje.

Budete muset nastavit modul PKCS#11 podle těchto pokynů.

Nainstalujte poskytovatele. Pro Fedoru existuje balíček s názvem pkcs11-provider. Pro ostatní linuxové distribuce jej budete muset sestavit ze zdrojových kódů.

Poté je třeba nakonfigurovat OpenSSL tak, aby používal zprostředkovatele. To provedete přidáním následujících řádků do souboru openssl.cnf:

openssl_conf = openssl_init

[openssl_init]
providers = provider_sect

[provider_sect]
pkcs11 = pkcs11_sect

[pkcs11_sect]
module = /home/sautax/git/pkcs11-provider/src/.libs/pkcs11.so
pkcs11-module-path = /usr/lib/libnethsm_pkcs11.so
activate = 1

Nastavte module na cestu k nainstalovanému zprostředkovateli a pkcs11-module-path na cestu k nainstalovanému modulu PKCS#11.

Pokud chcete nastavit NetHSM jako výchozího poskytovatele, můžete přidat default = pkcs11 do sekce provider_sect.

Poznámka

Pomocí proměnné prostředí OPENSSL_CONF můžete OpenSSL zadat cestu ke konfiguračnímu souboru OpenSSL.

Varování

Pokud by byl hlavní konfigurační soubor OpenSSL upraven tak, aby obsahoval pouze tyto řádky, mohlo by dojít k poškození ostatních programů používajících OpenSSL. Proto je vhodné vytvořit pro zprostředkovatele samostatný konfigurační soubor.

Pak můžete používat klíče v NetHSM pomocí PKCS#11 URI, například:

openssl pkey -provider pkcs11 -in "pkcs11:object=rsakey" -pubout

Pokud nastavíte NetHSM jako výchozího zprostředkovatele, můžete vynechat argument -provider pkcs11.

Poznámka

V současné době při ručním nastavení typu klíče v URI není zprostředkovatel schopen klíč najít. Aby to fungovalo, můžete vynechat část URI ;type=private nebo ;type=public.