Nitropy Kommandolinjeværktøj#

Denne vejledning viser, hvordan du får adgang til NetHMS via nitropy kommandolinjeværktøjet, som du skal downloade og installere.

Bemærk

Hvis du bruger en NetHSM-demoinstans med et selvsigneret certifikat, f.eks. ved hjælp af Docker-aftrykket, skal du bruge indstillingen --no-verify-tls for nitropy for at springe certifikatkontrollen over.

Bemærk

Indstil først værdien af $NETHSM_HOST til IP-adressen eller URL-adressen for din NetHSM. Vores demoserver kan nås på https://nethsmdemo.nitrokey.com/

Enhedsoplysninger & Status#

$ nitropy nethsm --host $NETHSM_HOST info

Host:    localhost:8443
Vendor:  Nitrokey GmbH
Product: NetHSM
$ nitropy nethsm --host $NETHSM_HOST state

NetHSM localhost:8443 is Unprovisioned

Tilrådighedsstillelse#

En ny NetHSM skal først forsynes med adgangsfraser og det aktuelle tidspunkt. Admin Passphrase er Administrator’s passphrase, som er superbrugeren af NetHSM’en. Unlock Passphrase bruges til at kryptere NetHSM’s fortrolige datalager.

Bemærk

NetHSM-demoinstansen på nethsmdemo.nitrokey.com er allerede tilvejebragt.

$ nitropy nethsm --host $NETHSM_HOST provision

NetHSM localhost:8443 provisioned

NetHSM kan bruges i Attended Boot-tilstand og Unattended Boot-tilstand.

  • I Attended Boot-tilstand skal Unlock Passphrase indtastes ved hver start, som bruges til at kryptere datalageret. Af sikkerhedshensyn anbefales denne tilstand.

  • I Unattended Boot-tilstand kræves der ingen Unlock Passphrase, og derfor kan NetHSM starte uden opsyn, og datalageret gemmes ukrypteret. Brug denne tilstand, hvis dine tilgængelighedskrav ikke kan opfyldes med Attended Boot-tilstand.

Henter den aktuelle tilstand:

$ nitropy nethsm --host $NETHSM_HOST get-config --unattended-boot

 Configuration for NetHSM localhost:8443:
 Unattended boot: off

Slå Unattended Boot-tilstand til:

$ nitropy nethsm --host $NETHSM_HOST set-unattended-boot on

 Updated the unattended boot configuration for NetHSM localhost:8443

Brugerstyring#

Roller#

Adskillelse af opgaver kan implementeres ved at bruge de tilgængelige roller. Hver brugerkonto, der er konfigureret på NetHSM, har en af følgende roller tildelt. Nedenfor følger en beskrivelse på højt niveau af de operationer, der er tilladt af de enkelte roller, og for slutpunktspecifikke detaljer henvises til dokumentationen for REST API’et.

  • R-Administrator: En brugerkonto med denne rolle har adgang til alle operationer, der leveres af REST API’et, med undtagelse af nøglebrugsoperationer, dvs. signering og dekryptering af meddelelser.

  • R-Operator: En brugerkonto med denne rolle har adgang til alle nøglebrugsoperationer, en delmængde af nøgleadministrationsoperationer med skrivebeskyttet adgang og brugeradministrationsoperationer, der kun tillader ændringer til deres egen konto.

  • R-Metrics: En brugerkonto med denne rolle har kun adgang til skrivebeskyttede metrikoperationer.

  • R-Backup: En brugerkonto med denne rolle har kun adgang til de operationer, der er nødvendige for at starte en systembackup.

Bemærk: I fremtidige udgivelser vil der muligvis blive indført flere roller.

Opretning & Sletning af brugere

Opret nu en ny bruger med operatørrollen, som kan bruges til at signere og dekryptere data. Bemærk, at NetHSM tildeler et tilfældigt bruger-id, hvis vi ikke angiver det.

$ nitropy nethsm --host $NETHSM_HOST  add-user --real-name "Jane User" --role Operator

User Operator added to NetHSM localhost:8443
$ nitropy nethsm --host $NETHSM_HOST delete-user "Jane User"

Nøglehåndtering#

Generere nøgler#

I denne vejledning ønsker vi at bruge en RSA-nøgle til at dekryptere data ved hjælp af PKCS #1 og til at signere data med PSS ved hjælp af SHA256. Så lad os generere en ny nøgle på NetHSM. Sørg for at bruge RSA-algoritmen og for at vælge RSA_Signature_PSS_SHA256 og RSA_Decryption_PKCS1-nøgleordningerne. Hvis du ikke angiver et nøgle-id, genererer NetHSM et tilfældigt id til den nye nøgle.

