Clase de Java KeyStore de AWS CloudHSM para Client SDK 3
La clase KeyStore
de AWS CloudHSM proporciona un almacén de claves PKCS12 para usos especiales que permite obtener acceso a las claves de AWS CloudHSM a través de aplicaciones, como keytool y jarsigner. Este almacén de claves puede almacenar certificados junto con datos de la clave y relacionar estos certificados con los datos de clave que están almacenados en AWS CloudHSM.
nota
Como los certificados son información pública, para maximizar la capacidad de almacenamiento de las claves criptográficas, AWS CloudHSM no permite almacenar certificados en los HSM.
La clase KeyStore
de AWS CloudHSM implementa la interfaz de proveedor de servicios (SPI) KeyStore
de Java Cryptography Extension (JCE). Para obtener más información sobre el uso de KeyStore
, consulte Clase KeyStore
Elegir el almacén de claves adecuado para Client SDK 3 de AWS CloudHSM
El proveedor AWS CloudHSM Java Cryptographic Extension (JCE) incluye por defecto un almacén de claves de paso directo y de solo lectura que transfiere todas las transacciones al HSM: Este almacén de claves predeterminado es distinto del almacén de claves de AWS CloudHSM para usos especiales. En la mayoría de los casos, obtendrá mejor rendimiento en tiempo de ejecución con el valor predeterminado. Solo debe utilizar el almacén de claves de AWS CloudHSM con las aplicaciones en las que es necesario tener compatibilidad con certificados y operaciones basadas en certificados, además de descargar operaciones de claves en el HSM.
Aunque los dos almacenes de claves utilizan el proveedor JCE para las operaciones, son entidades independientes y no intercambian información entre sí.
Cargue el almacén de claves predeterminado para la aplicación Java de la siguiente manera:
KeyStore ks = KeyStore.getInstance("Cavium");
Cargue el almacén de claves de CloudHSM para usos especiales de la siguiente manera:
KeyStore ks = KeyStore.getInstance("CloudHSM")
Inicializar la KeyStore del AWS CloudHSM para Client SDK 3
Inicie sesión en el almacén de claves de AWS CloudHSM de la misma manera que inicia sesión en el proveedor de JCE. Puede utilizar variables de entorno o el archivo de propiedades del sistema, aunque debe iniciar sesión antes de empezar a usar el almacén de claves de CloudHSM. Para ver un ejemplo de inicio de sesión en un HSM mediante el proveedor JCE, consulte Inicio de sesión en un HSM
Si lo desea, puede especificar una contraseña para cifrar el archivo PKCS12 local que contiene los datos del almacén de claves. Cuando se crea el almacén de claves de AWS CloudHSM, se establece la contraseña, que se proporciona cuando se utilizan los métodos load, set y get.
Para crear instancias de un nuevo objeto KeyStore de CloudHSM, haga lo siguiente:
ks.load(null, null);
Para escribir los datos del almacén de claves en un archivo, utilice el método store
. A partir de ese momento, puede cargar el almacén de claves existente utilizando el método load
con el archivo de origen y la contraseña de la siguiente manera:
ks.load(inputStream, password);
Usar la KeyStore de AWS CloudHSM para Client SDK 3 de AWS CloudHSM
El objeto KeyStore de CloudHSM se utiliza generalmente a través de una aplicación de terceros, como jarsigner
El objeto KeyStore de AWS CloudHSM se ajusta a la especificación de la clase KeyStore
-
load
Carga el almacén de claves a partir de la secuencia de entrada especificada. Si se estableció una contraseña al guardar el almacén de claves, debe proporcionarse esta misma contraseña para que la carga se realice correctamente. Establezca los dos parámetros en null para inicializar un nuevo almacén de claves vacío.
KeyStore ks = KeyStore.getInstance("CloudHSM"); ks.load(inputStream, password);
-
aliases
Devuelve una enumeración de los nombres de alias de todas las entradas de la instancia especificada del almacén de claves. Los resultados incluyen objetos almacenados localmente en el archivo PKCS12 y objetos residentes en el HSM.
Código de muestra:
KeyStore ks = KeyStore.getInstance("CloudHSM"); for(Enumeration<String> entry = ks.aliases(); entry.hasMoreElements();) { String label = entry.nextElement(); System.out.println(label); }
-
ContainsAlias
Devuelve true si el almacén de claves tiene acceso al menos a un objeto con el alias especificado. El almacén de claves comprueba los objetos almacenados localmente en el archivo PKCS12 y los objetos residentes en el HSM.
-
DeleteEntry
Elimina una entrada de certificado del archivo PKCS12 local. No se pueden eliminar datos de claves almacenados en un HSM utilizando el objeto KeyStore de AWS CloudHSM. Puede eliminar las claves con la herramienta key_mgmt_util de CloudHSM.
-
GetCertificate
Devuelve el certificado asociado a un alias, si está disponible. Si el alias no existe o hace referencia a un objeto que no es un certificado, la función devuelve NULL.
KeyStore ks = KeyStore.getInstance("CloudHSM"); Certificate cert = ks.getCertificate(alias)
-
GetCertificateAlias
Devuelve el nombre (alias) de la primera entrada del almacén de claves cuyos datos coinciden con el certificado especificado.
KeyStore ks = KeyStore.getInstance("CloudHSM"); String alias = ks.getCertificateAlias(cert)
-
GetCertificateChain
Devuelve la cadena de certificados asociada con el alias especificado. Si el alias no existe o hace referencia a un objeto que no es un certificado, la función devuelve NULL.
-
GetCreationDate
Devuelve la fecha de creación de la entrada identificada por el alias especificado. Si no hay disponible ninguna fecha de creación, la función devuelve la fecha en la que el certificado pasó a ser válido.
-
GetKey
GetKey se pasa al HSM y devuelve un objeto de clave que se corresponde con la etiqueta especificada. Como
getKey
consulta directamente el HSM, puede utilizarse con cualquier clave del HSM, independientemente de si la generó KeyStore.Key key = ks.getKey(keyLabel, null);
-
IsCertificateEntry
Comprueba si la entrada con el alias especificado representa una entrada de certificado.
-
IsKeyEntry
Comprueba si la entrada con el alias especificado representa una entrada de clave. La acción busca el alias tanto en el archivo PKCS12 como en el HSM.
-
SetCertificateEntry
Asigna el certificado especificado al alias proporcionado. Si el alias proporcionado ya se utiliza para identificar una clave o un certificado, se inicia una excepción
KeyStoreException
. Puede utilizar el código de JCE para obtener el objeto de clave y después utilizar el métodoSetKeyEntry
del almacén de claves para asociar el certificado a la clave. -
SetKeyEntry
con una clavebyte[]
Actualmente, esta API no es compatible con SDK 3 de cliente.
-
SetKeyEntry
con un objetoKey
Asigna la clave especificada al alias proporcionado y la almacena dentro del HSM. Si el objeto
Key
no es de tipoCaviumKey
, la clave se importa en el HSM como clave de sesión extraíble.Si el objeto
Key
es de tipoPrivateKey
, debe ir acompañado de la cadena de certificados correspondiente.Si el alias ya existe, la llamada a
SetKeyEntry
inicia una excepciónKeyStoreException
y evita que la clave se sobrescriba. Si es necesario sobrescribir la clave, utilice KMU o JCE para ese propósito. -
EngineSize
Devuelve el número de entradas del almacén de claves.
-
Store
Guarda el almacén de claves en el flujo de salida especificado como un archivo PKCS12 y lo protege con la contraseña proporcionada. Además, conserva todas las claves cargadas (que se establecen mediante llamadas a
setKey
).