

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.

# Conexión a varios AWS CloudHSM clústeres con el proveedor de JCE
<a name="java-lib-configs-multi"></a>

Esta configuración permite que una sola instancia de cliente se comunique con varios clústeres de AWS CloudHSM . En comparación con tener una sola instancia que solo se comunique con un único clúster, esta característica puede suponer un ahorro de costos en algunos casos de uso. La `CloudHsmProvider` clase es AWS CloudHSM la implementación de la [clase Provider de Java Security](https://docs.oracle.com/javase/8/docs/api/java/security/Provider.html). Cada instancia de esta clase representa una conexión a todo el AWS CloudHSM clúster. Cree una instancia de esta clase y añádala a la lista de proveedores de seguridad de Java para poder interactuar con ella mediante clases de JCE estándar.

En el siguiente ejemplo, se crea una instancia de esta clase y se añade a la lista de proveedores de seguridad de Java:

```
if (Security.getProvider(CloudHsmProvider.PROVIDER_NAME) == null) {
    Security.addProvider(new CloudHsmProvider());
}
```

`CloudHsmProvider` puede configurarse de dos formas:

1. Configurar con un archivo (configuración predeterminada)

1. Configuración mediante código

En los siguientes temas, se describen estas configuraciones y cómo conectarse a varios clústeres.

**Topics**
+ [Configurar la clase `CloudHsmProvider` de AWS CloudHSM con un archivo (configuración predeterminada)](java-lib-configs-default.md)
+ [Configurar la clase `CloudHsmProvider` de AWS CloudHSM con un código](java-lib-configs-using-code.md)
+ [Conéctese a varios AWS CloudHSM clústeres](java-lib-connecting-to-multiclusters.md)

# Configurar la clase `CloudHsmProvider` de AWS CloudHSM con un archivo (configuración predeterminada)
<a name="java-lib-configs-default"></a>

La forma predeterminada de configurar la AWS CloudHSM `CloudHsmProvider` clase es con un archivo.

Al iniciar `CloudHsmProvider` con el constructor predeterminado, de forma predeterminada buscará el archivo de configuración en la ruta `/opt/cloudhsm/etc/cloudhsm-jce.cfg` en Linux. Este archivo de configuración se puede configurar usando `configure-jce`. 

Un objeto creado con el constructor predeterminado utilizará el nombre de proveedor de CloudHSM predeterminado `CloudHSM`. El nombre del proveedor es útil para interactuar con el JCE y decirle qué proveedor debe utilizar para las distintas operaciones. A continuación, se muestra un ejemplo de cómo utilizar el nombre del proveedor de CloudHSM para la operación de cifrado:

```
Cipher cipher = Cipher.getInstance("AES/GCM/NoPadding", "CloudHSM");
```

# Configurar la clase `CloudHsmProvider` de AWS CloudHSM con un código
<a name="java-lib-configs-using-code"></a>

A partir de la versión 5.8.0 del SDK de cliente, también puede configurar la AWS CloudHSM `CloudHsmProvider` clase mediante código Java. La forma de hacerlo es utilizando un objeto de clase `CloudHsmProviderConfig`. Puede construir este objeto utilizando `CloudHsmProviderConfigBuilder`. 

`CloudHsmProvider` tiene otro constructor que toma el objeto `CloudHsmProviderConfig`, como se muestra en el siguiente ejemplo.

**Example**  

```
CloudHsmProviderConfig config = CloudHsmProviderConfig.builder()  
                                    .withCluster(  
                                        CloudHsmCluster.builder()  
                                            .withHsmCAFilePath(hsmCAFilePath)
                                            .withClusterUniqueIdentifier("CloudHsmCluster1")
        .withServer(CloudHsmServer.builder().withHostIP(hostName).build())  
                        .build())  
        .build();
CloudHsmProvider provider = new CloudHsmProvider(config);
```

En este ejemplo, el nombre del proveedor JCE es `CloudHsmCluster1`. Este es el nombre que la aplicación puede utilizar posteriormente para interactuar con JCE.

**Example**  

```
Cipher cipher = Cipher.getInstance("AES/GCM/NoPadding", "CloudHsmCluster1");
```

Como alternativa, las aplicaciones también pueden usar el objeto de proveedor creado anteriormente para que JCE sepa que debe usar ese proveedor para la operación:

```
Cipher cipher = Cipher.getInstance("AES/GCM/NoPadding", provider);
```

Si no se especifica un identificador único con el método de `withClusterUniqueIdentifier`, se crea para usted un nombre de proveedor generado aleatoriamente. Para obtener este identificador generado aleatoriamente, las aplicaciones pueden llamar `provider.getName()` para obtener el identificador.

# Conéctese a varios AWS CloudHSM clústeres
<a name="java-lib-connecting-to-multiclusters"></a>

Cada uno `CloudHsmProvider` representa una conexión a su AWS CloudHSM clúster. Si desea comunicarse con otro clúster desde la misma aplicación, puede crear otro objeto de `CloudHsmProvider` con las configuraciones del otro clúster e interactuar con este otro clúster mediante el objeto del proveedor o el nombre del proveedor, como se muestra en el siguiente ejemplo.

**Example**  

```
CloudHsmProviderConfig config = CloudHsmProviderConfig.builder()  
                                    .withCluster(  
                                        CloudHsmCluster.builder()  
                                            .withHsmCAFilePath(hsmCAFilePath)
                                            .withClusterUniqueIdentifier("CloudHsmCluster1")
        .withServer(CloudHsmServer.builder().withHostIP(hostName).build())  
                        .build())  
        .build();
CloudHsmProvider provider1 = new CloudHsmProvider(config);

if (Security.getProvider(provider1.getName()) == null) {
    Security.addProvider(provider1);
}

CloudHsmProviderConfig config2 = CloudHsmProviderConfig.builder()  
                                    .withCluster(  
                                        CloudHsmCluster.builder()  
                                            .withHsmCAFilePath(hsmCAFilePath2)
                                            .withClusterUniqueIdentifier("CloudHsmCluster2")
        .withServer(CloudHsmServer.builder().withHostIP(hostName2).build())  
                        .build())  
        .build();
CloudHsmProvider provider2 = new CloudHsmProvider(config2);

if (Security.getProvider(provider2.getName()) == null) {
    Security.addProvider(provider2);
}
```

Una vez que haya configurado los dos proveedores (ambos clústeres) anteriores, podrá interactuar con ellos mediante el objeto del proveedor o mediante el nombre del proveedor. 

Ampliando este ejemplo que muestra cómo hablar con`cluster1`, puede utilizar el siguiente ejemplo para una AES/GCM/NoPadding operación:

```
Cipher cipher = Cipher.getInstance("AES/GCM/NoPadding", provider1);
```

Y en la misma aplicación para generar la clave «AES» en el segundo clúster con el nombre del proveedor, también puede usar el siguiente ejemplo:

```
Cipher cipher = Cipher.getInstance("AES/GCM/NoPadding", provider2.getName());
```