OpenSSL#
Avvertimento
Se si cerca di recuperare la chiave privata, OpenSSL si blocca. Questo è normale perché le chiavi private non possono essere estratte da un NetHSM. Si consiglia di recuperare invece la chiave pubblica (vedere l’esempio seguente).
Motore#
Avvertimento
Quando si utilizza un motore (libp11) di versione 0.4.12 o precedente, la presenza di una chiave EdDSA sul NetHSM fa sì che OpenSSL non trovi alcuna chiave. Nelle versioni 0.4.12 e precedenti, il motore elenca tutte le chiavi sul NetHSM quando viene richiesta una chiave. Quando si cerca una chiave per etichetta o id, si raccomanda di usare la versione 0.4.13 o più recente, oppure di compilare libp11 dai sorgenti. Il binario del motore si trova in src/.libs/pkcs11.so
.
L’interfaccia del motore OpenSSL è il vecchio modo di implementare backend personalizzati per OpenSSL ed è deprecato in OpenSSL 3. Questo è ancora il modo più stabile di usare NetHSM con OpenSSL.
È necessario impostare il modulo PKCS#11, seguendo queste istruzioni.
Installare il motore:
apt install libengine-pkcs11-openssl
dnf install openssl-pkcs11
pacman -S libp11
È quindi necessario configurare OpenSSL per utilizzare il motore. Per farlo, aggiungere le seguenti righe al file 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
Nota
È possibile specificare a OpenSSL il percorso del file di configurazione di OpenSSL usando la variabile di ambiente OPENSSL_CONF
.
Avvertimento
Se il file di configurazione principale di OpenSSL viene modificato in modo da contenere solo queste righe, potrebbe interrompere altri programmi che utilizzano OpenSSL. Pertanto, si consiglia di creare un file di configurazione separato per il motore.
Sostituire /usr/lib/x86_64-linux-gnu/pkcs11/libnethsm_pkcs11.so
con il percorso del modulo PKCS#11 installato in precedenza.
Sostituire /usr/lib/x86_64-linux-gnu/engines-3/libpkcs11.so
con il percorso del motore OpenSSL installato. Il percorso varia a seconda della distribuzione. Il numero in engines-3
corrisponde alla versione di OpenSSL. Su Debian il percorso per il motore OpenSSL 3 è /usr/lib/x86_64-linux-gnu/engines-3/libpkcs11.so
; per Fedora è /usr/lib64/engines-3/libpkcs11.so
.
Ora è possibile utilizzare le chiavi su NetHSM utilizzando gli URI PKCS#11, ad esempio:
engine:pkcs11:pkcs11:object=webserver;type=private
Si utilizzerà la chiave webserver
.
Nota
È possibile utilizzare il comando p11tool
da GnuTLS <https://gnutls.org/> per ottenere l’URI completo delle chiavi:
p11tool --provider /usr/lib/x86_64-linux-gnu/pkcs11/libnethsm_pkcs11.so --list-all
Esempio di comando#
Recuperare la chiave pubblica di una coppia di chiavi asimmetriche sul NetHSM :
openssl pkey -engine pkcs11 -inform ENGINE -in "pkcs11:object=webserver;type=public" -pubout
Fornitore#
L’interfaccia OpenSSL provider è il nuovo modo di implementare backend personalizzati per OpenSSL. Il backend pkcs11-provider è ancora in una fase iniziale di sviluppo.
È necessario impostare il modulo PKCS#11, seguendo queste istruzioni.
Installare il provider. Per Fedora esiste un pacchetto chiamato pkcs11-provider
. Per altre distribuzioni Linux è necessario compilarlo dai sorgenti.
È quindi necessario configurare OpenSSL per utilizzare il provider. Per farlo, aggiungere le seguenti righe al file 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
Impostare module
al percorso del provider installato e pkcs11-module-path
al percorso del modulo PKCS#11 installato.
Se si desidera impostare NetHSM come provider predefinito, è possibile aggiungere default = pkcs11
alla sezione provider_sect
.
Nota
È possibile specificare a OpenSSL il percorso del file di configurazione di OpenSSL usando la variabile di ambiente OPENSSL_CONF
.
Avvertimento
Se il file di configurazione principale di OpenSSL viene modificato in modo da contenere solo queste righe, potrebbe interrompere altri programmi che utilizzano OpenSSL. Pertanto, si consiglia di creare un file di configurazione separato per il provider.
È quindi possibile utilizzare le chiavi sul NetHSM utilizzando gli URI PKCS#11, ad esempio:
openssl pkey -provider pkcs11 -in "pkcs11:object=rsakey" -pubout
Se si imposta NetHSM come provider predefinito, si può omettere l’argomento -provider pkcs11
.
Nota
Attualmente, quando si imposta manualmente un tipo di chiave nell’URI, il provider non è in grado di trovare la chiave. È possibile omettere la parte ;type=private
o ;type=public
dell’URI per farlo funzionare.