Menghubungkan ke beberapa cluster dengan penyedia JCE - AWS CloudHSM

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Menghubungkan ke beberapa cluster dengan penyedia JCE

Konfigurasi ini memungkinkan instance klien tunggal untuk berkomunikasi ke beberapa cluster. Dibandingkan dengan memiliki satu instance yang hanya berkomunikasi dengan satu cluster, ini bisa menjadi fitur penghematan biaya untuk beberapa kasus penggunaan. CloudHsmProviderKelas ini adalah AWS CloudHSM implementasi dari kelas Provider Java Security. Setiap instance dari kelas ini mewakili koneksi ke seluruh AWS CloudHSM cluster Anda. Anda membuat instance kelas ini dan menambahkannya ke daftar penyedia Java Security sehingga Anda dapat berinteraksi dengannya menggunakan kelas JCE standar.

Contoh berikut membuat instance class ini dan menambahkannya ke daftar penyedia Java Security:

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

CloudHsmProviderkonfigurasi

CloudHsmProviderdapat dikonfigurasi dengan dua cara:

  1. Konfigurasikan dengan file (konfigurasi default)

  2. Konfigurasikan menggunakan kode

Konfigurasikan dengan file (Konfigurasi default)

Ketika Anda membuat instance CloudHsmProvider menggunakan konstruktor default, secara default akan mencari file konfigurasi di /opt/cloudhsm/etc/cloudhsm-jce.cfg jalur di Linux. File konfigurasi ini dapat dikonfigurasi menggunakan fileconfigure-jce.

Objek yang dibuat menggunakan konstruktor default akan menggunakan nama penyedia CloudHSM default. CloudHSM Nama penyedia berguna untuk berinteraksi dengan JCE untuk memberi tahu penyedia mana yang akan digunakan untuk berbagai operasi. Contoh untuk menggunakan nama penyedia CloudHSM untuk operasi Cipher adalah sebagai berikut:

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

Konfigurasikan menggunakan kode

Pada Client SDK versi 5.8.0, Anda juga dapat mengkonfigurasi CloudHsmProvider menggunakan kode Java. Cara untuk melakukan ini adalah dengan menggunakan objek CloudHsmProviderConfig kelas. Anda dapat membangun objek ini menggunakanCloudHsmProviderConfigBuilder.

CloudHsmProvidermemiliki konstruktor lain yang mengambil CloudHsmProviderConfig objek, seperti contoh berikut menunjukkan.

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

Dalam contoh ini, nama penyedia JCE adalahCloudHsmCluster1. Ini adalah nama yang kemudian dapat digunakan aplikasi untuk berinteraksi dengan JCE:

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

Atau, aplikasi juga dapat menggunakan objek penyedia yang dibuat di atas untuk memberi tahu JCE untuk menggunakan penyedia itu untuk operasi:

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

Jika pengidentifikasi unik tidak ditentukan dengan withClusterUniqueIdentifier metode, nama penyedia yang dibuat secara acak dibuat untuk Anda. Untuk mendapatkan pengenal yang dihasilkan secara acak ini, aplikasi dapat memanggil provider.getName() untuk mendapatkan pengenal.

Menghubungkan ke beberapa cluster

Seperti yang dinyatakan di atas, masing-masing CloudHsmProvider mewakili koneksi ke CloudHSM Cluster Anda. Jika Anda ingin berbicara dengan cluster lain dari aplikasi yang sama, Anda dapat membuat objek lain CloudHsmProvider dengan konfigurasi untuk cluster Anda yang lain dan Anda dapat berinteraksi dengan cluster lain ini baik menggunakan objek penyedia atau menggunakan nama penyedia, seperti yang ditunjukkan pada contoh berikut.

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

Setelah Anda mengonfigurasi kedua penyedia (kedua cluster) di atas, Anda dapat berinteraksi dengan mereka baik menggunakan objek penyedia atau menggunakan nama penyedia.

Memperluas contoh ini yang menunjukkan cara berbicaracluster1, Anda dapat menggunakan sampel berikut untuk operasi NoPadding AES/GCM/:

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

Dan dalam aplikasi yang sama untuk melakukan “AES” Pembuatan kunci pada cluster kedua menggunakan nama penyedia, Anda juga dapat menggunakan contoh berikut:

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