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

След това трябва да конфигурирате 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, за да заработи.