Integration#

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

PKCS#11#

Der NetHSM unterstützt den PKCS#11-Standard. Der benötigte Treiber ist über das Repository ` <https://github.com/Nitrokey/nethsm-pkcs11>` __ 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#

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“.

Alternativ können Sie den NetHSM auch als Docker-Container lokal ausführen.

Der Container kann wie folgt ausgeführt werden.

$ sudo docker run --rm -ti -p8443:8443 nitrokey/nethsm:testing

Dadurch wird die REST-API über das HTTPS-Protokoll am Port „8443“ bereitgestellt.

Wichtig

Der Container verwendet ein selbstsigniertes TLS-Zertifikat. Stellen Sie sicher, dass Sie die richtigen Verbindungseinstellungen verwenden, um eine Verbindung herzustellen. Weitere Informationen finden Sie im Kapitel NetHSM Einführung.

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.

REST-API#

Die API-Spezifikation von NetHSM ist im OpenAPI-Format verfügbar und kann mit dem API-Browser eingesehen und getestet werden.