$ nitropy nethsm --host $NETHSM_HOST  generate-key --type RSA --mechanism RSA_Signature_PSS_SHA256 --mechanism RSA_Decryption_PKCS1 --length 2048 --key-id myFirstKey

Key myFirstKey generated on NetHSM localhost:8443

Import af nøgler#

I stedet for at generere en nøgle på NetHSM kan du også importere eksisterende private nøgler til NetHSM:

$ nitropy nethsm --host $NETHSM_HOST  add-key --type RSA --mechanism RSA_Signature_PSS_SHA256 --mechanism RSA_Decryption_PKCS1 --key-id mySecondKey --public-exponent AQAB --prime-p "AOnWFZ+JrI/xOXJU04uYCZOiPVUWd6CSbVseEYrYQYxc7dVroePshz29tc+VEOUP5T0O8lXMEkjFAwjW6C9QTAsPyl6jwyOQluMRIkdN4/7BAg3HAMuGd7VmkGyYrnZWW54sLWp1JD6XJG33kF+9OSar9ETPoVyBgK5punfiUFEL" \
    --prime-q "ANT1kWDdP9hZoFKT49dwdM/S+3ZDnxQa7kZk9p+JKU5RaU9e8pS2GOJljHwkES1FH6CUGeIaUi81tRKe2XZhe/163sEyMcxkaaRbBbTc1v6ZDKILFKKt4eX7LAQfhL/iFlgi6pcyUM8QDrm1QeFgGz11ChM0JuQw1WwkX06lg8iv"

Key mySecondKey added to NetHSM localhost:8443

Liste over nøgler#

For at sikre, at nøglen er blevet oprettet og har de korrekte indstillinger for algoritme og mekanisme, kan vi spørge alle nøgler på NetHSM:

$ nitropy nethsm --host $NETHSM_HOST list-keys
Keys on NetHSM localhost:8443:

Key ID          Algorithm       Mechanisms                                      Operations
----------      ---------       ----------------------------------------------  ----------
myFirstKey      RSA             RSA_Decryption_PKCS1, RSA_Signature_PSS_SHA256  0
mySecondKey     RSA             RSA_Decryption_PKCS1, RSA_Signature_PSS_SHA256  0

Vis nøgleoplysninger#

Vi kan også forespørge den offentlige nøgle for det genererede nøglepar:

$ nitropy nethsm --host $NETHSM_HOST get-key myFirstKey

For at kunne bruge nøglen med OpenSSL eksporterer vi den som en PEM-fil og gemmer den som public.pem:

$ nitropy nethsm --host $NETHSM_HOST get-key myFirstKey --public-key > public.pem

Vi kan inspicere nøglen med openssl og bruge den til kryptering eller signaturverifikation (som beskrevet i næste afsnit):

$ openssl rsa -in public.pem -pubin -text

RSA Public-Key: (2048 bit)
Modulus:
          00:c3:56:f5:09:cc:a9:3e:ca:16:2e:fb:d2:8b:9d:
          a9:33:5a:87:8f:3f:7a:bb:8a:3d:62:9b:5d:56:84:
          95:97:bb:97:f0:77:e2:c8:59:f2:b5:c6:b7:f5:b3:
          76:69:a3:e8:f6:b7:35:f4:3c:52:6d:3c:a0:b6:a1:
          e4:1a:32:05:1d:51:68:21:7d:fc:53:69:ec:bc:0b:
          a0:db:63:b2:0e:47:00:03:4d:98:1f:ab:c0:7b:2e:
          3c:8f:b6:36:ff:f0:db:80:26:f0:a6:af:30:2f:7b:
          16:fd:5c:db:0f:2c:54:8a:26:2b:db:3d:78:49:4b:
          7b:d1:60:ea:a7:f0:b4:5e:fc:33:ff:57:f8:83:fd:
          12:64:8f:29:d1:94:96:9a:15:18:5d:04:ca:1c:29:
          44:ad:42:31:c5:80:38:4c:eb:3b:b8:7e:17:27:5c:
          69:a8:88:44:ea:d1:82:64:fe:51:31:47:97:a7:a9:
          87:c3:13:c9:00:7a:b9:fb:6f:cc:66:4c:07:d7:68:
          fa:78:68:9a:e7:87:1e:94:c6:27:92:5f:f2:7d:11:
          44:11:b5:39:35:59:2c:cd:f9:4f:59:e3:56:93:1f:
          94:20:fd:6b:23:0d:15:e6:4e:bb:84:a8:a5:0d:9f:
          1c:90:ab:a8:10:04:50:12:c1:80:02:94:85:78:df:
          d6:b3
