Nitropy parancssori eszköz#
Ez a bemutató bemutatja, hogyan lehet elérni a NetHMS-t a nitropy parancssori eszközzel, amelyet le kell töltenie és telepítenie.
Megjegyzés
Ha önaláírt tanúsítvánnyal rendelkező NetHSM demópéldányt használ, például a Docker-kép használatával, akkor a --no-verify-tls
opciót kell használnia a nitropy
opcióhoz a tanúsítvány ellenőrzésének kihagyásához.
Megjegyzés
Először állítsa be a $NETHSM_HOST értékét a NetHSM IP-címére vagy URL címére. A mi demó szerverünk a https://nethsmdemo.nitrokey.com/ címen érhető el.
Eszközinformáció & Állapot#
$ 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#
Az új NetHSM-et először jelszavakkal és az aktuális idővel kell ellátni. Az Admin Passphrase a rendszergazda jelszava, aki a NetHSM szuperfelhasználója. Az Unlock Passphrase a NetHSM bizalmas adattárolójának titkosítására szolgál.
Megjegyzés
A nethsmdemo.nitrokey.com címen található NetHSM demópéldány már készen áll.
$ nitropy nethsm --host $NETHSM_HOST provision
NetHSM localhost:8443 provisioned
A NetHSM használható Vigyázott indítás és Vigyázatlan indítás üzemmódban.
Az Attended Boot módban minden indításkor meg kell adni a Unlock Passphrase jelszót, amely az adattároló titkosítására szolgál. Biztonsági okokból ez az üzemmód ajánlott.
A Felügyelet nélküli indítás módban nincs szükség a Feloldási jelszóra, ezért a NetHSM felügyelet nélkül is elindulhat, és az adattároló titkosítatlanul tárolódik. Ezt az üzemmódot akkor használja, ha a rendelkezésre állási követelményei nem teljesíthetők a Védett indítás üzemmóddal.
Az aktuális üzemmód lekérdezése:
$ nitropy nethsm --host $NETHSM_HOST get-config --unattended-boot
Configuration for NetHSM localhost:8443:
Unattended boot: off
Kapcsolja be a „felügyelet nélküli indítás” üzemmódot:
$ nitropy nethsm --host $NETHSM_HOST set-unattended-boot on
Updated the unattended boot configuration for NetHSM localhost:8443
Felhasználó kezelése#
Szerepek#
A feladatok szétválasztása különböző szerepkörök használatával valósítható meg. A NetHSM-en konfigurált minden felhasználói fiókhoz a következő szerepkörök egyike tartozik. Az alábbiakban az egyes szerepkörök által engedélyezett műveletek magas szintű leírása következik. A végpont-specifikus részleteket lásd a REST API dokumentációban.
R-adminisztrátor: A REST API által biztosított összes művelethez hozzáféréssel rendelkezik, kivéve a kulcshasználati műveleteket, azaz az üzenetek aláírását és visszafejtését.
R-Operátor: Az ezzel a szereppel rendelkező felhasználói fiók hozzáféréssel rendelkezik az összes kulcshasználati művelethez, a kulcskezelési műveletek csak olvasható részhalmazához és a felhasználókezelési műveletekhez, amelyek csak a saját fiókjának módosítását teszik lehetővé.
R-Metrics: Az ezzel a szerepkörrel rendelkező felhasználói fiók csak olvasható metrikai műveletekhez rendelkezik hozzáféréssel.
R-Backup: Az ezzel a szerepkörrel rendelkező felhasználói fiók csak a rendszer biztonsági mentésének kezdeményezéséhez szükséges műveletekhez fér hozzá.
Megjegyzés: A későbbi kiadásokban további szerepkörök is bevezetésre kerülhetnek.
** Felhasználók létrehozása és törlése**
Most hozzon létre egy új felhasználót Operator szerepkörrel, amely az adatok aláírására és visszafejtésére használható. Vegye figyelembe, hogy a NetHSM véletlenszerű felhasználói azonosítót rendel hozzá, ha nem adjuk meg.
$ 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"
Kulcskezelés#
Kulcsok generálása#
Ebben a szakaszban egy RSA kulcsot szeretnénk használni az adatok visszafejtésére a PKCS#1 használatával, és az adatok aláírására a PSS segítségével az SHA256 használatával. Generáljunk tehát egy új kulcsot a NetHSM-en. Ügyeljen arra, hogy az RSA algoritmust használja, és válassza az RSA_Signature_PSS_SHA256 és az RSA_Decryption_PKCS1 kulcsmechanizmusokat. Ha nem ad meg kulcsazonosítót, a NetHSM véletlenszerű azonosítót generál az új kulcshoz.
$ 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
Kulcsok importálása#
Ahelyett, hogy a NetHSM-en generálna egy kulcsot, meglévő magánkulcsokat is importálhat a NetHSM-be:
$ 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
Kulcsok listája#
Hogy megbizonyosodjunk arról, hogy a kulcsot létrehoztuk-e, és rendelkezik-e a megfelelő algoritmus- és mechanizmusbeállításokkal, lekérdezhetjük az összes kulcsot a NetHSM-en:
$ 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
Kulcs részletek megjelenítése#
A generált kulcspár nyilvános kulcsát is lekérdezhetjük:
$ nitropy nethsm --host $NETHSM_HOST get-key myFirstKey
Ahhoz, hogy a kulcsot az OpenSSL-lel használhassuk, PEM fájlként exportáljuk és public.pem néven tároljuk:
$ nitropy nethsm --host $NETHSM_HOST get-key myFirstKey --public-key > public.pem
A kulcsot az OpenSSL segítségével megvizsgálhatjuk, és felhasználhatjuk titkosításra vagy aláírás-ellenőrzésre (a következő szakaszban leírtak szerint):
$ 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-----
Kulcsfontosságú tanúsítványok#
Lehetőség van a NetHSM-példányon tárolt kulcsokhoz tanúsítványok beállítására és lekérdezésére:
$ 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
Kulcs-tanúsítvány aláírási kérelmek#
A NetHSM támogatja a tárolt kulcsok tanúsítványaláírási kérelmeinek (CSR) létrehozását:
$ 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
Kulcsműveletek#
A NetHSM-en tárolt kulcs adatait az OpenSSL segítségével titkosíthatjuk. (A public.pem az a nyilvános kulcsfájl, amelyet a Kulcsadatok megjelenítése szakaszban hoztunk létre.)
$ 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!
Hasonlóképpen aláírhatjuk az adatokat a NetHSM-en lévő kulcs segítségével. Az RSA és az ECDSA esetében először ki kell számolnunk egy kivonatot:
$ echo 'NetHSM rulez!' > data
$ openssl dgst -sha256 -binary data | base64 > data.digest
Ezután a NetHSM segítségével létrehozhatunk egy aláírást ebből a kivonatból:
$ nitropy nethsm -h $NETHSM_HOST sign -k myFirstKey -m PSS_SHA256 -d "$(cat data.digest)" | base64 -d > data.sig
Ezután az OpenSSL segítségével ellenőrizze az aláírást:
$ openssl dgst -sha256 -verify public.pem -signature data.sig -sigopt rsa_padding_mode:pss -sigopt rsa_pss_saltlen:-1 data
Verified OK
Biztonsági mentések létrehozása#
Lehetőség van a NetHSM biztonsági másolatának elkészítésére, amely a konfigurációt és a tárolt kulcsokat is rögzíti. A biztonsági mentés létrehozásához először be kell állítania egy biztonsági mentési jelszót, amely a biztonsági mentési fájl titkosítására szolgál:
$ nitropy nethsm -h $NETHSM_HOST -u admin set-backup-passphrase
Updated the backup passphrase for NetHSM localhost:8443
Most létre kell hoznia egy felhasználót az R-Backup szerepkörrel:
$ 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
Ezután létrehozhatja a biztonsági másolatot, és írhatja egy fájlba:
$ nitropy nethsm -h $NETHSM_HOST backup /tmp/nethsm-backup
Backup for localhost:8443 written to /tmp/backup
Biztonsági mentések visszaállítása#
Ez a biztonsági mentési fájl visszaállítható egy nem rendelkezésre bocsátott NetHSM-példányon:
$ nitropy nethsm -h $NETHSM_HOST restore --backup-passphrase backup-passphrase backupencryptionkey /tmp/nethsm-backup
Backup restored on NetHSM localhost:8443
A NetHSM frissítése#
Figyelem
A béta frissítés telepítése miatt adatvesztés következhet be!
$ nitropy nethsm --host $NETHSM_HOST update /tmp/nethsm-update.img.cpio
Image /tmp/nethsm-update.img.cpio uploaded to NetHSM localhost:8443
Ha folytatni szeretné a telepítést, akkor most már rögzítheti a frissítést:
$ nitropy nethsm --host $NETHSM_HOST commit-update
Update successfully committed on NetHSM localhost:8443
Alternatív megoldásként törölheti a frissítést:
$ nitropy nethsm --host $NETHSM_HOST cancel-update
Update successfully cancelled on NetHSM localhost:8443