Важно
Этот драйвер все еще является ранней реализацией Proof of Concept, которая реализует только функции, необходимые для работы TLS-серверов, таких как, например, HTTPS-сервер.
Доступ к NetHSM с помощью драйвера PKCS#11#
Загрузите драйвер PKCS#11 для NetHSM.
Измените конфигурационный файл
p11nethsm.conf
в соответствии с вашей настройкой (например. адрес, имя оператора) и сохраните его в$HOME/.nitrokey
,/etc/nitrokey/
, или в папке, где выполняется ваше приложение.
Шифрование и расшифровка#
После создания ключа (здесь: ID 42) с помощью соответствующего механизма, вы можете использовать его для шифрования и дешифрования, но сначала необходимо создать ключ:
$ 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
Теперь вы можете шифровать:
$ 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
… И расшифровать:
$ pkcs11-tool --module p11nethsm.so -v --decrypt --mechanism RSA-PKCS-OAEP --input-file encrypted.data --id $HEXID --hash-algorithm SHA512
Подпись#
Сначала снова создайте ключ:
$ 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
После создания ключа (здесь: ID 23) с помощью соответствующего механизма, вы можете использовать его для подписания:
$ 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