„Nitropy“ komandinės eilutės įrankis#

Šiame vadovėlyje parodyta, kaip pasiekti NetHMS per nitropy komandinės eilutės įrankį, kurį reikia atsisiųsti ir įdiegti.

Pastaba

Jei naudojate „NetHSM“ demonstracinę instanciją su savarankiškai pasirašytu sertifikatu, pavyzdžiui, naudodami „Docker“ atvaizdą, turėsite naudoti --no-verify-tls parinktį </x id="160"></x>, kad sertifikato tikrinimas būtų praleistas.

Pastaba

Pirmiausia nustatykite $NETHSM_HOST reikšmę, kad ji būtų lygi jūsų NetHSM IP adresui arba URL. Mūsų demonstracinį serverį galima pasiekti adresu https://nethsmdemo.nitrokey.com/

Įrenginio informacija & amp; būsena#

$ 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

Aprūpinimas#

Pirmiausia naujam NetHSM reikia suteikti slaptažodžių frazes ir dabartinį laiką. Admin slaptažodis - tai Administrator slaptažodis, kuris yra vyriausiasis NetHSM naudotojas. Slaptažodis Unlock Passphrase naudojamas NetHSM konfidencialių duomenų Storagei užšifruoti.

Pastaba

NetHSM demonstracinė instancija adresu nethsmdemo.nitrokey.com jau sukurta.

$ nitropy nethsm --host $NETHSM_HOST provision

NetHSM localhost:8443 provisioned

NetHSM galima naudoti Attended Boot ir Unattended Boot režimu.

  • Naudojant Attended Boot režimą, kiekvieno paleidimo metu reikia įvesti Unlock Passphrase, kuri naudojama duomenų Storagei užšifruoti. Saugumo sumetimais rekomenduojama naudoti šį režimą.

  • Naudojant Neprižiūrimo paleidimo režimą, atrakinimo slaptažodžio nereikia, todėl „NetHSM“ gali būti paleidžiamas be priežiūros, o duomenų Storage saugoma neužšifruota. Šį režimą naudokite, jei jūsų prieinamumo reikalavimų negalima įvykdyti naudojant Attended Boot režimą.

Gauti dabartinį režimą:

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

 Configuration for NetHSM localhost:8443:
 Unattended boot: off

Įjunkite Neprižiūrimo įkrovimo režimą:

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

 Updated the unattended boot configuration for NetHSM localhost:8443

Naudotojo valdymas#

Vaidmenys#

Pareigų atskyrimą galima įgyvendinti naudojant skirtingus vaidmenis. Kiekvienai NetHSM sukonfigūruotai naudotojo paskyrai priskiriamas vienas iš šių vaidmenų. Toliau pateikiamas aukšto lygio operacijų, kurias leidžia atlikti kiekvienas Vaidmuo, aprašymas. Išsamesnės informacijos apie konkretų galinį tašką rasite REST API dokumentuose.

  • R-administratorius: Vartotojo paskyra su šiuo vaidmeniu turi prieigą prie visų REST API teikiamų operacijų, išskyrus raktų naudojimo operacijas, t. y. pranešimų pasirašymą ir iššifravimą.

  • R-operatorius: Vartotojo paskyra, turinti šį vaidmenį, turi prieigą prie visų raktų naudojimo operacijų, tik skaitymui skirto raktų valdymo operacijų pogrupio ir naudotojo valdymo operacijų, leidžiančių atlikti pakeitimus tik savo paskyroje.

  • R-metrika: Vartotojo paskyra su šiuo vaidmeniu turi prieigą tik prie skaitymo metrikos operacijų.

  • R-Backup: Vartotojo paskyra su šiuo vaidmeniu turi prieigą tik prie operacijų, reikalingų sistemos atsarginei kopijai inicijuoti.

Pastaba: Ateityje gali būti įvesta papildomų vaidmenų.

Vartotojų kūrimas ir šalinimas

