Intégration#

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

Pilote PKCS#11#

Important

Ce pilote n’est encore qu’une première implémentation de validation de concept qui ne met en œuvre que les fonctions nécessaires au fonctionnement des serveurs TLS, comme par exemple un serveur HTTPS.

  1. Téléchargez le pilote PKCS#11 pour NetHSM.

  2. Modifiez le fichier de configuration p11nethsm.conf en fonction de votre configuration (par exemple l’adresse, le nom de l’opérateur) et stockez-le dans $HOME/.nitrokey, /etc/nitrokey/, ou dans le dossier où votre application est exécutée.

Cryptage et décryptage#

Après avoir créé une clé (ici : ID 42) avec le mécanisme correspondant, vous pouvez l’utiliser pour le cryptage et le décryptage, mais vous devez d’abord créer la clé :

$ KEYID=42
$ HEXID=$(echo ${KEYID}'\c' | xxd -ps)
$ curl -s -X GET https://nethsmdemo.nitrokey.com/api/v1/keys/$KEYID/public.pem -o public.pem

Maintenant vous pouvez crypter :

$ echo 'NetHSM rulez!' | openssl pkeyutl -encrypt -pubin -inkey public.pem -pkeyopt rsa_padding_mode:oaep -pkeyopt rsa_oaep_md:sha512 -pkeyopt rsa_mgf1_md:sha512 -out encrypted.data

Et décryptez :

$ pkcs11-tool --module p11nethsm.so -v --decrypt --mechanism RSA-PKCS-OAEP --input-file encrypted.data --id $HEXID --hash-algorithm SHA512

Signature#

Créez d’abord à nouveau la clé :

$ KEYID=23
$ HEXID=$(echo ${KEYID}'\c' | xxd -ps)
$ curl -s -X GET https://nethsmdemo.nitrokey.com/api/v1/keys/$KEYID/public.pem -o public.pem

Après avoir créé une clé (ici : ID 23) avec le mécanisme correspondant, vous pouvez l’utiliser pour la signature :

$ echo 'NetHSM rulez!' | pkcs11-tool --module p11nethsm.so -v --sign --mechanism SHA512-RSA-PKCS-PSS --output-file sig.data --id $HEXID
$ echo 'NetHSM rulez!' | openssl dgst -keyform PEM -verify public.pem -sha512 -sigopt rsa_padding_mode:pss -sigopt rsa_pss_saltlen:-1 -signature sig.data

Développement et essais#

Une instance de démonstration publique de NetHSM est disponible à l’adresse nethsmdemo.nitrokey.com.

Vous pouvez également exécuter le NetHSM en tant que conteneur Docker localement. Le conteneur NetHSM nécessite une virtualisation imbriquée pour une séparation forte avec les autres conteneurs. Ainsi, pour démarrer un conteneur NetHSM, vous avez besoin d’un hôte Linux avec /dev/kvm disponible. Exécutez cette commande :

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

Intégration dans une application personnalisée#

Pour intégrer le NetHSM dans des applications personnalisées propres, des bibliothèques client sont disponibles pour presque tous les langages de programmation. Par conséquent, nous recommandons d’utiliser OpenAPI Generator.

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

$ docker run --pull --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.

REST-API#

La spécification de l’API du NetHSM’s est disponible au format OpenAPI, et peut être inspectée et testée dans le navigateur d’API.