OpenSSL#
Waarschuwing
Bij het ophalen van de privésleutel crasht OpenSSL. Dit is normaal omdat privésleutels niet uit een NetHSM gehaald kunnen worden. In plaats daarvan is het misschien beter om de publieke sleutel op te halen (zie onderstaand voorbeeld).
Motor#
Waarschuwing
Bij gebruik van een engine (libp11) versie 0.4.12 of ouder, zorgt het hebben van een EdDSA-sleutel op de NetHSM ervoor dat OpenSSL geen sleutel vindt. Op versie 0.4.12 en ouder geeft de engine een lijst van alle sleutels op de NetHSM wanneer een sleutel wordt aangevraagd. Bij het zoeken naar een sleutel op label of id, wordt het aangeraden om versie 0.4.13 of nieuwer te gebruiken, of libp11 vanaf broncode te bouwen. De binaire engine staat in src/.libs/pkcs11.so
.
De OpenSSL engine interface is de oude manier om aangepaste backends voor OpenSSL te implementeren en het is verouderd in OpenSSL 3. Dit is nog steeds de meest stabiele manier om de NetHSM met OpenSSL te gebruiken.
U moet de PKCS#11 module instellen volgens deze instructies.
Installeer de motor:
apt install libengine-pkcs11-openssl
dnf install openssl-pkcs11
pacman -S libp11
Vervolgens moet je OpenSSL configureren om de engine te gebruiken. Dit wordt gedaan door de volgende regels toe te voegen aan uw openssl.cnf
bestand:
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
Notitie
U kunt OpenSSL het pad van het OpenSSL-configuratiebestand geven met de OPENSSL_CONF
omgevingsvariabele.
Waarschuwing
Als het hoofdconfiguratiebestand van OpenSSL zodanig wordt aangepast dat het alleen deze regels bevat, kan dit andere programma’s die OpenSSL gebruiken kapot maken. Daarom is het misschien beter om een apart instellingenbestand voor de engine te maken.
Vervang /usr/lib/x86_64-linux-gnu/pkcs11/libnethsm_pkcs11.so
door het pad naar de PKCS#11 module die je eerder hebt geïnstalleerd.
Vervang /usr/lib/x86_64-linux-gnu/engines-3/libpkcs11.so
door het pad naar de OpenSSL engine die je hebt geïnstalleerd. Het pad varieert afhankelijk van je distributie. Het nummer in engines-3
komt overeen met je OpenSSL versie. Op Debian is het pad voor de OpenSSL 3 engine /usr/lib/x86_64-linux-gnu/engines-3/libpkcs11.so
; voor Fedora is het /usr/lib64/engines-3/libpkcs11.so
.
Nu kun je sleutels gebruiken op de NetHSM door PKCS#11 URI’s te gebruiken, bijvoorbeeld:
engine:pkcs11:pkcs11:object=webserver;type=private
Dit gebruikt de sleutel webserver
.
Notitie
Je kunt het p11tool
commando van GnuTLS <https://gnutls.org/> gebruiken om de volledige URI van de sleutels te krijgen:
p11tool --provider /usr/lib/x86_64-linux-gnu/pkcs11/libnethsm_pkcs11.so --list-all
Voorbeeldopdracht#
De openbare sleutel van een asymmetrisch sleutelpaar op de NetHSM ophalen :
openssl pkey -engine pkcs11 -inform ENGINE -in "pkcs11:object=webserver;type=public" -pubout
Aanbieder#
De OpenSSL provider interface is de nieuwe manier om aangepaste backends voor OpenSSL te implementeren. De pkcs11-provider backend is nog in een vroeg stadium van ontwikkeling.
U moet de PKCS#11 module instellen volgens deze instructies.
Installeer de provider. Voor Fedora bestaat er een pakket met de naam pkcs11-provider
. Voor andere Linux distributies zul je moeten bouwen vanaf de bron.
Daarna moet je OpenSSL configureren om de provider te gebruiken. Dit doe je door de volgende regels toe te voegen aan je openssl.cnf
bestand:
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
Stel module
in op het pad van de provider die je hebt geïnstalleerd en pkcs11-module-path
op het pad van de PKCS#11 module die je hebt geïnstalleerd.
Als je NetHSM als standaard provider wilt instellen, kun je default = pkcs11
toevoegen aan de provider_sect
sectie.
Notitie
U kunt OpenSSL het pad van het OpenSSL-configuratiebestand geven met de OPENSSL_CONF
omgevingsvariabele.
Waarschuwing
Als het hoofdconfiguratiebestand van OpenSSL zodanig wordt aangepast dat het alleen deze regels bevat, kan dit andere programma’s die OpenSSL gebruiken kapot maken. Daarom is het misschien beter om een apart instellingenbestand voor de provider te maken.
Vervolgens kun je sleutels gebruiken op de NetHSM door PKCS#11 URI’s te gebruiken, bijvoorbeeld:
openssl pkey -provider pkcs11 -in "pkcs11:object=rsakey" -pubout
Als je NetHSM als standaard provider instelt, kun je het -provider pkcs11
argument weglaten.
Notitie
Als je momenteel handmatig een sleuteltype in de URI instelt, kan de provider de sleutel niet vinden. Je kunt het gedeelte ;type=private
of ;type=public
van de URI weglaten om het te laten werken.