OpenSSL#

Figyelem

Ha megpróbálja lekérni a privát kulcsot, az OpenSSL összeomlik. Ez normális, mivel a privát kulcsok nem nyerhetők ki a NetHSM-ből. Helyette a nyilvános kulcsot érdemes lekérdezni (lásd az alábbi példát).

Motor#

Figyelem

Ha a motor (libp11) 0.4.12-es vagy régebbi verzióját használjuk, akkor a NetHSM-en lévő EdDSA kulcs miatt az OpenSSL nem talál semmilyen kulcsot. A 0.4.12-es és régebbi verzióknál a motor a NetHSM-en lévő összes kulcsot felsorolja, amikor kulcsot kérnek. Ha kulcsot keresünk címke vagy azonosító alapján, ajánlott a 0.4.13-as vagy újabb verziót használni, vagy a libp11 forrásból való buildelését. A motor bináris állománya a src/.libs/pkcs11.so könyvtárban lesz.

Az OpenSSL motor interfész a régi módja az OpenSSL egyéni háttértárjainak megvalósítására, és az OpenSSL 3-ban elavulttá vált. Ez még mindig a legstabilabb módja a NetHSM használatának az OpenSSL-lel.

Be kell állítania a PKCS#11 modult, követve a ezeket az utasításokat.

Szerelje be a motort:

apt install libengine-pkcs11-openssl

Ezután az OpenSSL-t úgy kell konfigurálni, hogy használja a motort. Ezt a következő sorok hozzáadásával teheti meg a openssl.cnf fájlban:

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

Megjegyzés

Az OpenSSL számára az OpenSSL konfigurációs fájl elérési útvonalát a OPENSSL_CONF környezeti változóval adhatja meg.

Figyelem

Ha az OpenSSL fő konfigurációs fájlját úgy módosítják, hogy csak ezeket a sorokat tartalmazza, akkor ez megszakíthatja az OpenSSL-t használó más programokat. Ezért érdemes egy külön konfigurációs fájlt létrehozni a motor számára.

A /usr/lib/x86_64-linux-gnu/pkcs11/libnethsm_pkcs11.so helyett a korábban telepített PKCS#11 modul elérési útvonalát adja meg.

A /usr/lib/x86_64-linux-gnu/engines-3/libpkcs11.so helyett a telepített OpenSSL motor elérési útvonalát kell beírni. Az útvonal a disztribúciótól függően változik. A engines-3 szám az OpenSSL verziójának felel meg. Debian esetén az OpenSSL 3 motor elérési útvonala /usr/lib/x86_64-linux-gnu/engines-3/libpkcs11.so; Fedora esetén /usr/lib64/engines-3/libpkcs11.so.

Most már használhatja a kulcsokat a NetHSM-en a PKCS#11 URI-k használatával, példa:

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

Ez a webserver kulcsot fogja használni.

Megjegyzés

A p11tool parancsot használhatja a GnuTLS <https://gnutls.org/> parancsból, hogy megkapja a kulcsok teljes URI-ját:

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

Példa parancs#

Egy aszimmetrikus kulcspár nyilvános kulcsának lekérdezése a NetHSM-en :

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

Szolgáltató#

Az OpenSSL szolgáltatói interfész az új módja az OpenSSL egyéni háttértárak megvalósításának. A pkcs11-provider backend még a fejlesztés korai szakaszában van.

Be kell állítania a PKCS#11 modult, követve a ezeket az utasításokat.

Telepítse a szolgáltatót. Fedora esetén létezik egy pkcs11-provider nevű csomag. Más Linux disztribúciókhoz a forrásból kell.

Ezután konfigurálnia kell az OpenSSL-t a szolgáltató használatára. Ehhez a következő sorokat kell hozzáadni a openssl.cnf fájlhoz:

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

Állítsa be a module a telepített szolgáltató elérési útvonalát, a pkcs11-module-path pedig a telepített PKCS#11 modul elérési útvonalát.

Ha a NetHSM-et szeretné alapértelmezett szolgáltatónak beállítani, akkor a default = pkcs11 a provider_sect szakaszhoz adhatja hozzá a ` ` címet.

Megjegyzés

Az OpenSSL számára az OpenSSL konfigurációs fájl elérési útvonalát a OPENSSL_CONF környezeti változóval adhatja meg.

Figyelem

Ha az OpenSSL fő konfigurációs fájlját úgy módosítják, hogy csak ezeket a sorokat tartalmazza, akkor ez megszakíthatja az OpenSSL-t használó más programokat. Ezért érdemes egy külön konfigurációs fájlt létrehozni a szolgáltató számára.

Ezután a kulcsokat a NetHSM-en a PKCS#11 URI-k használatával használhatja, például:

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

Ha a NetHSM-et állítja be alapértelmezett szolgáltatónak, elhagyhatja a -provider pkcs11 argumentumot.

Megjegyzés

Jelenleg, ha manuálisan állítjuk be a kulcs típusát az URI-ban, a szolgáltató nem fogja tudni megtalálni a kulcsot. A ;type=private vagy a ;type=public rész elhagyásával az URI-ból kihagyható, hogy működjön.