Instalar y usar el proveedor AWS CloudHSM JCE para Client SDK 3 - AWS CloudHSM

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Instalar y usar el proveedor AWS CloudHSM JCE para Client SDK 3

Para poder usar el proveedor de JCE, necesita el AWS CloudHSM cliente.

El cliente es un demonio que establece una comunicación end-to-end cifrada con los HSM del clúster. El proveedor de JCE se comunica localmente con el cliente. Si no ha instalado ni configurado el paquete de AWS CloudHSM cliente, hágalo ahora siguiendo los pasos que se indican en. Instalar el cliente (Linux) Después de instalar y configurar el cliente, utilice el siguiente comando para iniciarlo.

Nota: El proveedor JCE solo se admite en Linux y en sistemas operativos compatibles.

Amazon Linux
$ sudo start cloudhsm-client
Amazon Linux 2
$ sudo systemctl cloudhsm-client start
CentOS 7
$ sudo systemctl cloudhsm-client start
CentOS 8
$ sudo systemctl cloudhsm-client start
RHEL 7
$ sudo systemctl cloudhsm-client start
RHEL 8
$ sudo systemctl cloudhsm-client start
Ubuntu 16.04 LTS
$ sudo systemctl cloudhsm-client start
Ubuntu 18.04 LTS
$ sudo systemctl cloudhsm-client start
Ubuntu 20.04 LTS
$ sudo systemctl cloudhsm-client start

Instalación del proveedor de JCE

Utilice el siguiente comando para descargar e instalar el proveedor de JCE. Este proveedor solo se admite en Linux y en sistemas operativos compatibles.

nota

Para obtener actualizaciones, consulte Actualización de SDK 3 de cliente.

Amazon Linux
$ wget https://s3.amazonaws.com/cloudhsmv2-software/CloudHsmClient/EL6/cloudhsm-client-jce-latest.el6.x86_64.rpm
$ sudo yum install ./cloudhsm-client-jce-latest.el6.x86_64.rpm
Amazon Linux 2
$ wget https://s3.amazonaws.com/cloudhsmv2-software/CloudHsmClient/EL7/cloudhsm-client-jce-latest.el7.x86_64.rpm
$ sudo yum install ./cloudhsm-client-jce-latest.el7.x86_64.rpm
CentOS 7
$ wget https://s3.amazonaws.com/cloudhsmv2-software/CloudHsmClient/EL7/cloudhsm-client-jce-latest.el7.x86_64.rpm
$ sudo yum install ./cloudhsm-client-jce-latest.el7.x86_64.rpm
CentOS 8
$ wget https://s3.amazonaws.com/cloudhsmv2-software/CloudHsmClient/EL8/cloudhsm-client-jce-latest.el8.x86_64.rpm
$ sudo yum install ./cloudhsm-client-jce-latest.el8.x86_64.rpm
RHEL 7
$ wget https://s3.amazonaws.com/cloudhsmv2-software/CloudHsmClient/EL7/cloudhsm-client-jce-latest.el7.x86_64.rpm
$ sudo yum install ./cloudhsm-client-jce-latest.el7.x86_64.rpm
RHEL 8
$ wget https://s3.amazonaws.com/cloudhsmv2-software/CloudHsmClient/EL8/cloudhsm-client-jce-latest.el8.x86_64.rpm
$ sudo yum install ./cloudhsm-client-jce-latest.el8.x86_64.rpm
Ubuntu 16.04 LTS
$ wget https://s3.amazonaws.com/cloudhsmv2-software/CloudHsmClient/Xenial/cloudhsm-client-jce_latest_amd64.deb
$ sudo apt install ./cloudhsm-client-jce_latest_amd64.deb
Ubuntu 18.04 LTS
$ wget https://s3.amazonaws.com/cloudhsmv2-software/CloudHsmClient/Bionic/cloudhsm-client-jce_latest_u18.04_amd64.deb
$ sudo apt install ./cloudhsm-client-jce_latest_u18.04_amd64.deb

Después de ejecutar los comandos anteriores, encontrará los siguientes archivos en el proveedor de JCE:

  • /opt/cloudhsm/java/cloudhsm-version.jar

  • /opt/cloudhsm/java/cloudhsm-test-version.jar

  • /opt/cloudhsm/java/hamcrest-all-1.3.jar

  • /opt/cloudhsm/java/junit.jar

  • /opt/cloudhsm/java/log4j-api-2.17.1.jar

  • /opt/cloudhsm/java/log4j-core-2.17.1.jar

  • /opt/cloudhsm/lib/libcaviumjca.so

Validación de la instalación

Realice operaciones básicas en el HSM para validar la instalación.

