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