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
dnf install openssl-pkcs11
pacman -S libp11
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.