Cómo validar la instalación del proveedor de JCE
  1. (Opcional) Si todavía no tiene instalado Java en su entorno, ejecute el comando siguiente para instalarlo.

    Linux (and compatible libraries)
    $ sudo yum install java-1.8.0-openjdk
    Ubuntu
    $ sudo apt-get install openjdk-8-jre
  2. Utilice los siguientes comandos para definir las variables de entorno necesarias. Sustituya <nombre de usuario de HSM> y <password> con las credenciales de un usuario de criptografía (CU).

    $ export LD_LIBRARY_PATH=/opt/cloudhsm/lib
    $ export HSM_PARTITION=PARTITION_1
    $ export HSM_USER=<HSM user name>
    $ export HSM_PASSWORD=<password>
  3. Utilice el siguiente comando para ejecutar la prueba de funcionalidad básica. Si se ejecuta correctamente, la salida del comando debería ser similar a la siguiente.

    $ java8 -classpath "/opt/cloudhsm/java/*" org.junit.runner.JUnitCore TestBasicFunctionality JUnit version 4.11 .2018-08-20 17:53:48,514 DEBUG [main] TestBasicFunctionality (TestBasicFunctionality.java:33) - Adding provider. 2018-08-20 17:53:48,612 DEBUG [main] TestBasicFunctionality (TestBasicFunctionality.java:42) - Logging in. 2018-08-20 17:53:48,612 INFO [main] cfm2.LoginManager (LoginManager.java:104) - Looking for credentials in HsmCredentials.properties 2018-08-20 17:53:48,612 INFO [main] cfm2.LoginManager (LoginManager.java:122) - Looking for credentials in System.properties 2018-08-20 17:53:48,613 INFO [main] cfm2.LoginManager (LoginManager.java:130) - Looking for credentials in System.env SDK Version: 2.03 2018-08-20 17:53:48,655 DEBUG [main] TestBasicFunctionality (TestBasicFunctionality.java:54) - Generating AES Key with key size 256. 2018-08-20 17:53:48,698 DEBUG [main] TestBasicFunctionality (TestBasicFunctionality.java:63) - Encrypting with AES Key. 2018-08-20 17:53:48,705 DEBUG [main] TestBasicFunctionality (TestBasicFunctionality.java:84) - Deleting AES Key. 2018-08-20 17:53:48,707 DEBUG [main] TestBasicFunctionality (TestBasicFunctionality.java:92) - Logging out. Time: 0.205 OK (1 test)

Cómo proporcionar credenciales al proveedor de JCE

Los HSM necesitan autenticar la aplicación de Java antes de que la aplicación pueda utilizarlos. Cada aplicación puede utilizar una sesión. Los HSM autentican una sesión mediante el método de inicio de sesión explícito o implícito.

Inicio de sesión explícito: este método le permite proporcionar las credenciales de CloudHSM directamente en la aplicación. Utiliza el método LoginManager.login(), en el que se pasa el nombre de usuario y la contraseña del CU y el ID de la partición de HSM. Para obtener más información acerca de cómo utilizar el método de inicio de sesión explícito, consulte el ejemplo de código de inicio de sesión en un HSM.

Inicio de sesión implícito: este método le permite definir las credenciales de CloudHSM en un nuevo archivo de propiedades, en las propiedades del sistema o como variables de entorno.

  • Nuevo archivo de propiedades: cree un nuevo archivo con el nombre HsmCredentials.properties y añádalo al CLASSPATH de su aplicación. El archivo debe contener lo siguiente:

    HSM_PARTITION = PARTITION_1 HSM_USER = <HSM user name> HSM_PASSWORD = <password>
  • Propiedades del sistema: defina las credenciales mediante las propiedades del sistema al ejecutar la aplicación. En los siguientes ejemplos, se muestran dos maneras diferentes de hacerlo:

    $ java -DHSM_PARTITION=PARTITION_1 -DHSM_USER=<HSM user name> -DHSM_PASSWORD=<password>
    System.setProperty("HSM_PARTITION","PARTITION_1"); System.setProperty("HSM_USER","<HSM user name>"); System.setProperty("HSM_PASSWORD","<password>");
  • Variables de entorno: defina las credenciales como variables de entorno.

    $ export HSM_PARTITION=PARTITION_1 $ export HSM_USER=<HSM user name> $ export HSM_PASSWORD=<password>

Es posible que las credenciales no estén disponibles si la aplicación no las proporciona o si se intenta realizar una operación antes de que el HSM autentique la sesión. En esos casos, la biblioteca de software de CloudHSM para Java busca las credenciales en el orden que se indica a continuación:

  1. HsmCredentials.properties

  2. Propiedades del sistema

  3. Variables de entorno

Control de errores

El control de errores es más fácil con el método de inicio de sesión explícito que con el de inicio de sesión implícito. Si utiliza la clase LoginManager, tendrá más control sobre el modo en que la aplicación gestiona los errores. Con el método de inicio de sesión implícito, la gestión de errores resulta difícil de comprender cuando las credenciales no son válidas o cuando los HSM tienen problemas en la sesión de autenticación.

Aspectos básicos de gestión de claves en el proveedor de JCE

Los aspectos básicos de la administración de claves en el proveedor de JCE están relacionados con la importación o la exportación de claves, la carga de claves por identificador o la eliminación de claves. Para obtener más información acerca de la administración de claves, consulte el ejemplo de código de administración de claves.

También puede encontrar más ejemplos de código de proveedor de JCE en Ejemplos de código.