Nitropy komandrindas rīks#

Šajā pamācībā ir parādīts, kā piekļūt NetHMS, izmantojot nitropy komandrindas rīku, kas ir jālejupielādē un jāinstalē.

Piezīme

Ja izmantojat NetHSM demonstrācijas gadījumu ar pašparakstītu sertifikātu, piemēram, izmantojot Docker attēlu, jums būs jāizmanto --no-verify-tls opcija </x>`nitropy, lai izlaistu sertifikāta pārbaudi.

Piezīme

Vispirms iestatiet vērtību $NETHSM_HOST uz NetHSM IP adresi vai URL. Mūsu demo serveri var sasniegt, izmantojot adresi https://nethsmdemo.nitrokey.com/

Informācija par ierīci & amp; statuss#

$ 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

Nodrošināšana#

Vispirms ir jānodrošina jauns NetHSM ar piekļuves frāzēm un pašreizējo laiku. Administratora parola ir administratora parola, kas ir NetHSM superlietotājs. Atbloķēšanas paroli izmanto, lai šifrētu NetHSM konfidenciālo datu krātuvi.

Piezīme

NetHSM demo instance vietnē nethsmdemo.nitrokey.com jau ir nodrošināta.

$ nitropy nethsm --host $NETHSM_HOST provision

NetHSM localhost:8443 provisioned

NetHSM var izmantot Attended Boot un Unattended Boot režīmā.

  • Attended Boot režīmā katras palaišanas laikā ir jāievada Unlock Passphrase, kas tiek izmantota datu krātuves šifrēšanai. Drošības apsvērumu dēļ šis režīms ir ieteicams.

  • Unattended Boot režīmā nav nepieciešama atbloķēšanas parole, tāpēc NetHSM var sākt darboties bez uzraudzības un datu krātuve tiek saglabāta nešifrētā veidā. Izmantojiet šo režīmu, ja pieejamības prasības nevar izpildīt ar Attended Boot režīmu.

Atgūst pašreizējo režīmu:

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

 Configuration for NetHSM localhost:8443:
 Unattended boot: off

Ieslēdziet Unattended Boot režīmu:

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

 Updated the unattended boot configuration for NetHSM localhost:8443

Lietotāju pārvaldība#

Lomas#

Pienākumu nodalīšanu var īstenot, izmantojot dažādas lomas. Katram NetHSM konfigurētajam lietotāja kontam ir piešķirta viena no šādām lomām. Turpmāk ir sniegts katras lomas atļauto darbību augsta līmeņa apraksts. Sīkāku informāciju par konkrētiem galapunktiem skatīt REST API dokumentācijā.

  • R-administrators: Lietotāja kontam ar šo lomu ir piekļuve visām REST API nodrošinātajām operācijām, izņemot atslēgu izmantošanas operācijas, t. i., ziņojumu parakstīšanu un atšifrēšanu.

  • R-Operators: Lietotāja kontam ar šo lomu ir piekļuve visām atslēgu izmantošanas operācijām, atslēgu pārvaldības operāciju apakškopai, kas paredzēta tikai lasīšanai, un lietotāju pārvaldības operācijām, kas ļauj veikt izmaiņas tikai savā kontā.

  • R-Metrika: Lietotāja kontam ar šo lomu ir piekļuve tikai nolasīšanas operācijām.

  • R-Backup: Lietotāja kontam ar šo lomu ir piekļuve tikai operācijām, kas nepieciešamas, lai izveidotu sistēmas dublējumu.

Piezīme: Nākamajās versijās var tikt ieviestas papildu lomas.

Lietotāju izveide un dzēšana

Tagad izveidojiet jaunu lietotāju ar lomu Operators, kuru var izmantot datu parakstīšanai un atšifrēšanai. Ņemiet vērā, ka NetHSM piešķir nejaušu lietotāja ID, ja mēs to nenorādām.

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

Atslēgas pārvaldība#

Ģenerēt atslēgas#

Šajā sadaļā mēs vēlamies izmantot RSA atslēgu, lai atšifrētu datus, izmantojot PKCS#1, un parakstītu datus ar PSS, izmantojot SHA256. Tāpēc ģenerēsim jaunu atslēgu NetHSM. Pārliecinieties, ka tiek izmantots RSA algoritms un izvēlēti atslēgas mehānismi RSA_Signature_PSS_SHA256 un RSA_Decryption_PKCS1. Ja nenorādīsiet atslēgas ID, NetHSM jaunajai atslēgai ģenerēs nejaušu 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

Importēšanas atslēgas#

Tā vietā, lai ģenerētu atslēgu NetHSM, varat arī importēt esošās privātās atslēgas 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

Saraksta atslēgas#

Lai pārliecinātos, ka atslēga ir izveidota un tai ir pareizie algoritma un mehānisma iestatījumi, mēs varam pieprasīt visas NetHSM atslēgas:

$ 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

Rādīt atslēgas informāciju#

Varam arī pieprasīt ģenerētā atslēgu pāra publisko atslēgu:

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

Lai atslēgu varētu izmantot ar OpenSSL, mēs to eksportējam kā PEM failu un saglabājam kā public.pem:

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

Mēs varam pārbaudīt atslēgu ar OpenSSL un izmantot to šifrēšanai vai paraksta pārbaudei (kā aprakstīts nākamajā sadaļā):

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

Atslēgas sertifikāti#

Ir iespējams iestatīt un pieprasīt sertifikātus NetHSM instancē saglabātajām atslēgām:

$ 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

Atslēgas sertifikātu parakstīšanas pieprasījumi#

NetHSM atbalsta sertifikātu parakstīšanas pieprasījumu (CSR) ģenerēšanu saglabātajām atslēgām:

$ 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

Galvenās darbības#

Mēs varam šifrēt NetHSM saglabātās atslēgas datus, izmantojot OpenSSL. (public.pem ir publiskās atslēgas fails, ko izveidojām sadaļā Parādīt atslēgas informāciju.)

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

Līdzīgi mēs varam parakstīt datus, izmantojot NetHSM atslēgu. RSA un ECDSA gadījumā vispirms ir jāaprēķina digest:

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

Pēc tam mēs varam izveidot parakstu, izmantojot NetHSM:

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

Un pēc tam paraksta pārbaudei izmantojiet OpenSSL:

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

Verified OK

Rezerves kopiju izveide#

Ir iespējams izveidot NetHSM rezerves kopiju, kurā ir ietverta gan konfigurācija, gan saglabātās atslēgas. Lai izveidotu dublējumu, vispirms ir jāiestata dublējuma parole, kas tiek izmantota dublējuma faila šifrēšanai:

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

Updated the backup passphrase for NetHSM localhost:8443

Tagad ir jāizveido lietotājs ar R-Backup lomu:

$ 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

Tad varat izveidot dublējumu un ierakstīt to failā:

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

Backup for localhost:8443 written to /tmp/backup

Rezerves kopiju atjaunošana#

Šo dublējuma failu var atjaunot neievietotā NetHSM instancē:

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

Backup restored on NetHSM localhost:8443

NetHSM atjaunināšana#

Brīdinājums

Beta versijas atjauninājuma instalēšanas dēļ var tikt zaudēti dati!

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

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

Ja vēlaties turpināt instalēšanu, tagad varat veikt atjauninājumu:

$ nitropy nethsm --host $NETHSM_HOST     commit-update

Update successfully committed on NetHSM localhost:8443

Varat arī atcelt atjaunināšanu:

$ nitropy nethsm --host $NETHSM_HOST  cancel-update

Update successfully cancelled on NetHSM localhost:8443