Exponent: 65537 (0x10001)
writing RSA key
-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAw1b1CcypPsoWLvvSi52p
M1qHjz96u4o9YptdVoSVl7uX8HfiyFnytca39bN2aaPo9rc19DxSbTygtqHkGjIF
HVFoIX38U2nsvAug22OyDkcAA02YH6vAey48j7Y2//DbgCbwpq8wL3sW/VzbDyxU
iiYr2z14SUt70WDqp/C0Xvwz/1f4g/0SZI8p0ZSWmhUYXQTKHClErUIxxYA4TOs7
uH4XJ1xpqIhE6tGCZP5RMUeXp6mHwxPJAHq5+2/MZkwH12j6eGia54celMYnkl/y
fRFEEbU5NVkszflPWeNWkx+UIP1rIw0V5k67hKilDZ8ckKuoEARQEsGAApSFeN/W
swIDAQAB
-----END PUBLIC KEY-----

Nøglecertifikater#

Det er muligt at indstille og forespørge certifikater for de nøgler, der er gemt på en NetHSM-instans:

$ nitropy nethsm --host $NETHSM_HOST  set-certificate myFirstKey --mime-type application/x-pem-file /tmp/cert.pem

Updated the certificate for key myFirstKey on NetHSM localhost:8443
$ nitropy nethsm --host $NETHSM_HOST get-certificate myFirstKey > /tmp/cert.pem

Anmodninger om signering af nøglecertifikater#

NetHSM understøtter generering af Certificate Signing Requests (CSR) for de lagrede nøgler:

$ nitropy nethsm --host $NETHSM_HOST csr --key-id myFirstKey --country DE --state-or-province BE --locality Berlin --organization ACME --organizational-unit IT --common-name example.com --email-address it@example.com

Vigtigste operationer#

Vi kan kryptere data for den nøgle, der er gemt på NetHSM, ved hjælp af OpenSSL. (public.pem er den offentlige nøglefil, som vi oprettede i afsnittet Vis nøgledetaljer.)

$ echo 'NetHSM rulez!' | OpenSSL rsautl -encrypt -inkey public.pem -pubin | base64 > data.crypt
$ nitropy nethsm -h $NETHSM_HOST decrypt -k myFirstKey -d "$(cat data.crypt)" -m PKCS1 | base64 -d

NetHSM rulez!

På samme måde kan vi signere data ved hjælp af nøglen på NetHSM. For RSA og ECDSA skal vi først beregne en digest:

$ echo 'NetHSM rulez!' > data
$ openssl dgst -sha256 -binary data | base64 > data.digest

Derefter kan vi oprette en signatur ud fra dette digest ved hjælp af NetHSM:

$ nitropy nethsm -h $NETHSM_HOST sign -k myFirstKey -m PSS_SHA256 -d "$(cat data.digest)" | base64 -d > data.sig

Brug derefter OpenSSL til at verificere signaturen:

$ openssl dgst -sha256 -verify public.pem -signature data.sig -sigopt rsa_padding_mode:pss -sigopt rsa_pss_saltlen:-1 data

Verified OK

Oprettelse af sikkerhedskopier#

Det er muligt at lave en sikkerhedskopi af NetHSM, som både indeholder konfigurationen og de gemte nøgler. For at oprette en sikkerhedskopi skal du først indstille en sikkerhedskopi-passphrase, som bruges til at kryptere sikkerhedskopifilen:

$ nitropy nethsm -h $NETHSM_HOST -u admin set-backup-passphrase

Updated the backup passphrase for NetHSM localhost:8443

Nu skal du oprette en bruger med rollen R-Backup:

$ nitropy nethsm -h $NETHSM_HOST -u admin add-user --user-id backup --real-name "Backup User" --role backup

User backup added to NetHSM localhost:8443

Derefter kan du generere sikkerhedskopien og skrive den til en fil:

$ nitropy nethsm -h $NETHSM_HOST backup /tmp/nethsm-backup

Backup for localhost:8443 written to /tmp/backup

Gendannelse af sikkerhedskopier#

Denne sikkerhedskopifil kan gendannes på en NetHSM-instans, der ikke er tilknyttet:

$ nitropy nethsm -h $NETHSM_HOST restore --backup-passphrase backup-passphrase backupencryptionkey /tmp/nethsm-backup

Backup restored on NetHSM localhost:8443

Opdatering af NetHSM#

Advarsel

Der kan opstå datatab som følge af installationen af en betaopdatering!

$ nitropy nethsm --host $NETHSM_HOST  update /tmp/nethsm-update.img.cpio

Image /tmp/nethsm-update.img.cpio uploaded to NetHSM localhost:8443

Hvis du vil fortsætte med installationen, kan du nu bekræfte opdateringen:

$ nitropy nethsm --host $NETHSM_HOST     commit-update

Update successfully committed on NetHSM localhost:8443

Alternativt kan du annullere opdateringen:

$ nitropy nethsm --host $NETHSM_HOST  cancel-update

Update successfully cancelled on NetHSM localhost:8443