Операция#
Тази глава описва оперативните задачи за потребители с роли Администратор и Оператор. Моля, вижте глава Роли, за да научите повече за ролята.
Important
Моля, уверете се, че сте прочели информацията в началото на този документ, преди да започнете работа.
Управление на ключовете#
Генериране на ключове#
NetHSM може да генерира двойки ключове. Препоръчително е да посочите опцията ID на ключа, за да му дадете изразително име.
Поддържаните типове ключове и съответните им механизми са следните.
Тип на ключа |
Механизми |
---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Ключът може да се генерира по следния начин.
Изисквана роля
Тази операция изисква удостоверяване с ролята Administrator.
Задължителни опции
Опция |
Описание |
---|---|
|
Типът на генерирания ключ. Възможните стойности за аргумента |
|
Механизмите за генерирания ключ. Възможните стойности за аргумента |
|
Дължината на генерирания ключ |
Възможни опции
Опция |
Описание |
---|---|
|
Идентификаторът на генерирания ключ |
Пример
$ 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
Информация за крайната точка /keys/generate може да бъде намерена в документацията на API.
Ключ за импортиране#
NetHSM може да импортира съществуващи частни ключове в Key Store.
Поддържаните типове ключове и съответните им механизми са следните.
Тип на ключа |
Механизми |
---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Вносът може да бъде иницииран по следния начин.
Изисквана роля
Тази операция изисква удостоверяване с ролята Administrator.
Задължителни опции
Опция |
Описание |
---|---|
|
Типът на генерирания ключ. Възможните стойности за аргумента |
|
Механизмите за генерирания ключ. Възможните стойности за аргумента |
|
Първичното число p за ключове RSA |
|
Първичното число q за ключове RSA |
|
Публичният експонент за ключове RSA |
|
Ключовите данни за ключове ED25519 или ECDSA_* |
Възможни опции
Опция |
Описание |
---|---|
|
Идентификаторът на новия ключ |
|
Етикетът за новия ключ |
Пример
$ nitropy nethsm --host $NETHSM_HOST add-key \
--type RSA \
--mechanism RSA_Signature_PSS_SHA256 \
--mechanism RSA_Decryption_PKCS1 \
--key-id myFirstKey \
--public-exponent AQAB \
--prime-p "AOnWFZ+JrI/xOXJU04uYCZOiPVUWd6CSbVseEYrYQYxc7dVroePshz29tc+VEOUP5T0O8lXMEkjFAwjW6C9QTAsPyl6jwyOQluMRIkdN4/7BAg3HAMuGd7VmkGyYrnZWW54sLWp1JD6XJG33kF+9OSar9ETPoVyBgK5punfiUFEL" \
--prime-q "ANT1kWDdP9hZoFKT49dwdM/S+3ZDnxQa7kZk9p+JKU5RaU9e8pS2GOJljHwkES1FH6CUGeIaUi81tRKe2XZhe/163sEyMcxkaaRbBbTc1v6ZDKILFKKt4eX7LAQfhL/iFlgi6pcyUM8QDrm1QeFgGz11ChM0JuQw1WwkX06lg8iv"
Key myFirstKey added to NetHSM localhost:8443
Информация за крайната точка /keys може да бъде намерена в документацията на API.
Клавиш за изтриване#
NetHSM може да изтрива ключове от Key Store.
Изисквана роля
Тази операция изисква удостоверяване с ролята Administrator.
Аргументи
Аргумент |
Описание |
---|---|
|
Идентификатор на ключа, който трябва да се изтрие |
Пример
$ nitropy nethsm --host $NETHSM_HOST delete-key myFirstKey
Key myFirstKey deleted on NetHSM localhost:8443
Информация за крайната точка /keys/{KeyID} може да бъде намерена в документацията на API.
Списък с ключове#
NetHSM може да изведе всички налични ключове в Key Store.
Списъкът може да бъде изтеглен по следния начин.
Изисквана роля
Тази операция изисква удостоверяване с ролята Administrator или Operator.
Възможни опции
Опция |
Описание |
---|---|
|
Етикетът за търсене |
Пример
$ nitropy nethsm --host $NETHSM_HOST list-keys
Keys on NetHSM localhost:8443:
Key ID Algorithm Mechanisms Operations Tags
----------- --------- ---------------------------------------------- ---------- ----
myFirstKey RSA RSA_Decryption_PKCS1, RSA_Signature_PSS_SHA256 0
Информация за крайната точка /keys може да бъде намерена в документацията на API.
Показване на подробностите за ключа#
NetHSM може да извежда по-подробна информация за съхранения ключ.
Подробната информация може да бъде извлечена, както следва.
Изисквана роля
Тази операция изисква удостоверяване с ролята Administrator или Operator.
Пример
$ nitropy nethsm --host $NETHSM_HOST get-key myFirstKey
Key myFirstKey on NetHSM localhost:8443:
Type: RSA
Mechanisms: RSA_Decryption_RAW
Operations: 0
Modulus: r62XHPWMDdEf2I1WEpSxGowY/fQF8lMPtv3EUQJE/PLWBvehF8G0QY3AVVZ3etlQWiKreOuGDx4Nr2PFNYAu5f+JP2Jc1lsFNOYF8D82RF41MBySbQR+k+44N/04B0ahTBCxX+ovFH7Sd6SzvxMPa7EKvhaOsLbgyrPlFZxQnhIEqJRCSo5DRRD+CRCPpGXsVXgFbJrNilh21i8OZCct4nC2OS191MeDKmCH4tjrfLMwOKJE8zKlwhdtA1uMY49+JuaC48GUFsLYwbLp1723Uv1PjZjC5jbUhScD0u9I+iNrqznAeka4dWsJ9jgA+h6hblSgCs0I3MWOsMXx/Y5PGQ==
Public exponent: AQAB
Информация за крайната точка /keys/{KeyID} може да бъде намерена в документацията на API.
Публичният ключ на даден ключ може да бъде извлечен по следния начин.
Изисквана роля
Тази операция изисква удостоверяване с ролята Administrator или Operator.
Пример
$ nitropy nethsm --host $NETHSM_HOST get-key myFirstKey --public-key
-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAr62XHPWMDdEf2I1WEpSx
GowY/fQF8lMPtv3EUQJE/PLWBvehF8G0QY3AVVZ3etlQWiKreOuGDx4Nr2PFNYAu
5f+JP2Jc1lsFNOYF8D82RF41MBySbQR+k+44N/04B0ahTBCxX+ovFH7Sd6SzvxMP
a7EKvhaOsLbgyrPlFZxQnhIEqJRCSo5DRRD+CRCPpGXsVXgFbJrNilh21i8OZCct
4nC2OS191MeDKmCH4tjrfLMwOKJE8zKlwhdtA1uMY49+JuaC48GUFsLYwbLp1723
Uv1PjZjC5jbUhScD0u9I+iNrqznAeka4dWsJ9jgA+h6hblSgCs0I3MWOsMXx/Y5P
GQIDAQAB
-----END PUBLIC KEY-----
Информация за крайната точка /keys/{KeyID}/public.pem може да бъде намерена в документацията на API.
Публичният ключ може да се провери например с OpenSSL по следния начин.
Изисквана роля
Тази операция изисква удостоверяване с ролята Administrator или Operator.
Пример
nitropy nethsm --host= $NETHSM_HOST get-key myFirstKey --public-key | openssl rsa -pubin -text
Public-Key: (2048 bit)
Modulus:
00:af:ad:97:1c:f5:8c:0d:d1:1f:d8:8d:56:12:94:
b1:1a:8c:18:fd:f4:05:f2:53:0f:b6:fd:c4:51:02:
44:fc:f2:d6:06:f7:a1:17:c1:b4:41:8d:c0:55:56:
77:7a:d9:50:5a:22:ab:78:eb:86:0f:1e:0d:af:63:
c5:35:80:2e:e5:ff:89:3f:62:5c:d6:5b:05:34:e6:
05:f0:3f:36:44:5e:35:30:1c:92:6d:04:7e:93:ee:
38:37:fd:38:07:46:a1:4c:10:b1:5f:ea:2f:14:7e:
d2:77:a4:b3:bf:13:0f:6b:b1:0a:be:16:8e:b0:b6:
e0:ca:b3:e5:15:9c:50:9e:12:04:a8:94:42:4a:8e:
43:45:10:fe:09:10:8f:a4:65:ec:55:78:05:6c:9a:
cd:8a:58:76:d6:2f:0e:64:27:2d:e2:70:b6:39:2d:
7d:d4:c7:83:2a:60:87:e2:d8:eb:7c:b3:30:38:a2:
44:f3:32:a5:c2:17:6d:03:5b:8c:63:8f:7e:26:e6:
82:e3:c1:94:16:c2:d8:c1:b2:e9:d7:bd:b7:52:fd:
4f:8d:98:c2:e6:36:d4:85:27:03:d2:ef:48:fa:23:
6b:ab:39:c0:7a:46:b8:75:6b:09:f6:38:00:fa:1e:
a1:6e:54:a0:0a:cd:08:dc:c5:8e:b0:c5:f1:fd:8e:
4f:19
Exponent: 65537 (0x10001)
writing RSA key
-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAr62XHPWMDdEf2I1WEpSx
GowY/fQF8lMPtv3EUQJE/PLWBvehF8G0QY3AVVZ3etlQWiKreOuGDx4Nr2PFNYAu
5f+JP2Jc1lsFNOYF8D82RF41MBySbQR+k+44N/04B0ahTBCxX+ovFH7Sd6SzvxMP
a7EKvhaOsLbgyrPlFZxQnhIEqJRCSo5DRRD+CRCPpGXsVXgFbJrNilh21i8OZCct
4nC2OS191MeDKmCH4tjrfLMwOKJE8zKlwhdtA1uMY49+JuaC48GUFsLYwbLp1723
Uv1PjZjC5jbUhScD0u9I+iNrqznAeka4dWsJ9jgA+h6hblSgCs0I3MWOsMXx/Y5P
GQIDAQAB
-----END PUBLIC KEY-----
Информация за крайната точка /keys/{KeyID}/public.pem може да бъде намерена в документацията на API.
Ключови сертификати#
Възможно е да се задават и изискват сертификати за ключовете, съхранявани в NetHSM.
Поддържаните типове MIME са следните.
application/x-pem-file
application/x-x509-ca-cert
application/pgp-keys
Сертификатът може да бъде зададен, както следва.
Изисквана роля
Тази операция изисква удостоверяване с ролята Administrator.
Задължителни опции
Опция |
Описание |
---|---|
|
Идентификаторът на ключа, за който се задава сертификатът |
Възможни опции
Опция |
Описание |
---|---|
|
Типът MIME на сертификата. Наличните MIME типове са изброени по-горе. |
Аргументи
Аргумент |
Описание |
---|---|
|
Файл със сертификат |
Пример
$ nitropy nethsm --host $NETHSM_HOST set-certificate --key-id myFirstKey --mime-type application/x-pem-file /tmp/cert.pem
Updated the certificate for key myFirstKey on NetHSM localhost:8443
Информация за крайната точка /keys/{KeyID}/cert може да бъде намерена в документацията на API.
Сертификатът може да бъде изтеглен по следния начин.
Изисквана роля
Тази операция изисква удостоверяване с ролята Administrator или Operator.
Задължителни опции
Опция |
Описание |
---|---|
|
Идентификаторът на ключа, за който трябва да се получи сертификат |
Пример
$ nitropy nethsm --host $NETHSM_HOST get-certificate --key-id myFirstKey
-----BEGIN CERTIFICATE-----
MIICeTCCAWECFCbuzdkAvc3Zx3W53IoSnmhUen42MA0GCSqGSIb3DQEBCwUAMHsx
CzAJBgNVBAYTAkRFMQ8wDQYDVQQIDAZCZXJsaW4xDzANBgNVBAcMBkJlcmxpbjER
MA8GA1UECgwITml0cm9rZXkxFTATBgNVBAMMDG5pdHJva2V5LmNvbTEgMB4GCSqG
SIb3DQEJARYRaW5mb0BuaXRyb2tleS5jb20wHhcNMjIwODMwMjAxMzA2WhcNMjMw
ODMwMjAxMzA2WjBxMW8wCQYDVQQGEwJERTANBgNVBAcMBkJlcmxpbjANBgNVBAgM
BkJlcmxpbjAPBgNVBAoMCE5pdHJva2V5MBMGA1UEAwwMbml0cm9rZXkuY29tMB4G
CSqGSIb3DQEJARYRaW5mb0BuaXRyb2tleS5jb20wKjAFBgMrZXADIQDc58LGDY9B
wbJFdXTiDalNXrDC60Sxu3eHcpnh1MSoCjANBgkqhkiG9w0BAQsFAAOCAQEAGip8
aU5nJnzm3eic3t1ihUA3VJ0mAPyfrb1Rn8tEKOZo3vg0jpRd9CSESlBsKqhvxsdQ
A3eomM+W7R37TL5+ISm5QrbijLHz3OHoPM68c1Krz3bXTkJetf4YAxpLOPYfXXHv
weRzwVJb4y3E0lJGhZxI3sUE8Yn/T1UvTbu/o/O5P/XTA8vfFrSNQkQxWBgYh4gC
KjFFALqUPFrctSFIi34aqpdihNJWnjSS2Y7INm3oxwkR3NMKP8x4wBGfZK22nHnu
PPzXuMGJTmQM8GHTzltNvLx5Iv2sXoSHClXSpdIT5IBIcR1GmZ78fmcr75OAU0+z
3XbJq/1ij3tKsjV6WA==
-----END CERTIFICATE-----
Информация за крайната точка /keys/{KeyID}/cert може да бъде намерена в документацията на API.
Заявки за подписване на ключови сертификати#
NetHSM поддържа генериране на CSR (Certificate Signing Requests) за съхраняваните ключове.
Изисквана роля
Тази операция изисква удостоверяване с ролята Administrator или Operator.
Задължителни опции
Опция |
Описание |
---|---|
|
Идентификаторът на ключа, за който се генерира CSR |
|
Името на страната |
|
Наименованието на държавата или провинцията |
|
Наименованието на местността |
|
Името на организацията |
|
Име на организационната единица |
|
Общоприетото име |
|
Имейл адресът |
Пример
$ nitropy nethsm --host $NETHSM_HOST csr --key-id myFirstKey --country="DE" --state-or-province="Berlin" --locality="Berlin" --organization="Nitrokey" --organizational-unit="" --common-name=nitrokey.com --email-address="info@nitrokey.com"
-----BEGIN CERTIFICATE REQUEST-----
MIHxMIGkAgEAMHExbzAJBgNVBAYTAkRFMA0GA1UEBwwGQmVybGluMA0GA1UECAwG
QmVybGluMA8GA1UECgwITml0cm9rZXkwEwYDVQQDDAxuaXRyb2tleS5jb20wHgYJ
KoZIhvcNAQkBFhFpbmZvQG5pdHJva2V5LmNvbTAqMAUGAytlcAMhADJMNAifke6s
u7CYqHGDy3xGtXVOUNbTJG6Gn4oki+j3oAAwBQYDK2VwA0EAQilRK2Mf6kfJ4ByI
WCn9A+8IHsnE7iFcuFZpmaKfcJwZiaQppHvPg/Z0zqldzviPQ1cjKR7hSZG+8GHH
gWjEDg==
-----END CERTIFICATE REQUEST-----
Информация за крайната точка /keys/{KeyID}/csr.pem може да бъде намерена в документацията на API.
Основни операции#
Криптиране#
NetHSM може да криптира данни за симетрични ключове, съхранявани в Key Store. За разлика от това криптирането на данни с асиметрични ключове не може да се извършва в NetHSM поради концепцията в криптографията с публичен ключ публичният ключ да бъде достъпен за всички. За асиметричните ключове NetHSM предоставя публичния ключ, който може да се използва за криптиране с външен инструмент. Моля, направете справка с Show Key Details (Покажи подробности за ключа) , за да научите повече за това как да извлечете публичния ключ на даден ключ в Key Store (Съхранение на ключове).
Данните могат да бъдат криптирани със симетричен ключ по следния начин.
$ nitropy nethsm --host $NETHSM_HOST encrypt -k myFirstKey -d "TmV0SFNNIHJ1bGV6enp6enp6enp6enp6enp6enp6IQo=" -m AES_CBC -iv "aYlwUI4A9zL9tts4dMAq+A=="
Encrypted: Uk+9pgucdxTnbyIb/6+BDJef+HfRWhw+Eg3RcCvyHaU=
Initialization vector: aYlwUI4A9zL9tts4dMAq+A==
Информация за крайната точка /keys/{KeyID}/encrypt може да бъде намерена в документацията на API.
Отпечатва се криптираното и кодирано в base64 съобщение NetHSM rulezzzzzzzzzzzzzzzzzzz!
и вектора за инициализация.
Данните могат да бъдат криптирани за асиметрични ключове с OpenSSL, както следва.
$ echo 'NetHSM rulez!' | openssl pkeyutl -encrypt -pubin -inkey public.pem | base64 > data.crypt
Записва се криптираното и кодирано в base64 съобщение NetHSM rulez!
във файла data.crypt
, като се използва публичният ключ от public.pem
.
Декриптиране#
NetHSM може да декриптира данни за частен ключ, съхраняван в Key Store на NetHSM. В този пример се използва криптираното съобщение от предишната глава Криптиране.
Поддържаните режими на декриптиране са следните.
TAG
PKCS1
FILENAME
--network
OAEP_SHA224
OAEP_SHA224
OAEP_SHA224
OAEP_SHA224
USER_ID
Данните могат да бъдат декриптирани по следния начин.
Изисквана роля
Тази операция изисква удостоверяване с ролята Operator.
Задължителни опции
Опция |
Описание |
---|---|
|
Идентификаторът на ключа за декриптиране на ширината на данните |
|
Криптираните данни в кодиране Base64 |
|
Режимът на декриптиране. Наличните режими са изброени по-горе. |
Пример
$ nitropy nethsm -h $NETHSM_HOST decrypt -k myFirstKey -d "$(cat data.crypt)" -m PKCS1 | base64 -d
NetHSM rulez!
Информация за крайната точка /keys/{KeyID}/decrypt може да бъде намерена в документацията на API.
Знак#
NetHSM може да подписва данни за частен ключ, съхраняван в Key Store на NetHSM. За подписване с ключ RSA и ECDSA първо трябва да се изчисли цифров сбор.
За да се изчисли цифровата информация, първо се изискват данните. Съобщението се създава по следния начин.
$ echo 'NetHSM rulez!' > data
Разбивката се изчислява с OpenSSL по следния начин.
$ openssl dgst -sha256 -binary data | base64 > data.digest
Поддържаните режими на подписване са следните.
PKCS1
USER_ID
FILENAME
Curve25519
Curve25519
Curve25519
Curve25519
PKCS1
PKCS1
На базата на цифровия код може да се създаде подпис по следния начин.
Изисквана роля
Тази операция изисква удостоверяване с ролята Operator.
Задължителни опции
Опция |
Описание |
---|---|
|
Идентификаторът на ключа за подписване на ширината на данните |
|
Данните за подписване, кодирани чрез Base64 |
|
Режимът на знака |
Пример
$ nitropy nethsm -h $NETHSM_HOST sign -k myFirstKey -m PKCS1 -d "$(cat data.digest)" | base64 -d > data.sig
Информация за крайната точка /keys/{KeyID}/sign може да бъде намерена в документацията на API.
Създаденият подпис може да бъде проверен с OpenSSL по следния начин.
$ openssl dgst -sha256 -verify public.pem -signature data.sig -sigopt rsa_padding_mode:pss -sigopt rsa_pss_saltlen:-1 data
Verified OK
Случаен#
NetHSM може да предостави случайни байтове като низ Base64.
Изисквана роля
Тази операция изисква удостоверяване с ролята Operator.
Аргументи
Аргумент |
Описание |
---|---|
|
Байтове за извличане |
Пример
nitropy nethsm --host $NETHSM_HOST random 4
94A2rg==
Информация за крайната точка /random може да бъде намерена в документацията на API.