Integrazione#

Il capitolo descrive i processi per i vari compiti e si rivolge a tutti i gruppi di utenti.

REST-API#

L’interfaccia principale di NetHSM è una moderna REST-API che garantisce le migliori prestazioni e funzionalità. Le specifiche dell’API sono disponibili nel formato OpenAPI, e possono essere ispezionate e testate nel browser API ` <https://nethsmdemo.nitrokey.com/api_docs/index.html>`_ .

PKCS#11#

NetHSM supporta lo standard PKCS#11. Il driver necessario è disponibile presso il repository ` <https://github.com/Nitrokey/nethsm-pkcs11>` __. Il repository contiene il codice sorgente e le librerie, per diversi sistemi operativi. La guida PKCS#11 descrive l’uso in dettaglio.

Sviluppo e test#

Un’istanza demo pubblica di NetHSM è disponibile all’indirizzo nethsmdemo.nitrokey.com. Verrà ripristinata ogni otto ore (CET 6:00, 14:00, 22:00). Utente «admin», password «adminadmin», password di sblocco «unlockunlock».

In alternativa, è possibile eseguire NetHSM come contenitore Docker ` <https://hub.docker.com/r/nitrokey/nethsm>`_ localmente.

Il contenitore può essere eseguito come segue.

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

Questo eseguirà NetHSM come processo Unix all’interno del contenitore ed esporrà l’API REST sulla porta 8443 tramite il protocollo HTTPS.

Oltre a essere eseguito come processo Unix, NetHSM può essere eseguito come unikernel supportato da KVM.

Il contenitore può essere eseguito come segue.

$ docker run -ti --rm -p 8443:8443 --device /dev/net/tun --device /dev/kvm --cap-add=NET_ADMIN nitrokey/nethsm:testing

Questo eseguirà NetHSM come unikernel all’interno di una macchina virtuale KVM. Il contenitore esporrà l’API REST, tramite il protocollo HTTPS, sull’interfaccia tap200 con l’indirizzo IP 192.168.1.100 e la porta 8443.

Importante

Il contenitore utilizza un certificato TLS autofirmato. Assicurarsi di usare le impostazioni di connessione corrette per stabilire una connessione. Per saperne di più, consultare il capitolo Introduzione a NetHSM.

Integrazione all’applicazione personalizzata#

Per integrare NetHSM nelle proprie applicazioni personalizzate, sono disponibili librerie client per quasi tutti i linguaggi di programmazione. Sono disponibili librerie per Python e Rust nonché questo crate Rust di terze parti. Per tutti gli altri linguaggi di programmazione si consiglia di utilizzare OpenAPI Generator.

L’elenco di tutte le lingue disponibili può essere recuperato come segue.

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

Il client NetHSM può essere generato per il vostro linguaggio di programmazione come segue.

$ 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

Il codice client generato, in questo esempio JavaScript, sarà creato nella cartella ./out/. Questa cartella contiene anche la documentazione necessaria al suo utilizzo.

Importante

Se Podman viene usato con SELinux, potrebbe essere necessaria un’etichettatura del montaggio del volume. La modalità di SELinux può essere richiesta con sestatus |grep "Current mode". Se la modalità è impostata su enforcing, è necessaria una modifica del contesto. In questo caso il montaggio del volume deve essere postfissato con :z, ottenendo -v "${PWD}/out:/out:z".

Interfaccia a riga di comando#

Gli utenti possono amministrare e utilizzare un NetHSM utilizzando un’interfaccia a riga di comando (CLI) dedicata. Nitrokey offre nitropy, che è distribuito nel crate Python pynitrokey. Con nethsm esiste un’applicazione alternativa di terze parti, sviluppata nel crate Rust nethsm-cli.