Integration#

Das Kapitel beschreibt Prozesse für verschiedene Aufgaben und richtet sich an alle Benutzergruppen.

REST-API#

Die primäre Schnittstelle von NetHSM ist eine moderne REST-API, die beste Leistung und Funktionalität garantiert. Die API-Spezifikation ist im OpenAPI-Format verfügbar und kann mit dem API-Browser eingesehen und getestet werden.

PKCS#11#

Der NetHSM unterstützt den PKCS#11-Standard. Der benötigte Treiber ist über das Repository verfügbar. Das Repository enthält den Quellcode und die Bibliotheken, für verschiedene Betriebssysteme. Der PKCS#11 Leitfaden beschreibt die Verwendung im Detail.

Entwicklung und Prüfung#

Demo-Instanz#

Eine öffentliche NetHSM-Demo-Instanz ist unter nethsmdemo.nitrokey.com verfügbar. Sie wird alle acht Stunden zurückgesetzt (CET 6:00, 14:00, 22:00). Benutzer „admin“, Passwort „adminadmin“, Entsperr-Passwort „unlockunlock“.

Container-Bild#

NetHSM Container-Images sind für Tests und Produktion verfügbar.

Integration in benutzerdefinierte Anwendung#

Um den NetHSM in eigene Anwendungen zu integrieren, sind Client-Bibliotheken für fast alle Programmiersprachen verfügbar. Hier sind Bibliotheken für Python und Rust sowie diese 3rd party Rust crate. Für alle anderen Programmiersprachen empfehlen wir die Verwendung von OpenAPI Generator.

Die Liste aller verfügbaren Sprachen kann wie folgt abgerufen werden.

$ docker run --rm -ti openapitools/openapi-generator-cli list -i stable

Der NetHSM-Client kann wie folgt für Ihre Programmiersprache generiert werden.

$ 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

Der generierte Client-Code, in diesem Beispiel JavaScript, wird im Verzeichnis ./out/ erstellt. Dieser Ordner enthält auch die notwendige Dokumentation, wie er zu verwenden ist.

Wichtig

Wenn Podman mit SELinux verwendet wird, kann eine Kennzeichnung der Datenträgereinbindung erforderlich sein. Der Modus von SELinux kann mit sestatus |grep "Current mode" abgefragt werden. Wenn der Modus auf enforcing gesetzt wird, ist eine Änderung des Kontexts erforderlich. In diesem Fall muss die Datenträger-Einhängung mit :z nachfixiert werden, was zu -v "${PWD}/out:/out:z" führt.

Befehlszeilenschnittstelle#

Benutzer können ein NetHSM über eine spezielle Befehlszeilenschnittstelle (CLI) verwalten und verwenden. Nitrokey bietet nitropy an, das in dem auf Python basierenden pynitrokey verteilt wird. Mit nethsm existiert eine alternative Drittanbieter-Anwendung, die in der Rust-Kiste nethsm-cli entwickelt wird.