Instalar el proveedor de JCE para Client SDK 3 del AWS CloudHSM - AWS CloudHSM

Instalar el proveedor de JCE para Client SDK 3 del AWS CloudHSM

Necesita el cliente AWS CloudHSM para poder usar el proveedor de JCE.

El cliente es un demonio establece una comunicación cifrada integral con los HSM del clúster. El proveedor de JCE se comunica localmente con el cliente. Si no ha instalado y configurado el paquete de cliente de AWS CloudHSM, hágalo ahora siguiendo los pasos de 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

Use las siguientes secciones para instalar, validar y proporcionar credenciales al proveedor.

Paso 1: Instalar el 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 Client SDK 3.

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

Paso 2: Validar 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)

Paso 3: Proporcionar las 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.