OpenSSL

Varovanie

Pokus o načítanie súkromného kľúča spôsobí pád OpenSSL. Je to normálne, pretože súkromné kľúče nemožno získať z NetHSM. Namiesto toho môžete chcieť získať verejný kľúč (pozri príklad nižšie).

Motor

Varovanie

Ak používate motor (libp11) verzie 0.4.12 alebo staršej, kľúč EdDSA v NetHSM spôsobí, že OpenSSL nenájde žiadny kľúč. Pri verzii 0.4.12 a staršej motor pri požiadavke na kľúč vypíše všetky kľúče na NetHSM. Pri hľadaní kľúča podľa značky alebo id sa odporúča použiť verziu 0.4.13 alebo novšiu, prípadne zostaviť libp11 zo zdrojových kódov. Binárny súbor motora bude v src/.libs/pkcs11.so.

Rozhranie OpenSSL engine je starý spôsob implementácie vlastných backendov pre OpenSSL a je zastaraný v OpenSSL 3. Toto je stále najstabilnejší spôsob používania NetHSM s OpenSSL.

Budete musieť nastaviť modul PKCS#11 podľa týchto pokynov.

Nainštalujte motor:

apt install libengine-pkcs11-openssl

Ďalej je potrebné nakonfigurovať OpenSSL na používanie motora. To vykonáte pridaním nasledujúcich riadkov do súboru 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

OpenSSL môžete určiť cestu ku konfiguračnému súboru OpenSSL pomocou premennej prostredia OPENSSL_CONF.

Varovanie

Ak sa hlavný konfiguračný súbor OpenSSL upraví tak, aby obsahoval len tieto riadky, mohlo by to poškodiť ostatné programy používajúce OpenSSL. Preto možno budete chcieť vytvoriť samostatný konfiguračný súbor pre motor.

Nahraďte /usr/lib/x86_64-linux-gnu/pkcs11/libnethsm_pkcs11.so cestou k modulu PKCS#11, ktorý ste predtým nainštalovali.

Nahraďte /usr/lib/x86_64-linux-gnu/engines-3/libpkcs11.so cestou k nainštalovanému enginu OpenSSL. Cesta sa líši v závislosti od vašej distribúcie. Číslo v engines-3 zodpovedá vašej verzii OpenSSL. V Debiane je cesta pre engine OpenSSL 3 /usr/lib/x86_64-linux-gnu/engines-3/libpkcs11.so; vo Fedore je to /usr/lib64/engines-3/libpkcs11.so.

Teraz môžete používať kľúče v NetHSM pomocou PKCS#11 URI, napr:

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

Použije sa kľúč webserver.

Poznámka

Pomocou príkazu p11tool z príkazu GnuTLS <https://gnutls.org/> môžete získať úplný URI kľúčov:

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

Príklad príkazu

Získanie verejného kľúča asymetrického páru kľúčov v NetHSM :

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

Poskytovateľ

Rozhranie OpenSSL provider je nový spôsob implementácie vlastných backendov pre OpenSSL. Rozhranie pkcs11-provider backend je stále v ranom štádiu vývoja.

Budete musieť nastaviť modul PKCS#11 podľa týchto pokynov.

Nainštalujte poskytovateľa. Pre Fedoru existuje balík s názvom pkcs11-provider. Pre ostatné distribúcie Linuxu ho budete musieť zostaviť zo zdrojových kódov.

Potom je potrebné nakonfigurovať OpenSSL na používanie poskytovateľa. To sa vykoná pridaním nasledujúcich riadkov do súboru 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 nainštalovanému poskytovateľovi a pkcs11-module-path na cestu k nainštalovanému modulu PKCS#11.

Ak chcete nastaviť NetHSM ako predvoleného poskytovateľa, môžete pridať default = pkcs11 do sekcie provider_sect.

Poznámka

OpenSSL môžete určiť cestu ku konfiguračnému súboru OpenSSL pomocou premennej prostredia OPENSSL_CONF.

Varovanie

Ak sa hlavný konfiguračný súbor OpenSSL upraví tak, aby obsahoval len tieto riadky, mohlo by to poškodiť ostatné programy používajúce OpenSSL. Preto možno budete chcieť vytvoriť samostatný konfiguračný súbor pre poskytovateľa.

Potom môžete používať kľúče v NetHSM pomocou PKCS#11 URI, napr:

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

Ak nastavíte NetHSM ako predvoleného poskytovateľa, môžete vynechať argument -provider pkcs11.

Poznámka

V súčasnosti pri ručnom nastavení typu kľúča v URI poskytovateľ nedokáže nájsť kľúč. Aby to fungovalo, môžete vynechať časť URI ;type=private alebo ;type=public.