OpenSSL#
Warning
Опитът за извличане на частния ключ ще доведе до срив на OpenSSL. Това е нормално, тъй като частните ключове не могат да бъдат извлечени от NetHSM. Вместо това може да искате да извлечете публичния ключ (вж. примера по-долу).
Двигател#
Warning
Когато използвате двигател (libp11) с версия 0.4.12 или по-стара, наличието на ключ EdDSA в NetHSM ще накара OpenSSL да не намери никакъв ключ. При версия 0.4.12 и по-стари двигателят изброява всички ключове в NetHSM, когато се изисква ключ. При търсене на ключ по етикет или id се препоръчва да се използва версия 0.4.13 или по-нова, или да се изгради libp11 от изходния код. Двоичният файл на двигателя ще бъде в src/.libs/pkcs11.so
.
Интерфейсът на OpenSSL engine е старият начин за реализиране на потребителски бекенд за OpenSSL и е отпаднал в OpenSSL 3. Това все още е най-стабилният начин за използване на NetHSM с OpenSSL.
Ще трябва да настроите модула PKCS#11, като следвате тези инструкции.
Монтирайте двигателя:
apt install libengine-pkcs11-openssl
dnf install openssl-pkcs11
pacman -S libp11
След това трябва да конфигурирате OpenSSL за използване на двигателя. Това става, като добавите следните редове към файла 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
Note
Можете да укажете на OpenSSL пътя до конфигурационния файл на OpenSSL, като използвате променливата на средата OPENSSL_CONF
.
Warning
Ако основният конфигурационен файл на OpenSSL бъде променен така, че да съдържа само тези редове, това може да доведе до повреда на други програми, използващи OpenSSL. Затова може да искате да създадете отделен конфигурационен файл за двигателя.
Заменете /usr/lib/x86_64-linux-gnu/pkcs11/libnethsm_pkcs11.so
с пътя до модула PKCS#11, който инсталирахте по-рано.
Заменете /usr/lib/x86_64-linux-gnu/engines-3/libpkcs11.so
с пътя до инсталирания OpenSSL енджин. Пътят варира в зависимост от вашата дистрибуция. Числото в engines-3
съответства на вашата версия на OpenSSL. В Debian пътят до енджина OpenSSL 3 е /usr/lib/x86_64-linux-gnu/engines-3/libpkcs11.so
; във Fedora е /usr/lib64/engines-3/libpkcs11.so
.
Сега можете да използвате ключове в NetHSM, като използвате PKCS#11 URIs, например:
engine:pkcs11:pkcs11:object=webserver;type=private
Това ще използва ключа webserver
.
Note
Можете да използвате командата p11tool
от GnuTLS <https://gnutls.org/>, за да получите пълния URI на ключовете:
p11tool --provider /usr/lib/x86_64-linux-gnu/pkcs11/libnethsm_pkcs11.so --list-all
Примерна команда#
Извличане на публичния ключ на асиметрична двойка ключове в NetHSM :
openssl pkey -engine pkcs11 -inform ENGINE -in "pkcs11:object=webserver;type=public" -pubout
Доставчик#
Интерфейсът на доставчика на OpenSSL е новият начин за реализиране на персонализирани бекендове за OpenSSL. Бекендът pkcs11-provider е все още в ранен етап на разработка.
Ще трябва да настроите модула PKCS#11, като следвате тези инструкции.
Инсталирайте доставчика. За Fedora съществува пакет с име pkcs11-provider
. За други дистрибуции на Linux ще трябва да го изградите от изходния източник.
След това трябва да конфигурирате OpenSSL да използва доставчика. Това става чрез добавяне на следните редове към вашия файл 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
Задайте module
на пътя на доставчика, който сте инсталирали, и pkcs11-module-path
на пътя на модула PKCS#11, който сте инсталирали.
Ако искате да зададете NetHSM като доставчик по подразбиране, можете да добавите default = pkcs11
към раздела provider_sect
.
Note
Можете да укажете на OpenSSL пътя до конфигурационния файл на OpenSSL, като използвате променливата на средата OPENSSL_CONF
.
Warning
Ако основният конфигурационен файл на OpenSSL бъде променен така, че да съдържа само тези редове, това може да доведе до повреда на други програми, използващи OpenSSL. Затова може да искате да създадете отделен конфигурационен файл за доставчика.
След това можете да използвате ключове в NetHSM, като използвате PKCS#11 URIs, например:
openssl pkey -provider pkcs11 -in "pkcs11:object=rsakey" -pubout
Ако сте задали NetHSM като доставчик по подразбиране, можете да пропуснете аргумента -provider pkcs11
.
Note
Понастоящем при ръчно задаване на тип ключ в URI доставчикът не може да намери ключа. Можете да пропуснете частта ;type=private
или ;type=public
от URI, за да заработи.