Операция#
В этой главе описаны операционные задачи для пользователей с ролями Администратор и Оператор. Пожалуйста, обратитесь к главе Роли, чтобы узнать больше о роли.
Важно
Пожалуйста, убедитесь, что вы прочитали информацию в начале этого документа перед началом работы.
Управление ключами#
Генерировать ключи#
NetHSM может генерировать пары ключей. Рекомендуется указать параметр ID ключа, чтобы дать ему выразительное имя.
Поддерживаются следующие типы ключей и соответствующие им механизмы.
Тип ключа |
Механизмы |
---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Ключи присваиваются Namespace пользователя, который генерирует ключ.
Ключ может быть сгенерирован следующим образом.
Требуемая роль
Эта операция требует аутентификации с ролью Администратор.
Требуемые параметры
Вариант |
Описание |
---|---|
|
Тип для генерируемого ключа. Возможные значения для аргумента |
|
Механизмы для сгенерированного ключа. Возможные значения для аргумента |
|
Длина сгенерированного ключа |
Опциональные опции
Вариант |
Описание |
---|---|
|
Идентификатор сгенерированного ключа |
Пример.
$ 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.
Поддерживаются следующие типы ключей и соответствующие им механизмы.
Тип ключа |
Механизмы |
---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Ключи присваиваются пространству имен ` <administration.html#namespaces>` __ пользователя, который импортирует ключ.
Импортируй закрытый ключ из PEM-файла в NetHSM следующим образом.
Требуемая роль
Эта операция требует аутентификации с ролью Администратор.
Аргументы
Аргумент |
Описание |
---|---|
|
Файл закрытого ключа в формате PEM |
Опциональные опции
Вариант |
Описание |
---|---|
|
Механизмы для сгенерированного ключа. Возможные значения для аргумента |
|
Идентификатор нового ключа |
|
Метка для нового ключа |
Пример.
$ nitropy nethsm --host $NETHSM_HOST import-key \
--mechanism RSA_Signature_PSS_SHA256 \
--mechanism RSA_Decryption_PKCS1 \
--key-id myFirstKey \
mykey.pem
Key myFirstKey added to NetHSM localhost:8443
Информацию о конечной точке /keys можно найти в документации по API.
Импорт закрытых ключей в сыром формате осуществляется следующим образом.
Требуемая роль
Эта операция требует аутентификации с ролью Администратор.
Требуемые параметры
Вариант |
Описание |
---|---|
|
Тип для генерируемого ключа. Возможные значения для аргумента |
|
Механизмы для сгенерированного ключа. Возможные значения для аргумента |
|
Простое число p для ключей RSA в кодировке base64 |
|
Простое q для ключей RSA в кодировке base64 |
|
Открытая экспонента для ключей RSA в кодировке base64 |
|
Данные ключа для ключей ED25519 или ECDSA_* в кодировке base64 |
Опциональные опции
Вариант |
Описание |
---|---|
|
Идентификатор нового ключа |
|
Метка для нового ключа |
Пример.
$ 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 может удалять ключи из хранилища ключей ** . Пользователи могут удалять ключи только в своем пространстве имен.
Требуемая роль
Эта операция требует аутентификации с ролью Администратор.
Аргументы
Аргумент |
Описание |
---|---|
|
Идентификатор ключа для удаления |
Пример.
$ nitropy nethsm --host $NETHSM_HOST delete-key myFirstKey
Key myFirstKey deleted on NetHSM localhost:8443
Информацию о конечной точке /keys/{KeyID} можно найти в документации по API.
Ключи списка#
NetHSM может перечислить все ключи в Key Store, которые находятся в Namespace текущего пользователя.
Список можно получить следующим образом.
Требуемая роль
Эта операция требует аутентификации с ролью Administrator или Operator.
Опциональные опции
Вариант |
Описание |
---|---|
|
Метка для поиска |
Пример.
$ nitropy nethsm --host $NETHSM_HOST list-keys
Keys on NetHSM localhost:8443:
Key ID Type Mechanisms Operations Tags
----------- ---- ---------------------------------------------- ---------- ----
myFirstKey RSA RSA_Decryption_PKCS1, RSA_Signature_PSS_SHA256 0
Информацию о конечной точке /keys можно найти в документации по API.
Показать ключевые детали#
NetHSM может выводить более подробную информацию о хранимом ключе. Пользователи могут получить доступ к ключам только в своем пространстве имен ` <administration.html#namespaces>` __.
Подробную информацию можно получить следующим образом.
Требуемая роль
Эта операция требует аутентификации с ролью 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.
Открытый ключ ключа можно получить следующим образом. Он представлен в формате PKCS#8.
Требуемая роль
Эта операция требует аутентификации с ролью 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`
Сертификат можно установить следующим образом.
Требуемая роль
Эта операция требует аутентификации с ролью Администратор.
Требуемые параметры
Вариант |
Описание |
---|---|
|
Идентификатор ключа, для которого необходимо установить сертификат |
Опциональные опции
Вариант |
Описание |
---|---|
|
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 (запросов на подписание сертификатов) для хранимых ключей.
Требуемая роль
Эта операция требует аутентификации с ролью 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.
Основные операции#
Все операции, описанные в этой главе, могут быть выполнены только для ключей, которые находятся в пространстве имен ` <administration.html#namespaces>` __ текущего пользователя.
Зашифровать#
NetHSM может шифровать данные симметричными ключами, хранящимися в Key Store. В отличие от этого, шифрование данных с помощью асимметричных ключей не может быть выполнено на NetHSM, поскольку в криптографии с открытым ключом существует концепция, согласно которой открытый ключ должен быть доступен всем. Для асимметричных ключей NetHSM предоставляет открытый ключ, который может быть использован для шифрования с помощью внешнего инструмента. Обратитесь к разделу Show Key Details, чтобы узнать больше о том, как получить открытый ключ ключа в Key Store.
Данные могут быть зашифрованы для симметричного ключа следующим образом.
Требуемая роль
Эта операция требует аутентификации с ролью Оператор.
Требуемые параметры
Вариант |
Описание |
---|---|
|
Идентификатор ключа для шифрования данных |
|
Данные в кодировке Base64 |
|
Режим шифрования |
|
Вектор инициализации в кодировке Base64 |
Пример.
$ 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 <https://nethsmdemo.nitrokey.com/api_docs/index.html#/default/post_keys__KeyID__encrypt>`__.
Это выводит зашифрованное и закодированное в 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. В данном примере используется зашифрованное сообщение из предыдущей главы Encrypt.
Поддерживаемые режимы расшифровки следующие.
TAG`
PKCS1`
FILENAME`
--network`
OAEP_SHA224`
OAEP_SHA224`
OAEP_SHA224`
OAEP_SHA224`
USER_ID`
Данные могут быть расшифрованы следующим образом.
Требуемая роль
Эта операция требует аутентификации с ролью Оператор.
Требуемые параметры
Вариант |
Описание |
---|---|
|
Идентификатор ключа для расшифровки ширины данных |
|
Зашифрованные данные в кодировке 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`
На основе дайджеста можно создать подпись следующим образом.
Требуемая роль
Эта операция требует аутентификации с ролью Оператор.
Требуемые параметры
Вариант |
Описание |
---|---|
|
Идентификатор ключа для подписи ширины данных |
|
Данные для подписи, закодированные с помощью 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.
Требуемая роль
Эта операция требует аутентификации с ролью Оператор.
Аргументы
Аргумент |
Описание |
---|---|
|
Байты для извлечения |
Пример.
nitropy nethsm --host $NETHSM_HOST random 4
94A2rg==
Информацию о конечной точке /random можно найти в документации по API.