Orodje ukazne vrstice Nitropy#

V tem priročniku je prikazano, kako do sistema NetHMS dostopati prek nitropy orodja ukazne vrstice, ki ga morate prenesti in namestiti.

Opomba

Če uporabljate demo primerek NetHSM s samopodpisanim potrdilom, na primer s sliko Docker, boste morali uporabiti možnost --no-verify-tls za nitropy, da preskočite preverjanje potrdila.

Opomba

Najprej nastavite vrednost $NETHSM_HOST na naslov IP ali URL vašega NetHSM. Naš demo strežnik je dosegljiv na naslovu https://nethsmdemo.nitrokey.com/

Informacije o napravi & 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

Zagotavljanje#

Nov NetHSM je treba najprej opremiti z gesli in trenutnim časom. Geslo Admin je geslo skrbnika, ki je nadrejeni uporabnik naprave NetHSM. Pasfraza za odklepanje se uporablja za šifriranje zaupne podatkovne shrambe naprave NetHSM.

Opomba

Demo primerek NetHSM na naslovu nethsmdemo.nitrokey.com je že zagotovljen.

$ nitropy nethsm --host $NETHSM_HOST provision

NetHSM localhost:8443 provisioned

NetHSM se lahko uporablja v načinu Attended Boot in Unattended Boot.

  • V načinu Attended Boot je treba ob vsakem zagonu vnesti Unlock Passphrase, ki se uporablja za šifriranje podatkovne shrambe. Zaradi varnostnih razlogov je ta način priporočljiv.

  • V načinu Unattended Boot geslo za odklepanje ni potrebno, zato se lahko NetHSM zažene brez nadzora, podatkovna shramba pa je shranjena nešifrirano. Ta način uporabite, če vaših zahtev glede razpoložljivosti ni mogoče izpolniti z načinom Aattended Boot.

Pridobi trenutni način:

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

 Configuration for NetHSM localhost:8443:
 Unattended boot: off

Vklopite način Neprimernega zagona:

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

 Updated the unattended boot configuration for NetHSM localhost:8443

Upravljanje uporabnikov#

Vloge#

Ločitev dolžnosti lahko izvedete z uporabo različnih vlog. Vsakemu uporabniškemu računu, konfiguriranemu v NetHSM, je dodeljena ena od naslednjih Vlog. V nadaljevanju je opis operacij, ki jih dovoljuje posamezna vloga, na visoki ravni. Za podrobnosti, ki se nanašajo na končno točko, glejte dokumentacijo API REST.

  • R-administrator: Uporabniški račun s to vlogo ima dostop do vseh operacij, ki jih zagotavlja API REST, razen operacij uporabe ključev, tj. podpisovanja in dešifriranja sporočil.

  • R-Operator: Uporabniški račun s to vlogo ima dostop do vseh operacij uporabe ključev, podmnožice operacij upravljanja ključev samo za branje in operacij upravljanja uporabnikov, ki omogočajo spremembe samo za lastni račun.

  • R-Metrika: Uporabniški račun s to vlogo ima dostop samo do operacij metrike za branje.

  • R-Backup: Uporabniški račun s to vlogo ima dostop samo do operacij, potrebnih za začetek varnostnega kopiranja sistema.

Opomba: V prihodnjih izdajah bodo morda uvedene dodatne vloge.

Odpiranje in brisanje uporabnikov

Ustvarite novega uporabnika z vlogo Operator, ki ga lahko uporabite za podpisovanje in dešifriranje podatkov. Upoštevajte, da NetHSM dodeli naključni ID uporabnika, če ga ne določimo.

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

Upravljanje ključev#

Ustvarjanje ključev#

V tem razdelku želimo uporabiti ključ RSA za dešifriranje podatkov z uporabo PKCS#1 in podpisovanje podatkov s PSS z uporabo SHA256. Zato ustvarimo nov ključ v napravi NetHSM. Prepričajte se, da uporabljate algoritem RSA in izberete mehanizma ključev RSA_Signature_PSS_SHA256 in RSA_Decryption_PKCS1. Če ne določite ID ključa, bo NetHSM za novi ključ ustvaril naključni ID.

$ 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

Uvozni ključi#

Namesto ustvarjanja ključa v napravi NetHSM lahko v napravo NetHSM uvozite tudi obstoječe zasebne ključ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

Seznam ključev#

Če želimo preveriti, ali je bil ključ ustvarjen ter ima pravilne nastavitve algoritma in mehanizma, lahko poizvedujemo po vseh ključih v sistemu 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

Prikaži podrobnosti o ključu#

Poizvedujemo lahko tudi po javnem ključu ustvarjenega para ključev:

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

Da bi lahko ključ uporabili z OpenSSL, ga izvozimo kot datoteko PEM in shranimo v datoteko public.pem:

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

Ključ lahko pregledamo s programom OpenSSL in ga uporabimo za šifriranje ali preverjanje podpisa (kot je opisano v naslednjem razdelku):

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

Ključna potrdila#

Za ključe, shranjene v instanci NetHSM, je mogoče nastaviti in poizvedovati po potrdilih:

$ 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

Zahteve za podpisovanje ključnih potrdil#

NetHSM podpira generiranje zahtevkov za podpis potrdila (CSR) za shranjene ključ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

Ključne operacije#

Podatke za ključ, shranjen v NetHSM, lahko šifriramo z uporabo OpenSSL. (public.pem je datoteka z javnim ključem, ki smo jo ustvarili v razdelku Prikaži podrobnosti o ključu.)

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

Podobno lahko podatke podpišemo s ključem v napravi NetHSM. Pri RSA in ECDSA moramo najprej izračunati prebavo:

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

Nato lahko iz tega digesta ustvarimo podpis z uporabo NetHSM:

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

Za preverjanje podpisa uporabite OpenSSL:

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

Verified OK

Ustvarjanje varnostnih kopij#

Možno je ustvariti varnostno kopijo sistema NetHSM, ki zajema konfiguracijo in shranjene ključe. Če želite ustvariti varnostno kopijo, morate najprej nastaviti geslo za varnostno kopijo, ki se uporablja za šifriranje datoteke z varnostno kopijo:

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

Updated the backup passphrase for NetHSM localhost:8443

Zdaj morate ustvariti uporabnika z vlogo 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

Nato lahko ustvarite varnostno kopijo in jo zapišete v datoteko:

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

Backup for localhost:8443 written to /tmp/backup

Obnovitev varnostnih kopij#

To varnostno datoteko je mogoče obnoviti v nerazporejenem primerku NetHSM:

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

Backup restored on NetHSM localhost:8443

Posodabljanje NetHSM#

Opozorilo

Zaradi namestitve posodobitve beta lahko pride do izgube podatkov!

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

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

Če želite nadaljevati z namestitvijo, lahko posodobitev potrdite:

$ nitropy nethsm --host $NETHSM_HOST     commit-update

Update successfully committed on NetHSM localhost:8443

Posodobitev lahko tudi prekličete:

$ nitropy nethsm --host $NETHSM_HOST  cancel-update

Update successfully cancelled on NetHSM localhost:8443