Nitropy Kommandoradsverktyg#

Den här handledningen visar hur du får tillgång till NetHMS via nitropy kommandoradsverktyget, som du måste ladda ner och installera.

Observera

Om du använder en NetHSM-demoinstans med ett självsignerat certifikat, t.ex. med hjälp av Docker-avbildningen, måste du använda alternativet --no-verify-tls för att hoppa över certifikatskontrollen.

Observera

Sätt först värdet för $NETHSM_HOST till IP-adressen eller webbadressen för din NetHSM. Vår demoserver kan nås på https://nethsmdemo.nitrokey.com/

Enhetsinformation & 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

Tillhandahållande#

En ny NetHSM måste först förses med lösenfraser och aktuell tid. Admin-passfrasen är administratörens passfras, som är superanvändare för NetHSM. Lösa upp lösen-frasen används för att kryptera NetHSM:s konfidentiella datalager.

Observera

NetHSM-demoinstansen på nethsmdemo.nitrokey.com har redan tillhandahållits.

$ nitropy nethsm --host $NETHSM_HOST provision

NetHSM localhost:8443 provisioned

NetHSM kan användas i läget Attended Boot och Unattended Boot.

  • I läget Attended Boot måste Unlock Passphrase anges vid varje start, vilket används för att kryptera datalagret. Av säkerhetsskäl rekommenderas detta läge.

  • I läget Unattended Boot krävs ingen Lösa upp lösenfras, därför kan NetHSM starta obevakat och datalagret lagras okrypterat. Använd det här läget om dina tillgänglighetskrav inte kan uppfyllas med läget Attended Boot.

Hämta det aktuella läget:

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

 Configuration for NetHSM localhost:8443:
 Unattended boot: off

Aktivera läget Unattended Boot:

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

 Updated the unattended boot configuration for NetHSM localhost:8443

Användarhantering#

Roller#

Uppdelning av arbetsuppgifter kan genomföras genom att använda olika roller. Varje användarkonto som konfigureras på NetHSM har en av följande roller tilldelade. Nedan följer en beskrivning på hög nivå av de operationer som är tillåtna för varje roll. För slutpunktsspecifika detaljer hänvisas till dokumentationen för REST API.

  • R-administratör: Ett användarkonto med denna roll har tillgång till alla åtgärder som tillhandahålls av REST API, med undantag för åtgärder för nyckelanvändning, dvs. signering och dekryptering av meddelanden.

  • R-Operator: Ett användarkonto med denna roll har tillgång till alla nyckelanvändningsoperationer, en delmängd av nyckelhanteringsoperationer som endast är skrivskyddade och användarhanteringsoperationer som endast tillåter ändringar för det egna kontot.

  • R-Metrics: Ett användarkonto med den här rollen har endast tillgång till skrivskyddade mätningar.

  • R-Backup: Ett användarkonto med denna roll har endast tillgång till de åtgärder som krävs för att initiera en systembackup.

Observera: I framtida versioner kan ytterligare roller införas.

Skapa och ta bort användare

Skapa nu en ny användare med rollen Operatör som kan användas för att signera och dekryptera data. Observera att NetHSM tilldelar ett slumpmässigt användar-ID om vi inte anger 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"

Nyckelhantering#

Generera nycklar#

I det här avsnittet vill vi använda en RSA-nyckel för att dekryptera data med hjälp av PKCS#1 och för att signera data med PSS med hjälp av SHA256. Låt oss därför generera en ny nyckel på NetHSM. Se till att använda RSA-algoritmen och att välja nyckelmekanismerna RSA_Signature_PSS_SHA256 och RSA_Decryption_PKCS1. Om du inte anger något nyckel-ID kommer NetHSM att generera ett slumpmässigt ID för den nya nyckeln.

$ 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

Importera nycklar#

I stället för att generera en nyckel på NetHSM kan du också importera befintliga privata nycklar till 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

Lista nycklar#

För att kontrollera att nyckeln har skapats och att den har rätt algoritm- och mekanisminställningar kan vi fråga efter alla nycklar 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

Visa viktiga detaljer#

Vi kan också fråga efter den offentliga nyckeln för det genererade nyckelparet:

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

För att kunna använda nyckeln med OpenSSL exporterar vi den som en PEM-fil och lagrar den som public.pem:

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

Vi kan granska nyckeln med OpenSSL och använda den för kryptering eller signaturverifiering (som beskrivs i nästa avsnitt):

$ 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-----

Importera nycklar och certifikat#

Det är möjligt att ställa in och fråga efter certifikat för de nycklar som lagras 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

Begäran om signering av nyckelcertifikat#

NetHSM stöder generering av Certificate Signing Requests (CSR) för de lagrade nycklarna:

$ 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

Viktiga verksamheter#

Vi kan kryptera data för nyckeln som lagras på NetHSM med hjälp av OpenSSL. (public.pem är den offentliga nyckelfilen som vi skapade i avsnittet Visa nyckelinformation.)

$ 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å samma sätt kan vi signera data med hjälp av nyckeln på NetHSM. För RSA och ECDSA måste vi först beräkna en sammanfattning:

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

Sedan kan vi skapa en signatur från denna sammanfattning med hjälp av NetHSM:

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

Använd sedan OpenSSL för att verifiera signaturen:

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

Verified OK

Skapa säkerhetskopior#

Det är möjligt att skapa en säkerhetskopia av NetHSM som innehåller både konfigurationen och de lagrade nycklarna. För att skapa en säkerhetskopia måste du först ställa in en lösenfras för säkerhetskopiering som används för att kryptera säkerhetskopieringsfilen:

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

Updated the backup passphrase for NetHSM localhost:8443

Nu måste du skapa en användare 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

Därefter kan du generera säkerhetskopian och skriva den till en fil:

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

Backup for localhost:8443 written to /tmp/backup

Återställning av säkerhetskopior#

Den här säkerhetskopian kan återställas på en NetHSM-instans som inte är tillgänglig:

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

Backup restored on NetHSM localhost:8443

Uppdatering av NetHSM#

Varning

Dataförlust kan uppstå på grund av installationen av en betauppdatering!

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

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

Om du vill fortsätta med installationen kan du nu bekräfta uppdateringen:

$ nitropy nethsm --host $NETHSM_HOST     commit-update

Update successfully committed on NetHSM localhost:8443

Alternativt kan du avbryta uppdateringen:

$ nitropy nethsm --host $NETHSM_HOST  cancel-update

Update successfully cancelled on NetHSM localhost:8443