OpenSSL¶
Varning
Om du försöker hämta den privata nyckeln kraschar OpenSSL. Detta är normalt eftersom privata nycklar inte kan extraheras från en NetHSM. Du kanske vill hämta den offentliga nyckeln istället (se exemplet nedan).
Motor¶
Varning
Om du använder en motor (libp11) med version 0.4.12 eller äldre och har en EdDSA-nyckel på NetHSM kommer OpenSSL inte att hitta någon nyckel. I version 0.4.12 och äldre listar motorn alla nycklar på NetHSM när en nyckel begärs. När du söker efter en nyckel med etikett eller id rekommenderas att du använder version 0.4.13 eller nyare, eller bygger libp11 från källkod. Den binära motorn kommer att finnas i src/.libs/pkcs11.so
.
Gränssnittet OpenSSL engine är det gamla sättet att implementera anpassade backends för OpenSSL och det är föråldrat i OpenSSL 3. Detta är fortfarande det mest stabila sättet att använda NetHSM med OpenSSL.
Du måste installera PKCS#11-modulen genom att följa dessa instruktioner.
Montera motorn:
apt install libengine-pkcs11-openssl
dnf install openssl-pkcs11
pacman -S libp11
Därefter måste du konfigurera OpenSSL för att använda motorn. Detta görs genom att lägga till följande rader i filen 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
Observera
Du kan ange sökvägen till OpenSSL-konfigurationsfilen för OpenSSL med hjälp av miljövariabeln OPENSSL_CONF
.
Varning
Om OpenSSL:s huvudkonfigurationsfil ändras så att den bara innehåller dessa rader, kan andra program som använder OpenSSL störas. Därför kan det vara bra att skapa en separat konfigurationsfil för motorn.
Ersätt /usr/lib/x86_64-linux-gnu/pkcs11/libnethsm_pkcs11.so
med sökvägen till den PKCS#11-modul som du installerade tidigare.
Ersätt /usr/lib/x86_64-linux-gnu/engines-3/libpkcs11.so
med sökvägen till den OpenSSL-motor som du installerade. Sökvägen varierar beroende på din distribution. Siffran i engines-3
motsvarar din OpenSSL-version. På Debian är sökvägen för OpenSSL 3-motorn /usr/lib/x86_64-linux-gnu/engines-3/libpkcs11.so
; för Fedora är den /usr/lib64/engines-3/libpkcs11.so
.
Nu kan du använda nycklar på NetHSM genom att använda PKCS#11 URIs, t.ex:
engine:pkcs11:pkcs11:object=webserver;type=private
Detta kommer att använda nyckeln webserver
.
Observera
Du kan använda kommandot p11tool
från GnuTLS <https://gnutls.org/> för att få den fullständiga URI:n för nycklarna:
p11tool --provider /usr/lib/x86_64-linux-gnu/pkcs11/libnethsm_pkcs11.so --list-all
Exempel på kommando¶
Hämta den offentliga nyckeln till ett asymmetriskt nyckelpar på NetHSM :
openssl pkey -engine pkcs11 -inform ENGINE -in "pkcs11:object=webserver;type=public" -pubout
Leverantör¶
OpenSSL provider-gränssnittet är det nya sättet att implementera anpassade backends för OpenSSL. ` pkcs11-provider backend <https://github.com/latchset/pkcs11-provider>`__ är fortfarande i ett tidigt utvecklingsstadium.
Du måste installera PKCS#11-modulen genom att följa dessa instruktioner.
Installera leverantören. För Fedora finns ett paket med namnet pkcs11-provider
. För andra Linux-distributioner måste du bygga det från källan.
Sedan måste du konfigurera OpenSSL att använda providern. Detta görs genom att lägga till följande rader i filen 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
Ange module
som sökväg till den provider du installerade och pkcs11-module-path
som sökväg till den PKCS#11-modul du installerade.
Om du vill ange NetHSM som standardleverantör kan du lägga till default = pkcs11
i avsnittet provider_sect
.
Observera
Du kan ange sökvägen till OpenSSL-konfigurationsfilen för OpenSSL med hjälp av miljövariabeln OPENSSL_CONF
.
Varning
Om OpenSSL:s huvudkonfigurationsfil ändras så att den bara innehåller dessa rader, kan andra program som använder OpenSSL gå sönder. Därför kan det vara bra att skapa en separat konfigurationsfil för providern.
Sedan kan du använda nycklar på NetHSM genom att använda PKCS#11 URIs, t.ex:
openssl pkey -provider pkcs11 -in "pkcs11:object=rsakey" -pubout
Om du anger NetHSM som standardleverantör kan du utelämna argumentet -provider pkcs11
.
Observera
När man manuellt anger en nyckeltyp i URI kommer leverantören för närvarande inte att kunna hitta nyckeln. Du kan utelämna ;type=private
eller ;type=public
delen av URI för att få det att fungera.