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