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

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.