

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

# Verbindung zu mehreren AWS CloudHSM Clustern mit dem JCE-Anbieter herstellen
<a name="java-lib-configs-multi"></a>

Diese Konfiguration ermöglicht es einer einzelnen Client-Instance, mit mehreren AWS CloudHSM Clustern zu kommunizieren. Wenn Sie eine einzelne Instance haben, die nur mit einem einzigen Cluster kommuniziert, kann diese Konfiguration in einigen Anwendungsfällen zu Kosteneinsparungen führen. Die `CloudHsmProvider` Klasse AWS CloudHSM ist die Implementierung der [Provider-Klasse von Java Security](https://docs.oracle.com/javase/8/docs/api/java/security/Provider.html). Jede Instanz dieser Klasse stellt eine Verbindung zu Ihrem gesamten AWS CloudHSM Cluster dar. Sie instanziieren diese Klasse und fügen sie der Liste der Java-Security-Anbieter hinzu, sodass Sie mit ihr über Standard-JCE-Klassen interagieren können.

Das folgende Beispiel instanziiert diese Klasse und fügt sie der Liste der Java-Security-Anbieter hinzu:

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

`CloudHsmProvider` kann auf zwei Arten konfiguriert werden:

1. Mit Datei konfigurieren (Standardkonfiguration)

1. Mit Code konfigurieren

In den folgenden Themen werden diese Konfigurationen und das Herstellen einer Verbindung zu mehreren Clustern beschrieben.

**Topics**
+ [Konfigurieren Sie die AWS CloudHSM `CloudHsmProvider` Klasse mit einer Datei (Standardkonfiguration)](java-lib-configs-default.md)
+ [Konfigurieren Sie die AWS CloudHSM `CloudHsmProvider` Klasse mithilfe von Code](java-lib-configs-using-code.md)
+ [Connect zu mehreren AWS CloudHSM Clustern her](java-lib-connecting-to-multiclusters.md)

# Konfigurieren Sie die AWS CloudHSM `CloudHsmProvider` Klasse mit einer Datei (Standardkonfiguration)
<a name="java-lib-configs-default"></a>

Die AWS CloudHSM `CloudHsmProvider` Klasse wird standardmäßig mit einer Datei konfiguriert.

Wenn Sie `CloudHsmProvider` mit dem Standardkonstruktor instanziieren, sucht er unter Linux standardmäßig nach einer Konfigurationsdatei im `/opt/cloudhsm/etc/cloudhsm-jce.cfg`-Pfad. Diese Konfigurationsdatei kann mit der Datei `configure-jce` konfiguriert werden. 

Ein mit dem Standardkonstruktor erstelltes Objekt verwendet den standardmäßigen CloudHSM-Anbieternamen `CloudHSM`. Der Anbietername ist nützlich, um mit JCE zu interagieren und ihm mitzuteilen, welcher Anbieter für verschiedene Operationen verwendet werden soll. Ein Beispiel für die Verwendung des CloudHSM-Anbieternamens für den Chiffriervorgang lautet wie folgt:

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

# Konfigurieren Sie die AWS CloudHSM `CloudHsmProvider` Klasse mithilfe von Code
<a name="java-lib-configs-using-code"></a>

Ab Version 5.8.0 des Client SDK können Sie die AWS CloudHSM `CloudHsmProvider` Klasse auch mithilfe von Java-Code konfigurieren. Dazu verwenden Sie ein Objekt der `CloudHsmProviderConfig`-Klasse. Sie können `CloudHsmProviderConfigBuilder` verwenden, um dieses Objekt zu erstellen. 

`CloudHsmProvider` hat einen anderen Konstruktor, der das `CloudHsmProviderConfig`-Objekt aufnimmt, wie das folgende Beispiel zeigt.

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

In diesem Beispiel lautet der Name des JCE-Anbieters. `CloudHsmCluster1` Dies ist der Name, den die Anwendung dann verwenden kann, um mit JCE zu interagieren:

**Example**  

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

Alternativ können Anwendungen auch das oben erstellte Anbieter-Objekt verwenden, um JCE mitzuteilen, dass es diesen Anbieter für die Operation verwenden soll:

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

Wenn mit der `withClusterUniqueIdentifier`-Methode kein eindeutiger Bezeichner angegeben wird, wird ein zufällig generierter Anbietername für Sie erstellt. Um diesen zufällig generierten Bezeichner zu erhalten, können Anwendungen `provider.getName()` aufrufen, um den Bezeichner abzurufen.

# Connect zu mehreren AWS CloudHSM Clustern her
<a name="java-lib-connecting-to-multiclusters"></a>

Jedes `CloudHsmProvider` steht für eine Verbindung zu Ihrem AWS CloudHSM Cluster. Wenn Sie mit einem anderen Cluster aus derselben Anwendung kommunizieren möchten, können Sie ein anderes Objekt von `CloudHsmProvider` mit Konfigurationen für Ihren anderen Cluster erstellen und mit diesem anderen Cluster entweder über das Anbieterobjekt oder über den Anbieternamen interagieren, wie im folgenden Beispiel gezeigt.

**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);
}
```

Nachdem Sie beide Anbieter (beide Cluster) oben konfiguriert haben, können Sie entweder über das Anbieterobjekt oder über den Anbieternamen mit ihnen interagieren. 

Ausgehend von diesem Beispiel, das zeigt, wie man mit jemandem spricht`cluster1`, könnten Sie das folgende Beispiel für eine AES/GCM/NoPadding Operation verwenden:

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

Und in derselben Anwendung zur Generierung von „AES“-Schlüsseln auf dem zweiten Cluster mit dem Anbieternamen könnten Sie auch das folgende Beispiel verwenden:

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