Integracja#
Rozdział opisuje procesy dla różnych zadań i skierowany jest do wszystkich grup użytkowników.
REST-API#
Podstawowym interfejsem NetHSM jest nowoczesny REST-API, który gwarantuje najlepszą wydajność i funkcjonalność. Specyfikacja API jest dostępna w formacie OpenAPI i może być sprawdzana i testowana w przeglądarce API ` <https://nethsmdemo.nitrokey.com/api_docs/index.html>`_ .
PKCS#11#
NetHSM obsługuje standard PKCS#11. Wymagany sterownik jest dostępny w repozytorium ` <https://github.com/Nitrokey/nethsm-pkcs11>` __. Repozytorium zawiera kod źródłowy i biblioteki dla różnych systemów operacyjnych. Przewodnik PKCS#11 szczegółowo opisuje jego użycie.
Rozwój i testowanie#
Instancja demonstracyjna#
Publiczna instancja demonstracyjna NetHSM jest dostępna pod adresem nethsmdemo.nitrokey.com. Będzie ona resetowana co osiem godzin (CET 6:00, 14:00, 22:00). Użytkownik „admin”, hasło „adminadmin”, hasło odblokowujące „unlockunlock”.
Obraz kontenera#
Obraz kontenera jest dystrybuowany jako obraz OCI i można go pobrać ze strony Docker Hub. Można go uruchomić lokalnie za pomocą kompatybilnego programu wykonawczego, np. Docker lub Podman.
W porównaniu do sprzętu NetHSM następujące funkcje nie są zaimplementowane w interfejsie REST API kontenera oprogramowania:
konfiguracja sieci
przywracanie ustawień fabrycznych
restart
aktualizacja oprogramowania
Kontener może być wykonany w następujący sposób.
$ sudo docker run --rm -ti -p8443:8443 nitrokey/nethsm:testing
$ podman run --rm -ti -p8443:8443 docker.io/nitrokey/nethsm:testing
Spowoduje to uruchomienie NetHSM jako procesu uniksowego wewnątrz kontenera i udostępnienie interfejsu API REST na porcie 8443 za pośrednictwem protokołu HTTPS.
Oprócz uruchamiania NetHSM jako procesu uniksowego, można go uruchomić jako unikernel obsługiwany przez KVM.
Kontener może być wykonany w następujący sposób.
$ docker run -ti --rm -p 8443:8443 --device /dev/net/tun --device /dev/kvm --cap-add=NET_ADMIN nitrokey/nethsm:testing
Spowoduje to uruchomienie NetHSM jako unikernel wewnątrz maszyny wirtualnej KVM. Kontener udostępni REST API, za pośrednictwem protokołu HTTPS, na interfejsie tap200 z adresem IP 192.168.1.100 i portem 8443.
Ważne
Kontener używa samopodpisanego certyfikatu TLS. Aby nawiązać połączenie, należy użyć odpowiednich ustawień połączenia. Więcej informacji można znaleźć w rozdziale NetHSM introduction.
Integracja z aplikacją niestandardową#
Aby zintegrować NetHSM z własnymi aplikacjami, dostępne są biblioteki klienckie dla prawie wszystkich języków programowania. Poniżej znajdują się biblioteki dla Python i Rust jak również 3rd party Rust crate. Dla wszystkich innych języków programowania zalecamy użycie OpenAPI Generator.
Listę wszystkich dostępnych języków można wyszukać w następujący sposób.
$ docker run --rm -ti openapitools/openapi-generator-cli list -i stable
$ podman run --rm -ti openapitools/openapi-generator-cli list -i stable
Klient NetHSM może zostać wygenerowany dla danego języka programowania w następujący sposób.
$ 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
Wygenerowany kod klienta, w tym przykładzie JavaScript, zostanie utworzony w katalogu ./out/
. Katalog ten zawiera również niezbędną dokumentację jak go używać.
Ważne
Jeśli Podman jest używany z egzekwowaniem SELinux, może być wymagana etykieta do montowania woluminów. Tryb SELinuksa może być żądany za pomocą sestatus |grep "Current mode"
. Jeśli tryb jest ustawiony na enforcing
, wymagana jest zmiana kontekstu. W tym przypadku uchwyt woluminu musi być postfiksowany z :z
, co daje -v "${PWD}/out:/out:z"
.
Interfejs wiersza poleceń#
Użytkownicy mogą administrować i korzystać z NetHSM za pomocą dedykowanego interfejsu wiersza poleceń (CLI). Nitrokey oferuje nitropy
, który jest dystrybuowany w opartym na Pythonie pynitrokey. W przypadku nethsm
istnieje alternatywna aplikacja innej firmy, która została opracowana w crate Rust nethsm-cli.