Operación¶
Este capítulo describe las tareas operativas para los usuarios con el rol de Administrador y Operador. Consulte el capítulo Roles para obtener más información sobre el rol.
Importante
Por favor, asegúrese de leer la información del principio de este documento antes de empezar a trabajar.
Gestión de claves¶
Generar claves¶
El NetHSM puede generar pares de claves. Se recomienda especificar la opción de ID de clave para darle un nombre expresivo.
Los tipos de llave admitidos y sus correspondientes mecanismos son los siguientes.
Tipo de llave |
Mecanismos |
---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Las claves se asignan al espacio de nombres ` <administration.html#namespaces>` __ del usuario que genera la clave.
La clave se puede generar de la siguiente manera.
Relación requerida
Esta operación requiere una autentificación con el rol de Administrador.
Opciones requeridas
Opción |
Descripción |
---|---|
|
El tipo para la clave generada. Los posibles valores para el argumento |
|
Los mecanismos para la clave generada. Los posibles valores para el argumento |
|
La longitud de la clave generada |
Opciones
Opción |
Descripción |
---|---|
|
El ID de la clave generada |
Ejemplo
$ 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
Encontrará información sobre el punto final /keys/generate en la documentación de la API.
Clave de importación¶
El NetHSM puede importar claves privadas existentes al Almacén de Claves.
Los tipos de llave admitidos y sus correspondientes mecanismos son los siguientes.
Tipo de llave |
Mecanismos |
---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Las claves se asignan al espacio de nombres ` <administration.html#namespaces>` __ del usuario que importa la clave.
Importe una clave privada desde un archivo PEM a NetHSM de la siguiente manera.
Relación requerida
Esta operación requiere una autentificación con el rol de Administrador.
Argumentos
Argumento |
Descripción |
---|---|
|
Archivo de clave privada en formato PEM |
Opciones
Opción |
Descripción |
---|---|
|
Los mecanismos para la clave generada. Los posibles valores para el argumento |
|
El ID de la nueva clave |
|
La etiqueta de la nueva clave |
Ejemplo
$ 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
Encontrará información sobre el punto final /keys en la documentación API.
Las claves privadas en formato raw pueden importarse de la siguiente manera.
Relación requerida
Esta operación requiere una autentificación con el rol de Administrador.
Opciones requeridas
Opción |
Descripción |
---|---|
|
El tipo para la clave generada. Los posibles valores para el argumento |
|
Los mecanismos para la clave generada. Los posibles valores para el argumento |
|
El primo p para claves RSA, codificado en base64 |
|
El primo q para claves RSA, codificado en base64 |
|
El exponente público de las claves RSA, codificado en base64 |
|
Los datos de las claves ED25519 o ECDSA_*, codificados en base64 |
Opciones
Opción |
Descripción |
---|---|
|
El ID de la nueva clave |
|
La etiqueta de la nueva clave |
Ejemplo
$ 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
Encontrará información sobre el punto final /keys en la documentación API.
Tecla Borrar¶
El NetHSM puede borrar claves del almacén de claves ** . Los usuarios sólo pueden borrar claves de su Espacio de nombres.
Relación requerida
Esta operación requiere una autentificación con el rol de Administrador.
Argumentos
Argumento |
Descripción |
---|---|
|
El ID de la clave que se va a eliminar |
Ejemplo
$ nitropy nethsm --host $NETHSM_HOST delete-key myFirstKey
Key myFirstKey deleted on NetHSM localhost:8443
Encontrará información sobre el punto final /keys/{KeyID} en la documentación de la API.
Lista de claves¶
El NetHSM puede listar todas las claves del almacén de claves ** que se encuentran en el espacio de nombres ` <administration.html#namespaces>` __ del usuario actual.
La lista se puede recuperar de la siguiente manera.
Relación requerida
Esta operación requiere una autentificación con el rol de Administrador u Operador.
Opciones
Opción |
Descripción |
---|---|
|
La etiqueta a buscar |
Ejemplo
$ 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
Encontrará información sobre el punto final /keys en la documentación API.
Mostrar detalles de la llave¶
El NetHSM puede proporcionar información más detallada sobre una clave almacenada. Los usuarios sólo pueden acceder a las claves de su espacio de nombres ` <administration.html#namespaces>` __.
La información detallada se puede recuperar de la siguiente manera.
Relación requerida
Esta operación requiere una autentificación con el rol de Administrador u Operador.
Ejemplo
$ 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
Encontrará información sobre el punto final /keys/{KeyID} en la documentación de la API.
La clave pública de una clave puede recuperarse del siguiente modo. Está en formato PKCS#8.
Relación requerida
Esta operación requiere una autentificación con el rol de Administrador u Operador.
Ejemplo
$ 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-----
Encontrará información sobre el punto final /keys/{KeyID}/public.pem en la documentación de la API.
La clave pública se puede inspeccionar, por ejemplo, con OpenSSL de la siguiente manera.
Relación requerida
Esta operación requiere una autentificación con el rol de Administrador u Operador.
Ejemplo
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-----
Encontrará información sobre el punto final /keys/{KeyID}/public.pem en la documentación de la API.
Certificados clave¶
Es posible establecer y consultar certificados para las claves almacenadas en un NetHSM.
Los tipos MIME admitidos son los siguientes.
application/x-pem-file
application/x-x509-ca-cert
application/pgp-keys
El certificado se puede configurar de la siguiente manera.
Relación requerida
Esta operación requiere una autentificación con el rol de Administrador.
Opciones requeridas
Opción |
Descripción |
---|---|
|
El ID de la clave para la que se establece el certificado |
Opciones
Opción |
Descripción |
---|---|
|
El tipo MIME del certificado. Los tipos MIME disponibles se enumeran más arriba. |
Argumentos
Argumento |
Descripción |
---|---|
|
Archivo de certificados |
Ejemplo
$ 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
Encontrará información sobre el punto final /keys/{KeyID}/cert en la documentación de la API.
El certificado se puede recuperar de la siguiente manera.
Relación requerida
Esta operación requiere una autentificación con el rol de Administrador u Operador.
Opciones requeridas
Opción |
Descripción |
---|---|
|
El ID de la clave para la que se obtiene el certificado |
Ejemplo
$ 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-----
Encontrará información sobre el punto final /keys/{KeyID}/cert en la documentación de la API.
Solicitudes de firma de certificados clave¶
El NetHSM permite generar CSR (Certificate Signing Requests) para las claves almacenadas.
Relación requerida
Esta operación requiere una autentificación con el rol de Administrador u Operador.
Opciones requeridas
Opción |
Descripción |
---|---|
|
El ID de la clave para generar el CSR |
|
El nombre del país |
|
El nombre del estado o de la provincia |
|
El nombre de la localidad |
|
El nombre de la organización |
|
El nombre de la unidad de organización |
|
El nombre común |
|
La dirección de correo electrónico |
Ejemplo
$ 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-----
Encontrará información sobre el punto final /keys/{KeyID}/csr.pem en la documentación de la API.
Operaciones clave¶
Todas las operaciones descritas en este capítulo sólo pueden ejecutarse para claves que se encuentren en el espacio de nombres ` <administration.html#namespaces>` __ del usuario actual.
Cifrar¶
La NetHSM puede cifrar datos para claves simétricas, almacenadas en el Key Store. En cambio, la encriptación de datos con claves asimétricas no puede realizarse en el NetHSM, debido al concepto de criptografía de clave pública de poner la clave pública a disposición de todo el mundo. Para claves asimétricas, el NetHSM proporciona la clave pública, que puede utilizarse para cifrar con una herramienta externa. Consulte Show Key Details para obtener más información sobre cómo recuperar la clave pública de una clave en Key Store.
Los datos pueden cifrarse para una clave simétrica de la siguiente manera.
Relación requerida
Esta operación requiere una autentificación con el rol de Operador.
Opciones requeridas
Opción |
Descripción |
---|---|
|
ID de la clave con la que se cifrarán los datos |
|
Los datos en codificación Base64 |
|
El modo de cifrado |
|
El vector de inicialización en codificación Base64 |
Ejemplo
$ 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==
Encontrará información sobre el punto final /keys/{KeyID}/encrypt en la documentación de la API.
Esto imprime el mensaje cifrado y codificado en base64 NetHSM rulezzzzzzzzzzzzzzzzzzz!
, y el vector de inicialización.
Los datos pueden cifrarse para claves asimétricas con OpenSSL de la siguiente manera.
$ echo 'NetHSM rulez!' | openssl pkeyutl -encrypt -pubin -inkey public.pem | base64 > data.crypt
Esto escribe el mensaje cifrado y codificado en base64 NetHSM rulez!
en el archivo data.crypt
, utilizando la clave pública de public.pem
.
Descifrar¶
El NetHSM puede descifrar datos para una clave privada almacenada en el Almacén de Claves del NetHSM. Este ejemplo utiliza el mensaje encriptado del capítulo anterior Encriptar.
Los modos de descifrado admitidos son los siguientes.
TAG
PKCS1
FILENAME
--network
OAEP_SHA224
OAEP_SHA224
OAEP_SHA224
OAEP_SHA224
USER_ID
Los datos pueden ser descifrados de la siguiente manera.
Relación requerida
Esta operación requiere una autentificación con el rol de Operador.
Opciones requeridas
Opción |
Descripción |
---|---|
|
El ID de la clave para descifrar el ancho de los datos |
|
Los datos encriptados en codificación Base64 |
|
El modo de descifrado. Los modos disponibles se enumeran más arriba. |
Ejemplo
$ nitropy nethsm -h $NETHSM_HOST decrypt -k myFirstKey -d "$(cat data.crypt)" -m PKCS1 | base64 -d
NetHSM rulez!
Encontrará información sobre el punto final /keys/{KeyID}/decrypt en la documentación de la API.
Firma¶
El NetHSM puede firmar datos para una clave privada almacenada en el almacenamiento de claves del NetHSM. Para las firmas con una clave RSA y ECDSA, se debe calcular primero un compendio.
Para calcular un compendio se necesitan primero los datos. Se crea un mensaje de la siguiente manera.
$ echo 'NetHSM rulez!' > data
El compendio se calcula con OpenSSL de la siguiente manera.
$ openssl dgst -sha256 -binary data | base64 > data.digest
Los modos de firma admitidos son los siguientes.
PKCS1
USER_ID
FILENAME
Curve25519
Curve25519
Curve25519
Curve25519
PKCS1
PKCS1
A partir del compendio se puede crear una firma de la siguiente manera.
Relación requerida
Esta operación requiere una autentificación con el rol de Operador.
Opciones requeridas
Opción |
Descripción |
---|---|
|
El ID de la clave para firmar el ancho de los datos |
|
Los datos a firmar codificados con Base64 |
|
El modo de señalización |
Ejemplo
$ nitropy nethsm -h $NETHSM_HOST sign -k myFirstKey -m PKCS1 -d "$(cat data.digest)" | base64 -d > data.sig
Encontrará información sobre el punto final /keys/{KeyID}/sign en la documentación de API.
La firma creada puede ser verificada con OpenSSL de la siguiente manera.
$ openssl dgst -sha256 -verify public.pem -signature data.sig -sigopt rsa_padding_mode:pss -sigopt rsa_pss_saltlen:-1 data
Verified OK
Al azar¶
El NetHSM puede proporcionar bytes aleatorios como una cadena Base64.
Relación requerida
Esta operación requiere una autentificación con el rol de Operador.
Argumentos
Argumento |
Descripción |
---|---|
|
Bytes a recuperar |
Ejemplo
nitropy nethsm --host $NETHSM_HOST random 4
94A2rg==
Puede encontrar información sobre el endpoint /random en la documentación API.