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 Clustern mit dem JCE-Anbieter herstellen
Diese Konfiguration ermöglicht es einer einzelnen Client-Instance, mit mehreren 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
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
-Konfiguration
CloudHsmProvider
kann auf zwei Arten konfiguriert werden:
Mit Datei konfigurieren (Standardkonfiguration)
Mit Code konfigurieren
Mit Datei konfigurieren (Standardkonfiguration)
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");
Mit Code konfigurieren
Ab Version 5.8.0 des Client-SDK können Sie den CloudHsmProvider
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.
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 für die Interaktion mit JCE verwenden kann:
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.
Verbindung zu mehreren Clustern herstellen
Wie oben angegeben, steht jeder CloudHsmProvider
für eine Verbindung zu Ihrem 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.
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 sprichtcluster1
, könnten Sie das folgende Beispiel für eine AES/GCM/-Operation NoPadding 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());