OpenSSL#

Opozorilo

Poskus pridobivanja zasebnega ključa bo povzročil okvaro OpenSSL. To je običajno, saj zasebnih ključev ni mogoče pridobiti iz NetHSM. Namesto tega boste morda želeli pridobiti javni ključ (glejte spodnji primer).

Motor#

Opozorilo

Pri uporabi gonilnika (libp11) različice 0.4.12 ali starejše bo ključ EdDSA v NetHSM povzročil, da OpenSSL ne bo našel nobenega ključa. Pri različici 0.4.12 in starejši motor ob zahtevi za ključ navede vse ključe na NetHSM. Pri iskanju ključa po oznaki ali id je priporočljivo uporabiti različico 0.4.13 ali novejšo ali sestaviti libp11 iz izvorne kode. Binarni zapis motorja bo v src/.libs/pkcs11.so.

Vmesnik motorja OpenSSL je star način za izvajanje lastnih zaledij za OpenSSL in je v OpenSSL 3 odpravljen. To je še vedno najbolj stabilen način za uporabo NetHSM z OpenSSL.

Nastaviti boste morali modul PKCS#11, in sicer po teh navodilih.

Namestite motor:

apt install libengine-pkcs11-openssl

Nato morate program OpenSSL konfigurirati za uporabo gonilnika. To storite tako, da v datoteko openssl.cnf dodate naslednje vrstice:

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

Opomba

OpenSSL lahko pot do konfiguracijske datoteke OpenSSL določite z okoljsko spremenljivko OPENSSL_CONF.

Opozorilo

Če glavno konfiguracijsko datoteko OpenSSL spremenite tako, da vsebuje samo te vrstice, lahko to okvari druge programe, ki uporabljajo OpenSSL. Zato boste morda želeli ustvariti ločeno konfiguracijsko datoteko za motor.

Zamenjajte /usr/lib/x86_64-linux-gnu/pkcs11/libnethsm_pkcs11.so s potjo do modula PKCS#11, ki ste ga namestili prej.

Zamenjajte /usr/lib/x86_64-linux-gnu/engines-3/libpkcs11.so s potjo do nameščenega gonilnika OpenSSL. Pot je odvisna od vaše distribucije. Številka v engines-3 ustreza vaši različici OpenSSL. V Debianu je pot do gonilnika OpenSSL 3 /usr/lib/x86_64-linux-gnu/engines-3/libpkcs11.so; v Fedori je /usr/lib64/engines-3/libpkcs11.so.

Zdaj lahko ključe v NetHSM uporabljate z uporabo PKCS#11 URI, na primer:

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

Pri tem bo uporabljen ključ webserver.

Opomba

S pomočjo ukaza p11tool iz programa GnuTLS <https://gnutls.org/> lahko dobite celoten URI ključev:

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

Primer ukaza#

Pridobite javni ključ asimetričnega para ključev v napravi NetHSM :

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

Ponudnik#

Vmesnik OpenSSL provider je nov način za izvajanje zaledij po meri za OpenSSL. Podpomoček pkcs11-provider je še vedno v zgodnji fazi razvoja.

Nastaviti boste morali modul PKCS#11, in sicer po teh navodilih.

Namestite ponudnika. Za Fedoro obstaja paket z imenom pkcs11-provider. Za druge distribucije Linuxa ga boste morali sestaviti iz izvorne.

Nato morate OpenSSL konfigurirati za uporabo ponudnika. To storite tako, da v datoteko openssl.cnf dodate naslednje vrstice:

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

Nastavite module na pot nameščenega ponudnika in pkcs11-module-path na pot nameščenega modula PKCS#11.

Če želite nastaviti NetHSM kot privzetega ponudnika, lahko v razdelek provider_sect dodate default = pkcs11.

Opomba

OpenSSL lahko pot do konfiguracijske datoteke OpenSSL določite z okoljsko spremenljivko OPENSSL_CONF.

Opozorilo

Če glavno konfiguracijsko datoteko OpenSSL spremenite tako, da vsebuje samo te vrstice, lahko to okvari druge programe, ki uporabljajo OpenSSL. Zato boste morda želeli ustvariti ločeno konfiguracijsko datoteko za ponudnika.

Nato lahko uporabite ključe v NetHSM z uporabo PKCS#11 URI, na primer:

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

Če kot privzetega ponudnika nastavite NetHSM, lahko izpustite argument -provider pkcs11.

Opomba

Pri ročni nastavitvi vrste ključa v URI ponudnik trenutno ne more najti ključa. Za delovanje lahko izpustite ;type=private ali ;type=public del URI.