Intégration#

Ce chapitre décrit des processus pour diverses tâches et s’adresse à tous les groupes d’utilisateurs.

REST-API#

L’interface principale de NetHSM est une API REST moderne qui garantit les meilleures performances et fonctionnalités. La spécification de l’API est disponible au format OpenAPI, et peut être inspectée et testée dans le navigateur API.

PKCS#11#

Le NetHSM prend en charge la norme PKCS#11. Le pilote requis est disponible dans le dépôt ` <https://github.com/Nitrokey/nethsm-pkcs11>` __. Le dépôt contient le code source et les bibliothèques, pour différents systèmes d’exploitation. Le guide PKCS#11 décrit l’utilisation en détail.

Développement et essais#

Une instance publique de démonstration de NetHSM est disponible à l’adresse nethsmdemo.nitrokey.com. Elle sera réinitialisée toutes les huit heures (CET 6:00, 14:00, 22:00). Utilisateur « admin », mot de passe « adminadmin », mot de passe de déverrouillage « unlockunlock ».

Vous pouvez également exécuter le NetHSM en tant que conteneur Docker ` <https://hub.docker.com/r/nitrokey/nethsm>`_ localement.

Le conteneur peut être exécuté comme suit.

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

NetHSM sera exécuté en tant que processus Unix à l’intérieur du conteneur et exposera l’API REST sur le port 8443 via le protocole HTTPS.

Outre l’exécution du NetHSM en tant que processus Unix, il peut être exécuté en tant que noyau unique pris en charge par KVM.

Le conteneur peut être exécuté comme suit.

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

NetHSM fonctionnera ainsi comme un unikernel à l’intérieur d’une machine virtuelle KVM. Le conteneur exposera l’API REST, via le protocole HTTPS, sur l’interface tap200 avec l’adresse IP 192.168.1.100 et le port 8443.

Important

Le conteneur utilise un certificat TLS auto-signé. Veillez à utiliser les paramètres de connexion corrects pour établir une connexion. Veuillez vous référer au chapitre NetHSM introduction pour en savoir plus.

Intégration dans une application personnalisée#

Pour intégrer le NetHSM dans des applications personnalisées, des bibliothèques clients sont disponibles pour presque tous les langages de programmation. Voici les bibliothèques pour Python et Rust ainsi que ce crate Rust tiers. Pour tous les autres langages de programmation, nous recommandons d’utiliser OpenAPI Generator.

La liste de toutes les langues disponibles peut être récupérée comme suit.

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

Le client NetHSM peut être généré pour votre langage de programmation comme suit.

$ 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

Le code client généré, dans cet exemple JavaScript, sera créé dans le répertoire ./out/`. Ce dossier contient également la documentation nécessaire à son utilisation.

Important

Si Podman est utilisé avec SELinux, un étiquetage du montage du volume peut être nécessaire. Le mode de SELinux peut être demandé avec sestatus |grep "Current mode". Si le mode est défini à enforcing, un changement de contexte est nécessaire. Dans ce cas, le montage du volume doit être postfixé avec :z, ce qui donne -v "${PWD}/out:/out:z".

Interface de ligne de commande#

Les utilisateurs peuvent administrer et utiliser un NetHSM à l’aide d’une interface de ligne de commande (CLI) dédiée. Nitrokey propose nitropy, qui est distribué dans la base Python pynitrokey. Avec nethsm, il existe une autre application tierce, développée dans le crate Rust nethsm-cli.