Integration

In diesem Kapitel wird beschrieben, wie Sie NetHSM in Anwendungen integrieren und wie Sie diese Integration testen können. Wenn Sie auf der Suche nach Software sind, die sich bereits gut mit NetHSM integrieren lässt, finden Sie hier eine Liste kompatibler Software.

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

The NetHSM supports the PKCS#11 standard. The required driver is available from the repository. The repository contains the source code and libraries, for different operating systems. The PKCS#11 guide describes the usage in detail.

Entwicklung und Prüfung

Demo-Instanz

A public NetHSM demo instance is available at nethsmdemo.nitrokey.com. It will be reset every eight hours (CET 6:00, 14:00, 22:00). User admin, password adminadmin, unlock password 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 und Go Bibliothek. 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

If Podman is used with enforcing SELinux, a labeling to the volume mount might be required. The mode of SELinux can be requested with sestatus |grep "Current mode". If the mode is set to enforcing, a change to the context is required. In this case the volume mount must be suffixed with :z, resulting in -v "${PWD}/out:/out:z".

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.