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

Î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.