OpenSSL¶
Atenționare
Încercarea de a prelua cheia privată va bloca OpenSSL. Acest lucru este normal, deoarece cheile private nu pot fi extrase dintr-un NetHSM. Este posibil să doriți să recuperați în schimb cheia publică (a se vedea exemplul de mai jos).
Motor¶
Atenționare
Atunci când se utilizează o versiune a motorului (libp11) de 0.4.12 sau mai veche, dacă există o cheie EdDSA pe NetHSM, OpenSSL nu va găsi nicio cheie. La versiunea 0.4.12 și la versiunile mai vechi, motorul enumeră toate cheile de pe NetHSM atunci când se solicită o cheie. Atunci când se caută o cheie după etichetă sau id, se recomandă să se utilizeze versiunea 0.4.13 sau mai nouă, sau să se construiască libp11 din sursă. Binarul motorului va fi în src/.libs/pkcs11.so
.
Interfața motorului OpenSSL este vechea modalitate de a implementa backend-uri personalizate pentru OpenSSL și este depășită în OpenSSL 3. Aceasta este încă cea mai stabilă modalitate de a utiliza NetHSM cu OpenSSL.
Va trebui să configurați modulul PKCS#11, urmând aceste instrucțiuni.
Montați motorul:
apt install libengine-pkcs11-openssl
dnf install openssl-pkcs11
pacman -S libp11
În continuare, trebuie să configurați OpenSSL pentru a utiliza motorul. Acest lucru se face prin adăugarea următoarelor linii în fișierul 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
Notă
Puteți specifica pentru OpenSSL calea fișierului de configurare OpenSSL folosind variabila de mediu OPENSSL_CONF
.
Atenționare
Dacă fișierul principal de configurare OpenSSL este modificat pentru a conține doar aceste linii, ar putea întrerupe alte programe care utilizează OpenSSL. Astfel, este posibil să doriți să creați un fișier de configurare separat pentru motor.
Înlocuiți /usr/lib/x86_64-linux-gnu/pkcs11/libnethsm_pkcs11.so
cu calea către modulul PKCS#11 pe care l-ați instalat mai devreme.
Înlocuiți /usr/lib/x86_64-linux-gnu/engines-3/libpkcs11.so
cu calea către motorul OpenSSL pe care l-ați instalat. Calea variază în funcție de distribuție. Numărul din engines-3
corespunde versiunii OpenSSL. Pe Debian, calea pentru motorul OpenSSL 3 este /usr/lib/x86_64-linux-gnu/engines-3/libpkcs11.so
; pentru Fedora este /usr/lib64/engines-3/libpkcs11.so
.
Acum puteți utiliza chei pe NetHSM folosind PKCS#11 URIs, exemplu:
engine:pkcs11:pkcs11:object=webserver;type=private
Aceasta va utiliza cheia webserver
.
Notă
Puteți utiliza comanda p11tool
din GnuTLS <https://gnutls.org/> pentru a obține URI-ul complet al cheilor:
p11tool --provider /usr/lib/x86_64-linux-gnu/pkcs11/libnethsm_pkcs11.so --list-all
Exemplu de comandă¶
Recuperarea cheii publice a unei perechi de chei asimetrice de pe NetHSM :
openssl pkey -engine pkcs11 -inform ENGINE -in "pkcs11:object=webserver;type=public" -pubout
Furnizor¶
Interfața furnizorului OpenSSL este noua modalitate de a implementa backend-uri personalizate pentru OpenSSL. Backend-ul pkcs11-provider se află încă într-un stadiu incipient de dezvoltare.
Va trebui să configurați modulul PKCS#11, urmând aceste instrucțiuni.
Instalați furnizorul. Pentru Fedora există un pachet numit pkcs11-provider
. Pentru alte distribuții Linux va trebui să îl construiți din sursa.
Apoi trebuie să configurați OpenSSL pentru a utiliza furnizorul. Acest lucru se face prin adăugarea următoarelor linii în fișierul 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
Setați module
la calea furnizorului pe care l-ați instalat și pkcs11-module-path
la calea modulului PKCS#11 pe care l-ați instalat.
Dacă doriți să setați NetHSM ca furnizor implicit, puteți adăuga default = pkcs11
la secțiunea provider_sect
.
Notă
Puteți specifica pentru OpenSSL calea fișierului de configurare OpenSSL folosind variabila de mediu OPENSSL_CONF
.
Atenționare
Dacă fișierul principal de configurare OpenSSL este modificat pentru a conține doar aceste linii, ar putea întrerupe alte programe care utilizează OpenSSL. Astfel, este posibil să doriți să creați un fișier de configurare separat pentru furnizor.
Apoi, puteți utiliza chei pe NetHSM folosind PKCS#11 URIs, de exemplu:
openssl pkey -provider pkcs11 -in "pkcs11:object=rsakey" -pubout
Dacă ați setat NetHSM ca furnizor implicit, puteți omite argumentul -provider pkcs11
.
Notă
În prezent, atunci când se stabilește manual un tip de cheie în URI, furnizorul nu va putea găsi cheia respectivă. Puteți omite partea ;type=private
sau ;type=public
din URI pentru a face să funcționeze.