Integrare#

Capitolul descrie procesele pentru diferite sarcini și se adresează tuturor grupurilor de utilizatori.

Driver PKCS#11#

Important

Acest driver este încă o implementare timpurie de tip „Proof of Concept” care implementează doar funcțiile necesare pentru operarea serverelor TLS, cum ar fi, de exemplu, un server HTTPS.

  1. Descărcați driverul PKCS#11 pentru NetHSM.

  2. Modificați fișierul de configurare p11nethsm.conf în funcție de configurația dvs. (de exemplu, adresa, numele operatorului) și stocați-l în $HOME/.nitrokey, /etc/nitrokey/ sau în dosarul în care este executată aplicația dvs.

Criptare și descifrarea#

După ce ați creat o cheie (aici: ID 42) cu mecanismul corespunzător, o puteți utiliza pentru criptare și decriptare, dar mai întâi trebuie să creați cheia:

$ 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

Acum puteți cripta:

$ 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

Și decriptați:

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

Semnarea#

Mai întâi, creați din nou cheia:

$ 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

După ce ați creat o cheie (aici: ID 23) cu mecanismul corespunzător, o puteți utiliza pentru semnare:

$ 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

Dezvoltare și testare#

O instanță demo publică NetHSM este disponibilă la nethsmdemo.nitrokey.com.

Alternativ, puteți rula NetHSM ca un container Docker local. Containerul NetHSM necesită o virtualizare imbricata pentru o separare puternică cu alte containere. Astfel, pentru a porni un container NetHSM aveți nevoie de o gazdă Linux cu /dev/kvm disponibil. Executați această comandă:

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

Integrarea în aplicația personalizată#

Pentru a integra NetHSM în propriile aplicații personalizate, sunt disponibile biblioteci client pentru aproape toate limbajele de programare. Prin urmare, vă recomandăm să utilizați OpenAPI Generator.

Lista tuturor limbilor disponibile poate fi consultată după cum urmează.

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

Clientul NetHSM poate fi generat pentru limbajul dumneavoastră de programare după cum urmează.

$ 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

Codul generat de client, în acest exemplu JavaScript, va fi creat în directorul ./out/. Acest director conține, de asemenea, documentația necesară modului de utilizare.

REST-API#

Specificația API a NetHSM’s este disponibilă în formatul OpenAPI, și poate fi inspectată și testată în browserul API.