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 im 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 ausführlich, wie sie zu verwenden sind.

Wichtig

Bei diesem Treiber handelt es sich noch um eine frühe Proof-of-Concept-Implementierung, die nur die Funktionen implementiert, die für den Betrieb von TLS-Servern erforderlich sind.

Entwicklung und Prüfung#

Eine öffentliche NetHSM-Demoinstanz ist unter nethsmdemo.nitrokey.com verfügbar.

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 das NetHSM in eigene Anwendungen zu integrieren, sind Client-Bibliotheken für fast alle Programmiersprachen verfügbar. Wir empfehlen daher 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 NetHSM’s API-Spezifikation ist im OpenAPI-Format verfügbar und kann im API-Browser eingesehen und getestet werden.