OpenSSL#

Advarsel

Forsøg på at hente den private nøgle vil få OpenSSL til at gå ned. Det er normalt, fordi private nøgler ikke kan udtrækkes fra en NetHSM. Det kan være en god idé at hente den offentlige nøgle i stedet (se eksemplet nedenfor).

Motor#

Advarsel

Når du bruger en version af motoren (libp11) på 0.4.12 eller ældre, vil en EdDSA-nøgle på NetHSM få OpenSSL til ikke at finde nogen nøgle. På version 0.4.12 og ældre viser motoren alle nøglerne på NetHSM, når der anmodes om en nøgle. Når du søger efter en nøgle med label eller id, anbefales det at bruge version 0.4.13 eller nyere, eller at bygge libp11 fra kilden. Motorens binære fil vil være i src/.libs/pkcs11.so.

OpenSSL engine-grænsefladen er den gamle måde at implementere brugerdefinerede backends til OpenSSL på, og den er forældet i OpenSSL 3. Dette er stadig den mest stabile måde at bruge NetHSM med OpenSSL på.

Du skal opsætte PKCS#11-modulet ved at følge disse instruktioner.

Installer motoren:

apt install libengine-pkcs11-openssl

Dernæst skal du konfigurere OpenSSL til at bruge motoren. Dette gøres ved at tilføje følgende linjer til din openssl.cnf fil:

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

Bemærk

Du kan angive stien til OpenSSL-konfigurationsfilen til OpenSSL ved hjælp af miljøvariablen OPENSSL_CONF.

Advarsel

Hvis OpenSSL’s hovedkonfigurationsfil ændres til kun at indeholde disse linjer, kan det ødelægge andre programmer, der bruger OpenSSL. Derfor kan det være en god idé at oprette en separat konfigurationsfil til motoren.

Erstat /usr/lib/x86_64-linux-gnu/pkcs11/libnethsm_pkcs11.so med stien til det PKCS#11-modul, du installerede tidligere.

Erstat /usr/lib/x86_64-linux-gnu/engines-3/libpkcs11.so med stien til den OpenSSL-motor, du har installeret. Stien varierer afhængigt af din distribution. Tallet i engines-3 svarer til din OpenSSL-version. På Debian er stien til OpenSSL 3-motoren /usr/lib/x86_64-linux-gnu/engines-3/libpkcs11.so; for Fedora er det /usr/lib64/engines-3/libpkcs11.so.

Nu kan du bruge nøgler på NetHSM ved at bruge PKCS#11 URI’er, eksempel:

engine:pkcs11:pkcs11:object=webserver;type=private

Dette vil bruge nøglen webserver.

Bemærk

Du kan bruge kommandoen p11tool fra GnuTLS <https://gnutls.org/> til at få den fulde URI for nøglerne:

p11tool --provider /usr/lib/x86_64-linux-gnu/pkcs11/libnethsm_pkcs11.so --list-all

Eksempel på kommando#

Hent den offentlige nøgle til et asymmetrisk nøglepar på NetHSM:

openssl pkey -engine pkcs11 -inform ENGINE -in "pkcs11:object=webserver;type=public" -pubout

Leverandør#

OpenSSL provider-grænsefladen er den nye måde at implementere tilpassede backends til OpenSSL på. ` pkcs11-provider backend <https://github.com/latchset/pkcs11-provider>`__ er stadig i et tidligt udviklingsstadie.

Du skal opsætte PKCS#11-modulet ved at følge disse instruktioner.

Installer udbyderen. For Fedora findes der en pakke med navnet pkcs11-provider. For andre Linux-distributioner skal du bygge den fra kilden.

Derefter skal du konfigurere OpenSSL til at bruge udbyderen. Dette gøres ved at tilføje følgende linjer til din openssl.cnf fil:

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

Sæt module til stien for den udbyder, du installerede, og pkcs11-module-path til stien for det PKCS#11-modul, du installerede.

Hvis du vil indstille NetHSM som standardudbyder, kan du tilføje default = pkcs11 til provider_sect sektionen.

Bemærk

Du kan angive stien til OpenSSL-konfigurationsfilen til OpenSSL ved hjælp af miljøvariablen OPENSSL_CONF.

Advarsel

Hvis OpenSSL’s hovedkonfigurationsfil ændres til kun at indeholde disse linjer, kan det ødelægge andre programmer, der bruger OpenSSL. Derfor kan det være en god idé at oprette en separat konfigurationsfil til provideren.

Derefter kan du bruge nøgler på NetHSM ved at bruge PKCS#11 URI’er, f.eks:

openssl pkey -provider pkcs11 -in "pkcs11:object=rsakey" -pubout

Hvis du indstiller NetHSM som standardudbyder, kan du udelade argumentet -provider pkcs11.

Bemærk

Når man manuelt angiver en nøgletype i URI’en, kan udbyderen i øjeblikket ikke finde nøglen. Du kan udelade ;type=private eller ;type=public delen af URI’en for at få det til at virke.