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