Интеграция#
Глава описывает процессы для различных задач и ориентирована на все группы пользователей.
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. Он будет перезагружаться каждые восемь часов (CET 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.
Кроме запуска NetHSM как Unix-процесса, его можно запустить как юникс-ядро, поддерживаемое 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.
Важно
Контейнер использует самоподписанный сертификат 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/
. Эта папка также содержит необходимую документацию по использованию.
Важно
Если 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.