Integration#

Kapitlet beskriver processer for forskellige opgaver og henvender sig til alle brugergrupper.

REST-API#

NetHSM’s primære grænseflade er et moderne REST-API, der garanterer den bedste ydeevne og funktionalitet. API-specifikationen er tilgængelig i OpenAPI-format, og kan inspiceres og testes i API-browseren.

PKCS#11#

NetHSM understøtter PKCS#11-standarden. Den nødvendige driver er tilgængelig fra repository. Repository’et indeholder kildekoden og biblioteker til forskellige operativsystemer. ` PKCS#11 guide <pkcs11-setup.html>`_ beskriver brugen i detaljer.

Udvikling og afprøvning#

Demo-instans#

En offentlig NetHSM-demoinstans er tilgængelig på nethsmdemo.nitrokey.com. Den vil blive nulstillet hver ottende time (CET 6:00, 14:00, 22:00). Bruger »admin«, adgangskode »adminadmin«, oplåsningsadgangskode »unlockunlock«.

Containerbillede#

Containerbilledet distribueres som et OCI-image og kan hentes fra Docker Hub. Det kan køres lokalt med en kompatibel executor, f.eks. Docker eller Podman.

Sammenlignet med NetHSM-hardwaren er følgende funktioner ikke implementeret i softwarecontainerens REST API:

  • netværkskonfiguration

  • fabriksindstilling

  • genstart

  • softwareopdatering

Beholderen kan udføres på følgende måde.

$ sudo docker run --rm -ti -p8443:8443 nitrokey/nethsm:testing

Dette vil køre NetHSM som en Unix-proces inde i containeren og eksponere REST-API’en på port 8443 via HTTPS-protokollen.

Ud over at køre NetHSM som en Unix-proces kan den også køres som en unikernel, der understøttes af KVM.

Beholderen kan udføres på følgende måde.

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

Dette vil køre NetHSM som en unikernel inde i en virtuel KVM-maskine. Containeren vil eksponere REST-API’en via HTTPS-protokollen på grænsefladen tap200 med IP-adressen 192.168.1.100 og port 8443.

Vigtigt

Beholderen bruger et selvsigneret TLS-certifikat. Sørg for at bruge de korrekte forbindelsesindstillinger for at oprette en forbindelse. Se kapitel NetHSM-introduktion for at få mere at vide.

Integration til brugerdefineret applikation#

For at integrere NetHSM i egne brugerdefinerede applikationer er klientbiblioteker tilgængelige for næsten alle programmeringssprog. Her er biblioteker til Python og Rust samt denne 3. parts Rust crate. Til alle andre programmeringssprog anbefaler vi at bruge OpenAPI Generator.

Listen over alle tilgængelige sprog kan hentes på følgende måde.

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

NetHSM-klienten kan genereres til dit programmeringssprog på følgende måde.

$ 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

Den genererede klientkode, i dette eksempel JavaScript, vil blive oprettet i mappen ./out/. Denne mappe indeholder også den nødvendige dokumentation for, hvordan den skal bruges.

Vigtigt

Hvis Podman bruges med håndhævelse af SELinux, kan det være nødvendigt at mærke volumenmonteringen. Tilstanden for SELinux kan anmodes med sestatus |grep "Current mode". Hvis tilstanden er indstillet til enforcing, er en ændring af konteksten nødvendig. I dette tilfælde skal volumenmonteringen efterfixeres med :z, hvilket resulterer i -v "${PWD}/out:/out:z".

Kommandolinje-grænseflade#

Brugere kan administrere og bruge en NetHSM ved hjælp af en dedikeret kommandolinjegrænseflade (CLI). Nitrokey tilbyder nitropy, som er distribueret i den Python-baserede pynitrokey. Med nethsm findes der en alternativ tredjepartsapplikation, som er udviklet i Rust crate nethsm-cli.