

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.

# Instale el proveedor JCE para AWS CloudHSM Client SDK 3
<a name="java-library-install"></a>

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

El cliente es un daemon que establece una comunicación end-to-end cifrada con los miembros del HSMs 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)](cmu-install-and-configure-client-linux.md). 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 start cloudhsm-client
```

------
#### [ CentOS 7 ]

```
$ sudo systemctl start cloudhsm-client
```

------
#### [ CentOS 8 ]

```
$ sudo systemctl start cloudhsm-client
```

------
#### [ RHEL 7 ]

```
$ sudo systemctl start cloudhsm-client
```

------
#### [ RHEL 8 ]

```
$ sudo systemctl start cloudhsm-client
```

------
#### [ Ubuntu 16.04 LTS ]

```
$ sudo systemctl start cloudhsm-client
```

------
#### [ Ubuntu 18.04 LTS ]

```
$ sudo systemctl start cloudhsm-client
```

------
#### [ Ubuntu 20.04 LTS ]

```
$ sudo systemctl start cloudhsm-client
```

------

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

**Topics**
+ [Paso 1: Instalar el proveedor de JCE](#install-java-library)
+ [Paso 2: validación de la instalación](#validate-install)
+ [Paso 3: Proporcionar las credenciales al proveedor de JCE](#java-library-credentials)

## Paso 1: Instalar el proveedor de JCE
<a name="install-java-library"></a>

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](client-upgrade.md).

------
#### [ 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: validación de la instalación
<a name="validate-install"></a>

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
   ```

------

1. Utilice los siguientes comandos para definir las variables de entorno necesarias. Sustituya *<HSM user name>* y *<password>* por las credenciales de un usuario criptográfico (CU).

   ```
   $ export LD_LIBRARY_PATH=/opt/cloudhsm/lib
   ```

   ```
   $ export HSM_PARTITION=PARTITION_1
   ```

   ```
   $ export HSM_USER=<HSM user name>
   ```

   ```
   $ export HSM_PASSWORD=<password>
   ```

1. 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
<a name="java-library-credentials"></a>

HSMs necesita autenticar su aplicación Java antes de que la aplicación pueda utilizarla. Cada aplicación puede utilizar una sesión. HSMs autenticar 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](https://github.com/aws-samples/aws-cloudhsm-jce-examples/blob/master/src/main/java/com/amazonaws/cloudhsm/examples/LoginRunner.java). 

**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`

1. Propiedades del sistema

1. Variables de entorno

**Gestión 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. El método de inicio de sesión implícito dificulta la comprensión de la gestión de errores cuando las credenciales no son válidas o si HSMs hay problemas al autenticar la sesión.