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.

Accès à un NetHSM à l’aide du pilote PKCS#11#

  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