Интеграция#

Главата описва процеси за различни задачи и е насочена към всички групи потребители.

Драйвер PKCS#11#

Important

Този драйвер все още е ранна реализация на концепцията, която изпълнява само функциите, необходими за работа с TLS сървъри, като например HTTPS сървър.

  1. Изтеглете драйвера PKCS#11 за NetHSM.

  2. Променете конфигурационния файл 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

Разработване и тестване#

Публична демонстрационна инстанция на NetHSM е налична на адрес nethsmdemo.nitrokey.com.

Като алтернатива можете да стартирате контейнера Docker наNetHSM локално. Контейнерът NetHSM изисква вложена виртуализация за силно разделяне с други контейнери. Следователно, за да стартирате контейнер NetHSM, се нуждаете от хост с Linux и наличен /dev/kvm. Изпълнете тази команда:

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

Интеграция към потребителско приложение#

За интегриране на NetHSM в собствени приложения са налични клиентски библиотеки за почти всички езици за програмиране. Затова препоръчваме да използвате OpenAPI Generator.

Списъкът с всички налични езици може да бъде изтеглен по следния начин.

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

Клиентът на NetHSM може да бъде генериран за вашия език за програмиране по следния начин.

$ 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

Генерираният клиентски код, в този пример JavaScript, ще бъде създаден в директорията ./out/. Тази папка съдържа и необходимата документация как да я използвате.

REST-API#

Спецификацията на API на NetHSM‘ е налична във формат OpenAPI и може да бъде проверена и тествана в Браузъра на API.