Dabar sukurkite naują naudotoją su operatoriaus vaidmeniu, kuris gali būti naudojamas duomenims pasirašyti ir iššifruoti. Atkreipkite dėmesį, kad NetHSM priskiria atsitiktinį naudotojo ID, jei jo nenurodome.

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

Raktų valdymas#

Generuoti raktus#

Šiame skyriuje norime naudoti RSA raktą duomenims iššifruoti, naudodami PKCS#1, ir duomenims pasirašyti su PSS, naudodami SHA256. Taigi sukurkime naują raktą NetHSM. Įsitikinkite, kad naudojate RSA algoritmą ir pasirinkote RSA_Signature_PSS_SHA256 ir RSA_Decryption_PKCS1 raktų mechanizmus. Jei nenurodysite rakto ID, „NetHSM“ sugeneruos atsitiktinį naujojo rakto 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

Importo raktai#

Užuot generavę raktą „NetHSM“, taip pat galite importuoti esamus privačius raktus į „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

Sąrašo raktai#

Norėdami įsitikinti, ar raktas sukurtas ir ar jame nustatyti teisingi algoritmo ir mechanizmo nustatymai, galime pateikti užklausą visiems NetHSM raktams:

$ 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

Rodyti informaciją apie raktą#

Taip pat galime pateikti užklausą apie sukurtos raktų poros viešąjį raktą:

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

Kad raktą galėtume naudoti su OpenSSL, eksportuojame jį kaip PEM failą ir saugome kaip public.pem:

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

Raktą galime patikrinti su „OpenSSL“ ir naudoti šifravimui arba parašo tikrinimui (kaip aprašyta kitame skyriuje):

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

Pagrindiniai sertifikatai#

Galima nustatyti ir užklausti NetHSM egzemplioriuje saugomų raktų sertifikatus:

$ 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

Rakto sertifikato pasirašymo užklausos#

NetHSM palaiko saugomų raktų sertifikatų pasirašymo prašymų (CSR) generavimą:

$ 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

Pagrindinės operacijos#

Naudodami OpenSSL galime užšifruoti duomenis, skirtus NetHSM saugomam raktui. (public.pem - tai viešojo rakto failas, kurį sukūrėme skyriuje Rodyti rakto informaciją).

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

Panašiai galime pasirašyti duomenis naudodami NetHSM raktą. RSA ir ECDSA atveju pirmiausia turime apskaičiuoti suvestinę:

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

Tada iš šios suvestinės, naudodami NetHSM, galime sukurti parašą:

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

Tada naudokite „OpenSSL“ parašui patikrinti:

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

Verified OK

Atsarginių kopijų kūrimas#

Galima sukurti atsarginę „NetHSM“ kopiją, kurioje būtų užfiksuota ir konfigūracija, ir išsaugoti raktai. Norint sukurti atsarginę kopiją, pirmiausia reikia nustatyti atsarginės kopijos slaptažodį, kuris naudojamas atsarginės kopijos failui užšifruoti:

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

Updated the backup passphrase for NetHSM localhost:8443

Dabar turite sukurti naudotoją su R-Backup vaidmeniu:

$ 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

Tada galite sukurti atsarginę kopiją ir įrašyti ją į failą:

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

Backup for localhost:8443 written to /tmp/backup

Atsarginių kopijų atkūrimas#

Šį atsarginį failą galima atkurti neįdiegtoje NetHSM instancijoje:

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

Backup restored on NetHSM localhost:8443

NetHSM atnaujinimas#

Įspėjimas

Įdiegus beta versijos naujinį gali būti prarasti duomenys!

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

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

Jei norite tęsti diegimą, dabar galite patvirtinti naujinimą:

$ nitropy nethsm --host $NETHSM_HOST     commit-update

Update successfully committed on NetHSM localhost:8443

Taip pat galite atšaukti naujinimą:

$ nitropy nethsm --host $NETHSM_HOST  cancel-update

Update successfully cancelled on NetHSM localhost:8443