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
dnf install openssl-pkcs11
pacman -S libp11
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
.