Nástroj príkazového riadku Nitropy#

Tento návod ukazuje, ako pristupovať k NetHMS prostredníctvom nitropy nástroja príkazového riadka, ktorý si musíte stiahnuť a nainštalovať.

Poznámka

Ak používate demonštračnú inštanciu NetHSM s vlastným certifikátom, napríklad pomocou obrazu Docker, budete musieť použiť možnosť --no-verify-tls pre nitropy, aby ste preskočili kontrolu certifikátu.

Poznámka

Najprv nastavte hodnotu $NETHSM_HOST na IP adresu alebo URL vášho NetHSM. Náš demo server je dostupný na adrese https://nethsmdemo.nitrokey.com/

Informácie o zariadení & Stav#

$ 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

Zabezpečenie#

Nový NetHSM je potrebné najprv vybaviť prístupovými heslami a aktuálnym časom. Passphrase Admin je prístupová fráza správcu, ktorý je superpoužívateľom NetHSM. Passphrase Unlock sa používa na šifrovanie dôverného úložiska údajov NetHSM.

Poznámka

Demo inštancia NetHSM na adrese nethsmdemo.nitrokey.com je už zabezpečená.

$ nitropy nethsm --host $NETHSM_HOST provision

NetHSM localhost:8443 provisioned

NetHSM sa môže používať v režime Attended Boot a Unattended Boot.

  • V režime Attended Boot je potrebné pri každom spustení zadať Unlock Passphrase, ktorá sa používa na šifrovanie dátového úložiska. Z bezpečnostných dôvodov sa tento režim odporúča.

  • V režime Unattended Boot sa nevyžaduje odomykacia fráza, preto sa NetHSM môže spustiť bez obsluhy a dátové úložisko sa uloží nezašifrované. Tento režim použite, ak vaše požiadavky na dostupnosť nie je možné splniť pomocou režimu Attended Boot.

Vyhľadanie aktuálneho režimu:

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

 Configuration for NetHSM localhost:8443:
 Unattended boot: off

Zapnite režim Unattended Boot:

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

 Updated the unattended boot configuration for NetHSM localhost:8443

Správa používateľov#

Úlohy#

Oddelenie povinností možno realizovať pomocou rôznych rolí. Každému používateľskému účtu nakonfigurovanému v NetHSM je priradená jedna z nasledujúcich Rolí. Nasleduje stručný opis operácií povolených jednotlivými rolami. Podrobnosti týkajúce sa konkrétneho koncového bodu nájdete v dokumentácii REST API.

  • R-administrátor: Používateľský účet s touto rolou má prístup ku všetkým operáciám poskytovaným rozhraním REST API okrem operácií používania kľúčov, t. j. podpisovania a dešifrovania správ.

  • R-Operátor: Používateľský účet s touto rolou má prístup ku všetkým operáciám používania kľúčov, k podmnožine operácií správy kľúčov len na čítanie a k operáciám správy používateľov, ktoré umožňujú zmeny len na vlastnom účte.

  • R-Metrics: Používateľské konto s touto rolou má prístup len k operáciám s metrikami určenými na čítanie.

  • R-Backup: Používateľské konto s touto rolou má prístup len k operáciám potrebným na spustenie zálohovania systému.

Poznámka: V budúcich verziách môžu byť zavedené ďalšie role.

Vytváranie a odstraňovanie používateľov

Teraz vytvorte nového používateľa s rolou Operator, ktorý môže byť použitý na podpisovanie a dešifrovanie údajov. Všimnite si, že NetHSM priradí náhodné ID používateľa, ak ho nezadáme.

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

Riadenie kľúčov#

Generovanie kľúčov#

V tejto časti chceme použiť kľúč RSA na dešifrovanie údajov pomocou PKCS#1 a na podpisovanie údajov pomocou PSS pomocou SHA256. Vygenerujme teda nový kľúč v NetHSM. Uistite sa, že používate algoritmus RSA a že ste vybrali mechanizmy kľúčov RSA_Signature_PSS_SHA256 a RSA_Decryption_PKCS1. Ak nezadáte ID kľúča, NetHSM vygeneruje náhodné ID nového kľúča.

$ 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 kľúčov#

Namiesto generovania kľúča v NetHSM môžete do NetHSM importovať aj existujúce súkromné kľúče:

$ 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

Zoznam kľúčov#

Ak sa chceme uistiť, že kľúč bol vytvorený a má správne nastavenia algoritmu a mechanizmu, môžeme sa opýtať na všetky kľúče v 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

Zobraziť podrobnosti o kľúči#

Môžeme sa tiež opýtať na verejný kľúč vygenerovaného páru kľúčov:

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

Aby sme mohli kľúč používať s OpenSSL, exportujeme ho ako súbor PEM a uložíme ho ako public.pem:

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

Kľúč môžeme skontrolovať pomocou OpenSSL a použiť ho na šifrovanie alebo overenie podpisu (ako je opísané v nasledujúcej časti):

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

Kľúčové certifikáty#

Je možné nastaviť a vyžiadať si certifikáty pre kľúče uložené v inštancii NetHSM:

$ 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

Žiadosti o podpisovanie kľúčových certifikátov#

NetHSM podporuje generovanie žiadostí o podpis certifikátu (CSR) pre uložené kľúče:

$ 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

Kľúčové operácie#

Údaje pre kľúč uložený v NetHSM môžeme šifrovať pomocou OpenSSL. (public.pem je súbor verejného kľúča, ktorý sme vytvorili v časti Zobraziť podrobnosti o kľúči).

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

Podobne môžeme údaje podpísať pomocou kľúča na NetHSM. V prípade RSA a ECDSA musíme najprv vypočítať digest:

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

Potom môžeme vytvoriť podpis z tohto digestu pomocou NetHSM:

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

A potom použite OpenSSL na overenie podpisu:

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

Verified OK

Vytváranie záloh#

Je možné vytvoriť zálohu NetHSM, ktorá zachytáva konfiguráciu aj uložené kľúče. Aby ste mohli vytvoriť zálohu, musíte najprv nastaviť záložnú prístupovú frázu, ktorá sa použije na zašifrovanie záložného súboru:

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

Updated the backup passphrase for NetHSM localhost:8443

Teraz musíte vytvoriť používateľa s rolou 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

Potom môžete vygenerovať zálohu a zapísať ju do súboru:

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

Backup for localhost:8443 written to /tmp/backup

Obnovenie záloh#

Tento záložný súbor je možné obnoviť v nezaradenej inštancii NetHSM:

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

Backup restored on NetHSM localhost:8443

Aktualizácia NetHSM#

Varovanie

V dôsledku inštalácie beta aktualizácie môže dôjsť k strate údajov!

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

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

Ak chcete pokračovať v inštalácii, môžete teraz aktualizáciu potvrdiť:

$ nitropy nethsm --host $NETHSM_HOST     commit-update

Update successfully committed on NetHSM localhost:8443

Prípadne môžete aktualizáciu zrušiť:

$ nitropy nethsm --host $NETHSM_HOST  cancel-update

Update successfully cancelled on NetHSM localhost:8443