Nitropy käsurea tööriist#

See õpetus näitab, kuidas pääseda NetHMS-i juurde nitroopia käsurea tööriista kaudu, mille peate alla laadima ja installima.

Märkus

Kui kasutate NetHSMi demoinstantsi isesigneeritud sertifikaadiga, näiteks kasutades Dockeri kujutist, peate kasutama --no-verify-tls valikut nitropy, et jätta sertifikaadi kontrollimine vahele.

Märkus

Esmalt määrake $NETHSM_HOST väärtuseks NetHSM-i IP-aadress või URL. Meie demoserver on kättesaadav aadressil https://nethsmdemo.nitrokey.com/.

Seadme teave & olek#

$ 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

Provisioning#

Uus NetHSM tuleb kõigepealt varustada salasõnade ja praeguse ajaga. Admin Passphrase on administraatori paroolifraas, mis on NetHSMi ülemkasutaja. Unlock Passphrase’i kasutatakse NetHSMi konfidentsiaalse andmehoidla krüpteerimiseks.

Märkus

NetHSMi demoinstants aadressil nethsmdemo.nitrokey.com on juba loodud.

$ nitropy nethsm --host $NETHSM_HOST provision

NetHSM localhost:8443 provisioned

NetHSMi saab kasutada Attended Boot režiimis ja Unattended Boot režiimis.

  • Režiimis Attended Boot tuleb iga käivitamise ajal sisestada Unlock Passphrase, mida kasutatakse andmesalvestuse krüpteerimiseks. Turvalisuse huvides on see režiim soovitatav.

  • Režiimil Unattended Boot ei ole lukustamata salasõna vaja, seega võib NetHSM käivituda järelevalveta ja andmesalvestus salvestatakse krüpteerimata. Kasutage seda režiimi, kui teie kättesaadavusnõudeid ei saa täita režiimiga Attended Boot.

Praeguse režiimi väljavõtmine:

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

 Configuration for NetHSM localhost:8443:
 Unattended boot: off

Lülitage sisse režiim Unattended Boot:

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

 Updated the unattended boot configuration for NetHSM localhost:8443

Kasutajate haldamine#

Rollid#

Ülesannete lahusust saab rakendada erinevate rollide abil. Igale NetHSMi konfigureeritud kasutajakontole on määratud üks järgmistest rollidest. Järgnevalt on esitatud iga rolliga lubatud toimingute kõrgetasemeline kirjeldus. Lõpupunktispetsiifilised üksikasjad leiate REST API dokumentatsioonist.

  • R-administraator: Selle rolliga kasutajakontol on juurdepääs kõikidele REST API poolt pakutavatele toimingutele, välja arvatud võtmekasutuse toimingud, st sõnumite allkirjastamine ja dekrüpteerimine.

  • R-operaator: Selle rolliga kasutajakontol on juurdepääs kõikidele võtmekasutuse toimingutele, võtmehalduse toimingute ainult lugemiseks mõeldud alamhulgale ja kasutajahalduse toimingutele, mis võimaldavad muudatusi ainult oma kontole.

  • R-Metrics: Selle rolliga kasutajakontol on juurdepääs ainult lugemisõigusega meetrikaoperatsioonidele.

  • R-Backup: Selle rolliga kasutajakontol on juurdepääs ainult süsteemi varundamise algatamiseks vajalikele toimingutele.

Märkus: tulevastes versioonides võidakse kasutusele võtta täiendavaid rolle.

Loomine & Kasutajate kustutamine

Nüüd looge uus kasutaja, kellel on Operator roll, mida saab kasutada andmete allkirjastamiseks ja dekrüpteerimiseks. Pange tähele, et NetHSM määrab juhusliku kasutajatunnuse, kui me seda ei määra.

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

Võtmehaldus#

Võtmete genereerimine#

Selles jaotises tahame kasutada RSA-võtit andmete dekrüpteerimiseks PKCS#1 abil ja andmete allkirjastamiseks PSS-iga, kasutades SHA256. Seega genereerime NetHSMis uue võtme. Veenduge, et kasutate RSA algoritmi ja valite võtmemehhanismid RSA_Signature_PSS_SHA256 ja RSA_Decryption_PKCS1. Kui te ei määra võtme ID-d, genereerib NetHSM uue võtme jaoks juhusliku 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

Impordi võtmed#

Selle asemel, et genereerida võti NetHSMis, võite ka olemasolevaid privaatvõtmeid NetHSMi importida:

$ 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

Loetelu võtmed#

Et veenduda, et võti on loodud ja et sellel on õiged algoritmi ja mehhanismi seaded, võime küsida kõiki NetHSMi võtmeid:

$ 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

Näita võtme üksikasju#

Samuti saame küsida genereeritud võtmepaari avalikku võtit:

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

Selleks, et saaksime võtit kasutada OpenSSLiga, ekspordime selle PEM-failina ja salvestame selle public.pem:

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

Me võime OpenSSL-i abil kontrollida võtit ja kasutada seda krüpteerimiseks või allkirja kontrollimiseks (nagu on kirjeldatud järgmises jaotises):

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

Võtmesertifikaadid#

NetHSMi instantsi salvestatud võtmete sertifikaate on võimalik määrata ja pärida:

$ 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

Võtmesertifikaadi allkirjastamise taotlused#

NetHSM toetab salvestatud võtmete jaoks sertifikaadi allkirjastamistaotluste (CSR) genereerimist:

$ 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

Peamised toimingud#

NetHSM-i salvestatud võtme jaoks saame andmeid krüpteerida, kasutades OpenSSL-i. (public.pem on avaliku võtme fail, mille me lõime jaotises Show Key Details).

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

Samamoodi saame andmeid allkirjastada, kasutades NetHSMi võtit. RSA ja ECDSA puhul peame kõigepealt arvutama digesti:

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

Seejärel saame sellest digist luua allkirja, kasutades NetHSM-i:

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

Ja seejärel kasutage OpenSSL-i allkirja kontrollimiseks:

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

Verified OK

Varukoopiate loomine#

On võimalik luua NetHSMi varukoopia, mis salvestab nii konfiguratsiooni kui ka salvestatud võtmed. Varukoopia loomiseks tuleb kõigepealt määrata varukoopia salasõna, mida kasutatakse varukoopiafaili krüpteerimiseks:

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

Updated the backup passphrase for NetHSM localhost:8443

Nüüd peate looma kasutaja, kellel on R-Backup roll:

$ 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

Seejärel saate luua varukoopia ja kirjutada selle faili:

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

Backup for localhost:8443 written to /tmp/backup

Varukoopiate taastamine#

Seda varukoopiafaili saab taastada NetHSMi varundamata instantsil:

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

Backup restored on NetHSM localhost:8443

NetHSMi ajakohastamine#

Hoiatus

Beeta-uuenduse paigaldamise tõttu võib tekkida andmekadu!

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

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

Kui soovite paigaldamist jätkata, saate nüüd uuenduse kinnitada:

$ nitropy nethsm --host $NETHSM_HOST     commit-update

Update successfully committed on NetHSM localhost:8443

Teise võimalusena saate uuenduse tühistada:

$ nitropy nethsm --host $NETHSM_HOST  cancel-update

Update successfully cancelled on NetHSM localhost:8443