Интеграция#
Главата описва процеси за различни задачи и е насочена към всички групи потребители.
REST-API#
Основният интерфейс на NetHSM е модерен REST-API, който гарантира най-добра производителност и функционалност. Спецификацията на API е налична във формат OpenAPI, и може да бъде разгледана и тествана в браузъра API.
PKCS#11#
NetHSM поддържа стандарта PKCS#11. Необходимият драйвер е наличен в хранилището ` <https://github.com/Nitrokey/nethsm-pkcs11>` __. Хранилището съдържа изходния код и библиотеките, за различни операционни системи. Ръководството PKCS#11 описва подробно използването.
Разработване и тестване#
Демонстрационен пример#
Публична демонстрационна инстанция на NetHSM е налична на адрес nethsmdemo.nitrokey.com. Той ще се нулира на всеки осем часа (6:00, 14:00, 22:00 ч. централноевропейско време). Потребител „admin“, парола „adminadmin“, парола за отключване „unlockunlock“.
Изображение на контейнер#
Образът на контейнера се разпространява като образ на OCI и може да бъде получен от Docker Hub. Той може да бъде стартиран локално със съвместим изпълнителен механизъм, например Docker или Podman.
В сравнение с хардуера на NetHSM следните функции не са реализирани в REST API на софтуерния контейнер:
конфигурация на мрежата
възстановяване на фабричните настройки
рестартиране
актуализация на софтуера
Контейнерът може да бъде изпълнен по следния начин.
$ sudo docker run --rm -ti -p8443:8443 nitrokey/nethsm:testing
$ podman run --rm -ti -p8443:8443 docker.io/nitrokey/nethsm:testing
Това ще стартира NetHSM като Unix процес в контейнера и ще разкрие REST API на порт 8443 чрез протокола HTTPS.
Освен като процес на Unix NetHSM може да се стартира и като ядро, поддържано от KVM.
Контейнерът може да бъде изпълнен по следния начин.
$ docker run -ti --rm -p 8443:8443 --device /dev/net/tun --device /dev/kvm --cap-add=NET_ADMIN nitrokey/nethsm:testing
Това ще стартира NetHSM като едноядрен софтуер във виртуална машина KVM. Контейнерът ще разкрие REST API чрез протокола HTTPS на интерфейса tap200 с IP адрес 192.168.1.100 и порт 8443.
Important
Контейнерът използва самостоятелно подписан сертификат TLS. Уверете се, че използвате правилните настройки на връзката, за да установите връзка. Моля, вижте глава Въведение в NetHSM, за да научите повече.
Интеграция към потребителско приложение#
За интегриране на NetHSM в собствени приложения са налични клиентски библиотеки за почти всички езици за програмиране. Тук са библиотеките за Python и Rust, както и този Rust crate от трета страна. За всички други езици за програмиране препоръчваме да използвате OpenAPI Generator.
Списъкът с всички налични езици може да бъде изтеглен по следния начин.
$ docker run --rm -ti openapitools/openapi-generator-cli list -i stable
$ podman run --rm -ti openapitools/openapi-generator-cli list -i stable
Клиентът на NetHSM може да бъде генериран за вашия език за програмиране по следния начин.
$ docker run --rm -ti -v "${PWD}/out:/out" openapitools/openapi-generator-cli generate -i=https://nethsmdemo.nitrokey.com/api_docs/nethsm-api.yaml -o out -g javascript
$ podman run --rm -ti -v "${PWD}/out:/out" openapitools/openapi-generator-cli generate -i=https://nethsmdemo.nitrokey.com/api_docs/nethsm-api.yaml -o out -g javascript
Генерираният клиентски код, в този пример JavaScript, ще бъде създаден в директорията ./out/
. Тази папка съдържа и необходимата документация как да я използвате.
Important
Ако Podman се използва с налагане на SELinux, може да се наложи етикетиране на монтирането на тома. Режимът на SELinux може да бъде поискан с sestatus |grep "Current mode"
. Ако режимът е зададен на enforcing
, е необходима промяна на контекста. В този случай монтирането на тома трябва да бъде постфиксирано с :z
, в резултат на което се получава -v "${PWD}/out:/out:z"
.
Интерфейс на командния ред#
Потребителите могат да администрират и използват NetHSM, като използват специален интерфейс за команден ред (CLI). Nitrokey предлага nitropy
, който се разпространява в базирания на Python pynitrokey. При nethsm
съществува алтернативно приложение от трета страна, което е разработено в Rust crate nethsm-cli.