

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

# Menggunakan Client SDK 5 untuk bekerja dengan AWS CloudHSM
<a name="client-sdk5"></a>

 AWS CloudHSM mencakup dua versi SDK Klien utama: 
+ SDK Klien 5: Ini adalah SDK Klien terbaru dan default kami. Untuk informasi tentang manfaat dan keuntungan yang diberikannya, lihat[Manfaat SDK AWS CloudHSM Klien 5](client-sdk-5-benefits.md).
+ SDK Klien 3: Ini adalah SDK Klien kami yang lebih lama. Ini mencakup satu set lengkap komponen untuk platform dan aplikasi berbasis bahasa kompatibilitas dan alat manajemen.

Untuk petunjuk tentang migrasi dari SDK Klien 3 ke SDK Klien 5, lihat. [Migrasi dari SDK AWS CloudHSM Klien 3 ke SDK Klien 5](client-sdk-migration.md)

Topik ini menjelaskan SDK Klien 5. Untuk memeriksa versi SDK Klien yang Anda gunakan, lihat 

**Topics**
+ [Manfaat SDK AWS CloudHSM Klien 5](client-sdk-5-benefits.md)
+ [AWS CloudHSM Platform yang didukung SDK Klien 5](client-supported-platforms.md)
+ [Pustaka PKCS \$111 untuk SDK AWS CloudHSM Klien 5](pkcs11-library.md)
+ [Mesin AWS CloudHSM Dinamis OpenSSL untuk SDK Klien 5](openssl-library.md)
+ [Penyedia AWS CloudHSM OpenSSL untuk SDK Klien 5](openssl-provider-library.md)
+ [Penyedia penyimpanan kunci (KSP) untuk AWS CloudHSM Klien SDK 5](ksp-library.md)
+ [Penyedia JCE untuk AWS CloudHSM Klien SDK 5](java-library.md)

# Manfaat SDK AWS CloudHSM Klien 5
<a name="client-sdk-5-benefits"></a>

Dibandingkan dengan AWS CloudHSM Client SDK 3, Client SDK 5 lebih mudah dikelola, menawarkan konfigurasi yang unggul, dan peningkatan keandalan. Client SDK 5 juga memberikan beberapa keuntungan utama tambahan untuk Client SDK 3. 

**Dirancang untuk arsitektur tanpa server**  
Klien SDK 5 tidak memerlukan daemon klien, jadi Anda tidak perlu lagi mengelola layanan latar belakang. Ini membantu pengguna dalam beberapa cara penting:   
+ Menyederhanakan proses startup aplikasi. Yang perlu Anda lakukan untuk memulai dengan CloudHSM adalah mengkonfigurasi SDK sebelum menjalankan aplikasi Anda.
+ Anda tidak memerlukan proses yang terus berjalan, yang membuat integrasi dengan komponen tanpa server seperti Lambda dan Elastic Container Service (ECS) lebih mudah.

**Integrasi pihak ketiga yang lebih baik dan portabilitas yang lebih mudah**  
Klien SDK 5 mengikuti spesifikasi JCE dengan cermat dan memberikan portabilitas yang lebih mudah antara penyedia JCE yang berbeda dan integrasi pihak ketiga yang lebih baik

**Peningkatan pengalaman pengguna dan konfigurasi**  
Client SDK 5 meningkatkan keterbacaan pesan log dan memberikan pengecualian yang lebih jelas dan mekanisme penanganan kesalahan, yang semuanya membuat triaging swalayan jauh lebih mudah bagi pengguna. SDK 5 juga menawarkan berbagai konfigurasi, yang tercantum di halaman [Configure Tool](https://docs.aws.amazon.com/cloudhsm/latest/userguide/configure-sdk-5.html). 

**Dukungan platform yang lebih luas**  
Klien SDK 5 menawarkan lebih banyak dukungan untuk platform operasi modern. [Ini termasuk dukungan untuk teknologi ARM dan dukungan yang lebih besar untuk [JCE](https://docs.aws.amazon.com/cloudhsm/latest/userguide/java-library_5.html), [PKCS \$111](https://docs.aws.amazon.com/cloudhsm/latest/userguide/pkcs11-library.html), dan OpenSSL.](https://docs.aws.amazon.com/cloudhsm/latest/userguide/openssl-library.html) Untuk informasi selengkapnya, lihat [Platform yang didukung](client-supported-platforms.md). 

**IPv6 dukungan koneksi**  
Client SDK 5.14\$1 mendukung koneksi ke dual-stack menggunakan. HSMs IPv6 

**Fitur dan mekanisme tambahan**  
SDK Klien 5 mencakup fitur dan mekanisme tambahan yang tidak tersedia di SDK Klien 3, dan SDK Klien 5 akan terus menambahkan lebih banyak mekanisme di masa mendatang. 

# AWS CloudHSM Platform yang didukung SDK Klien 5
<a name="client-supported-platforms"></a>

Dukungan dasar berbeda untuk setiap versi SDK AWS CloudHSM Klien. Dukungan platform untuk komponen dalam SDK biasanya cocok dengan dukungan dasar, tetapi tidak selalu. Untuk menentukan dukungan platform untuk komponen tertentu, pertama-tama pastikan platform yang Anda inginkan muncul di bagian dasar SDK, lalu periksa pengecualian atau informasi terkait lainnya di bagian komponen.

AWS CloudHSM hanya mendukung sistem operasi 64-bit.

Dukungan platform berubah dari waktu ke waktu. Versi CloudHSM Client SDK sebelumnya mungkin tidak mendukung semua sistem operasi yang tercantum di sini. Gunakan catatan rilis untuk menentukan dukungan sistem operasi untuk versi CloudHSM Client SDK sebelumnya. Untuk informasi selengkapnya, lihat [Unduh untuk AWS CloudHSM Client SDK](client-history.md).

Untuk platform yang didukung untuk SDK Klien sebelumnya, lihat [AWS CloudHSM Platform yang didukung SDK Klien 3](sdk3-support.md)

Klien SDK 5 tidak memerlukan daemon klien.

**Topics**
+ [Dukungan Linux untuk Client SDK 5](sdk8-linux.md)
+ [Dukungan Windows untuk Klien SDK 5](sdk8-windows.md)
+ [Dukungan tanpa server untuk Klien SDK 5](sdk8-serverless.md)
+ [Kompatibilitas HSM untuk Klien SDK 5](sdk5-hsm-types.md)

# Dukungan Linux untuk AWS CloudHSM Client SDK 5
<a name="sdk8-linux"></a>

 AWS CloudHSM Client SDK 5 mendukung sistem operasi dan platform Linux berikut. 


| Platform yang didukung | X86\$164 Arsitektur | Arsitektur ARM | 
| --- | --- | --- | 
| Amazon Linux 2 | Ya | Ya | 
| Amazon Linux 2023 | Ya | Ya | 
| Perusahaan Topi Merah Linux 8 (8.3\$1) | Ya | Ya | 
| Perusahaan Topi Merah Linux 9 (9.2\$1) | Ya | Ya | 
| Perusahaan Topi Merah Linux 10 (10.0\$1) | Ya | Ya | 
| Ubuntu 22.04 LTS | Ya | Ya | 
| Ubuntu 24.04 LTS | Ya | Ya | 
+ SDK 5.16 adalah rilis terakhir yang memberikan dukungan platform Ubuntu 20.04 LTS. Untuk informasi lebih lanjut, lihat situs [web Ubuntu](https://ubuntu.com/blog/ubuntu-20-04-lts-end-of-life-standard-support-is-coming-to-an-end-heres-how-to-prepare).
+ SDK 5.12 adalah rilis terakhir yang memberikan dukungan platform CentOS 7 (7.8\$1). Untuk informasi lebih lanjut, lihat situs web [CentOS](https://blog.centos.org/2023/04/end-dates-are-coming-for-centos-stream-8-and-centos-linux-7/).
+ SDK 5.12 adalah rilis terakhir yang memberikan dukungan platform Red Hat Enterprise Linux 7 (7.8\$1). Untuk informasi lebih lanjut, lihat situs [web Red Hat](https://www.redhat.com/en/technologies/linux-platforms/enterprise-linux/rhel-7-end-of-maintenance).
+ SDK 5.4.2 adalah rilis terakhir yang memberikan dukungan platform CentOS 8. Untuk informasi lebih lanjut, lihat situs web [CentOS](https://www.centos.org/centos-linux-eol/).

# Dukungan Windows untuk AWS CloudHSM Klien SDK 5
<a name="sdk8-windows"></a>

AWS CloudHSM Client SDK 5 mendukung versi Windows Server berikut.
+ Microsoft Windows Server 2016
+ Microsoft Windows Server 2019
+ Server Microsoft Windows 2022
+ Microsoft Windows Server 2025

# Dukungan tanpa server untuk AWS CloudHSM Klien SDK 5
<a name="sdk8-serverless"></a>

 AWS CloudHSM Klien SDK 5 mendukung layanan tanpa AWS server berikut. 
+ AWS Lambda
+ Docker/ECS

# Kompatibilitas HSM untuk AWS CloudHSM Klien SDK 5
<a name="sdk5-hsm-types"></a>

Tabel berikut menjelaskan kompatibilitas AWS CloudHSM Client SDK 5 untuk HSMs.


| hsm1.sedang | hsm2m.sedang | 
| --- | --- | 
| Kompatibel dengan Client SDK versi 5.0.0 dan yang lebih baru. |  Kompatibel dengan Client SDK versi 5.9.0 dan yang lebih baru.  | 

# Pustaka PKCS \$111 untuk SDK AWS CloudHSM Klien 5
<a name="pkcs11-library"></a>

PKCS \$111 adalah standar untuk melakukan operasi kriptografi pada modul keamanan perangkat keras (). HSMs AWS CloudHSM menawarkan implementasi pustaka PKCS \$111 yang sesuai dengan PKCS \$111 versi 2.40.

Untuk informasi tentang bootstrap, lihat. [Menghubungkan ke cluster](cluster-connect.md) Untuk pemecahan masalah, lihat. [Masalah yang diketahui untuk pustaka PKCS \$111 untuk AWS CloudHSMMasalah yang diketahui untuk pustaka PKCS \$111](ki-pkcs11-sdk.md)

Untuk informasi tentang penggunaan SDK Klien 3, lihat[Menggunakan versi SDK sebelumnya untuk bekerja dengan AWS CloudHSM](choose-client-sdk.md).

**Topics**
+ [Instal pustaka PKCS \$111](pkcs11-library-install.md)
+ [Otentikasi ke pustaka PKCS \$111](pkcs11-pin.md)
+ [Tipe kunci](pkcs11-key-types.md)
+ [Mekanisme](pkcs11-mechanisms.md)
+ [Operasi API](pkcs11-apis.md)
+ [Atribut kunci](pkcs11-attributes.md)
+ [Sampel Kode](pkcs11-samples.md)
+ [Konfigurasi lanjutan](pkcs11-library-configs.md)
+ [Penyimpanan sertifikat](pkcs11-certificate-storage.md)

# Instal pustaka PKCS \$111 untuk AWS CloudHSM Client SDK 5
<a name="pkcs11-library-install"></a>

Topik ini memberikan petunjuk untuk menginstal pustaka PKCS \$111 versi terbaru untuk seri versi AWS CloudHSM Client SDK 5. [Untuk informasi selengkapnya tentang pustaka SDK Klien atau PKCS \$111, lihat [Menggunakan pustaka SDK Klien](use-hsm.md) dan PKCS \$111.](pkcs11-library.md)

Dengan klien SDK 5, Anda tidak diharuskan untuk menginstal atau menjalankan daemon klien. 

Untuk menjalankan satu klaster HSM dengan SDK Klien 5, Anda harus terlebih dahulu mengelola pengaturan daya tahan kunci klien dengan menetapkan `disable_key_availability_check` ke `True`. Untuk informasi selengkapnya, lihat [Sinkronisasi Kunci](manage-key-sync.md) dan [Alat Konfigurasi SDK Klien 5](configure-sdk-5.md). 

Untuk informasi selengkapnya tentang pustaka PKCS \$111 di Client SDK 5, lihat pustaka [PKCS](pkcs11-library.md) \$111.

**catatan**  
Untuk menjalankan satu klaster HSM dengan SDK Klien 5, Anda harus terlebih dahulu mengelola pengaturan daya tahan kunci klien dengan menetapkan `disable_key_availability_check` ke `True`. Untuk informasi selengkapnya, lihat [Sinkronisasi Kunci](manage-key-sync.md) dan [Alat Konfigurasi SDK Klien 5](configure-sdk-5.md).

**Untuk menginstal dan mengkonfigurasi pustaka PKCS \$111**

1. Gunakan perintah berikut untuk mengunduh dan menginstal pustaka PKCS \$111.

------
#### [ Amazon Linux 2023 ]

   Instal pustaka PKCS \$111 untuk Amazon Linux 2023 pada arsitektur X86\$164:

   ```
   $ wget https://s3.amazonaws.com/cloudhsmv2-software/CloudHsmClient/Amzn2023/cloudhsm-pkcs11-latest.amzn2023.x86_64.rpm
   ```

   ```
   $ sudo yum install ./cloudhsm-pkcs11-latest.amzn2023.x86_64.rpm
   ```

   Instal pustaka PKCS \$111 untuk Amazon Linux 2023 pada arsitektur: ARM64 

   ```
   $ wget https://s3.amazonaws.com/cloudhsmv2-software/CloudHsmClient/Amzn2023/cloudhsm-pkcs11-latest.amzn2023.aarch64.rpm
   ```

   ```
   $ sudo yum install ./cloudhsm-pkcs11-latest.amzn2023.aarch64.rpm
   ```

------
#### [ Amazon Linux 2 ]

   Instal pustaka PKCS \$111 untuk Amazon Linux 2 pada arsitektur X86\$164:

   ```
   $ wget https://s3.amazonaws.com/cloudhsmv2-software/CloudHsmClient/EL7/cloudhsm-pkcs11-latest.el7.x86_64.rpm
   ```

   ```
   $ sudo yum install ./cloudhsm-pkcs11-latest.el7.x86_64.rpm
   ```

   Instal pustaka PKCS \$111 untuk Amazon Linux 2 pada ARM64 arsitektur:

   ```
   $ wget https://s3.amazonaws.com/cloudhsmv2-software/CloudHsmClient/EL7/cloudhsm-pkcs11-latest.el7.aarch64.rpm
   ```

   ```
   $ sudo yum install ./cloudhsm-pkcs11-latest.el7.aarch64.rpm
   ```

------
#### [ RHEL 10 (10.0\$1) ]

   Instal pustaka PKCS \$111 untuk RHEL 10 pada arsitektur X86\$164:

   ```
   $ wget https://s3.amazonaws.com/cloudhsmv2-software/CloudHsmClient/EL10/cloudhsm-pkcs11-latest.el10.x86_64.rpm
   ```

   ```
   $ sudo yum install ./cloudhsm-pkcs11-latest.el10.x86_64.rpm
   ```

   Instal pustaka PKCS \$111 untuk RHEL 10 pada arsitektur: ARM64 

   ```
   $ wget https://s3.amazonaws.com/cloudhsmv2-software/CloudHsmClient/EL10/cloudhsm-pkcs11-latest.el10.aarch64.rpm
   ```

   ```
   $ sudo yum install ./cloudhsm-pkcs11-latest.el10.aarch64.rpm
   ```

------
#### [ RHEL 9 (9.2\$1) ]

   Instal pustaka PKCS \$111 untuk RHEL 9 pada arsitektur X86\$164:

   ```
   $ wget https://s3.amazonaws.com/cloudhsmv2-software/CloudHsmClient/EL9/cloudhsm-pkcs11-latest.el9.x86_64.rpm
   ```

   ```
   $ sudo yum install ./cloudhsm-pkcs11-latest.el9.x86_64.rpm
   ```

   Instal pustaka PKCS \$111 untuk RHEL 9 pada arsitektur: ARM64 

   ```
   $ wget https://s3.amazonaws.com/cloudhsmv2-software/CloudHsmClient/EL9/cloudhsm-pkcs11-latest.el9.aarch64.rpm
   ```

   ```
   $ sudo yum install ./cloudhsm-pkcs11-latest.el9.aarch64.rpm
   ```

------
#### [ RHEL 8 (8.3\$1) ]

   Instal pustaka PKCS \$111 untuk RHEL 8 pada arsitektur X86\$164:

   ```
   $ wget https://s3.amazonaws.com/cloudhsmv2-software/CloudHsmClient/EL8/cloudhsm-pkcs11-latest.el8.x86_64.rpm
   ```

   ```
   $ sudo yum install ./cloudhsm-pkcs11-latest.el8.x86_64.rpm
   ```

   Instal pustaka PKCS \$111 untuk RHEL 8 pada arsitektur: ARM64 

   ```
   $ wget https://s3.amazonaws.com/cloudhsmv2-software/CloudHsmClient/EL8/cloudhsm-pkcs11-latest.el8.aarch64.rpm
   ```

   ```
   $ sudo yum install ./cloudhsm-pkcs11-latest.el8.aarch64.rpm
   ```

------
#### [ Ubuntu 24.04 LTS ]

   Instal pustaka PKCS \$111 untuk Ubuntu 24.04 LTS pada arsitektur X86\$164:

   ```
   $ wget https://s3.amazonaws.com/cloudhsmv2-software/CloudHsmClient/Noble/cloudhsm-pkcs11_latest_u24.04_amd64.deb
   ```

   ```
   $ sudo apt install ./cloudhsm-pkcs11_latest_u24.04_amd64.deb
   ```

   Instal pustaka PKCS \$111 untuk Ubuntu 24.04 LTS pada arsitektur: ARM64 

   ```
   $ wget https://s3.amazonaws.com/cloudhsmv2-software/CloudHsmClient/Noble/cloudhsm-pkcs11_latest_u24.04_arm64.deb
   ```

   ```
   $ sudo apt install ./cloudhsm-pkcs11_latest_u24.04_arm64.deb
   ```

------
#### [ Ubuntu 22.04 LTS ]

   Instal pustaka PKCS \$111 untuk Ubuntu 22.04 LTS pada arsitektur X86\$164:

   ```
   $ wget https://s3.amazonaws.com/cloudhsmv2-software/CloudHsmClient/Jammy/cloudhsm-pkcs11_latest_u22.04_amd64.deb
   ```

   ```
   $ sudo apt install ./cloudhsm-pkcs11_latest_u22.04_amd64.deb
   ```

   Instal pustaka PKCS \$111 untuk Ubuntu 22.04 LTS pada arsitektur: ARM64 

   ```
   $ wget https://s3.amazonaws.com/cloudhsmv2-software/CloudHsmClient/Jammy/cloudhsm-pkcs11_latest_u22.04_arm64.deb
   ```

   ```
   $ sudo apt install ./cloudhsm-pkcs11_latest_u22.04_arm64.deb
   ```

------
#### [ Windows Server ]

   Instal pustaka PKCS \$111 untuk Windows Server pada arsitektur X86\$164:

   1. Unduh [pustaka PKCS \$111 untuk SDK Klien 5](https://s3.amazonaws.com/cloudhsmv2-software/CloudHsmClient/Windows/AWSCloudHSMPKCS11-latest.msi).

   1. Jalankan penginstal pustaka PKCS \$111 (**AWSCloudHSMPKCS11-latest.msi) dengan hak** administratif Windows.

------

1. Gunakan alat konfigurasi untuk menentukan lokasi sertifikat penerbitan. Untuk petunjuk, lihat [Tentukan lokasi sertifikat penerbitan](cluster-connect.md#specify-cert-location).

1. Untuk terhubung ke cluster Anda, lihat[Bootstrap Klien SDK](cluster-connect.md#connect-how-to).

1. Anda dapat menemukan berkas pustaka PKCS \$111 di lokasi berikut:
   + Linux biner, skrip konfigurasi, dan berkas log:

     ```
     /opt/cloudhsm
     ```

     Biner Windows:

     ```
     C:\Program Files\Amazon\CloudHSM
     ```

     Skrip konfigurasi Windows dan berkas log:

     ```
     C:\ProgramData\Amazon\CloudHSM
     ```

# Mengautentikasi ke pustaka PKCS \$111 untuk AWS CloudHSM SDK Klien 5
<a name="pkcs11-pin"></a>

Saat Anda menggunakan pustaka PKCS \$111, aplikasi Anda berjalan sebagai [pengguna kripto (CU)](manage-hsm-users.md) tertentu di dalam Anda HSMs . AWS CloudHSM Aplikasi Anda dapat melihat dan mengelola hanya kunci yang CU miliki dan bagikan. Anda dapat menggunakan CU yang ada di HSMs atau membuat CU baru untuk aplikasi Anda. Untuk informasi tentang pengelolaan CUs, lihat Mengelola pengguna HSM [dengan CloudHSM CLI dan Mengelola pengguna HSM dengan CloudHSM](manage-hsm-users-chsm-cli.md) [Management](manage-hsm-users-cmu.md) Utility (CMU)

Untuk menentukan CU ke pustaka PKCS \$111, gunakan parameter pin dari PKCS \$111 [Fungsi C\$1Login](http://docs.oasis-open.org/pkcs11/pkcs11-base/v2.40/os/pkcs11-base-v2.40-os.html#_Toc385057915). Untuk AWS CloudHSM, parameter pin memiliki format berikut:

```
<CU_user_name>:<password>
```

Sebagai contoh, perintah berikut menetapkan pin pustaka PKCS \$111 ke CU dengan nama pengguna `CryptoUser` dan kata sandi `CUPassword123!`.

```
CryptoUser:CUPassword123!
```

# Tipe kunci yang didukung untuk pustaka PKCS \$111 untuk SDK AWS CloudHSM Klien 5
<a name="pkcs11-key-types"></a>

Pustaka PKCS \$111 untuk AWS CloudHSM Client SDK 5mendukung tipe kunci berikut.


****  

| Tipe Kunci | Deskripsi | 
| --- | --- | 
| AES | Hasilkan kunci AES 128, 192, dan 256-bit.  | 
| Tiga DES (3DES, DESede) | Hasilkan kunci Triple DES 192-bit. Lihat catatan [1](#key-types-1) di bawah untuk perubahan yang akan datang. | 
| EC | Hasilkan kunci dengan kurva secp224r1 (P-224), secp256r1 (P-256), secp256k1 (Blockchain), secp384r1 (P-384), dan secp521r1 (P-521). | 
| GENERIC\$1SECRET | Hasilkan 1 hingga 800 byte rahasia generik. | 
| RSA | Hasilkan 2048-bit sampai 4096-bit kunci RSA, dengan penambahan 256 bit. | 

[1] Sesuai dengan panduan NIST, ini tidak diizinkan untuk cluster dalam mode FIPS setelah 2023. Untuk cluster dalam mode non-FIPS, masih diperbolehkan setelah 2023. Lihat [Kepatuhan FIPS 140: Penutupan Mekanisme 2024](compliance-dep-notif.md#compliance-dep-notif-1) untuk detail.

# Mekanisme yang didukung untuk pustaka PKCS \$111 untuk SDK AWS CloudHSM Klien 5
<a name="pkcs11-mechanisms"></a>

Pustaka PKCS \$111 sesuai dengan spesifikasi PKCS \$111 versi 2.40. Untuk memanggil fitur kriptografi menggunakan PKCS \$111, panggil fungsi dengan mekanisme tertentu. Bagian berikut merangkum kombinasi fungsi dan mekanisme yang didukung oleh AWS CloudHSM Client SDK 5. 

Pustaka PKCS \$111 mendukung algoritme berikut ini:
+ **Enkripsi dan dekripsi** — AES-CBC, AES-CTR, AES-ECB, AES-GCM, -CBC, -ECB, RSA-OAEP, dan RSA-PKCS DES3 DES3
+ **Tanda tangani dan verifikasi**- RSA, HMAC, dan ECDSA; dengan dan tanpa hashing
+ **Hash/digest** — SHA1,,, SHA224, dan SHA256 SHA384 SHA512
+ **Bungkus kunci**— Bungkus Kunci AES,[1](#mech1)AES-GCM, RSA-AES, dan RSA-OAEP
+ **Derivasi kunci** — SP800 -108 Counter KDF dan ECDH dengan KDF (Algoritma KDF yang didukung adalah X9.63 dengan,,,,) SHA1 SHA224 SHA256 SHA384 SHA512

**Topics**
+ [Menghasilkan fungsi key dan key pair](#pkcs11-mech-function-genkey)
+ [Tanda tangani dan verifikasi fungsi](#pkcs11-mech-function-signverify)
+ [Tanda tangani pemulihan dan verifikasi fungsi pemulihan](#pkcs11-mech-function-sr-vr)
+ [Fungsi mencerna](#pkcs11-mech-function-digest)
+ [Enkripsi dan dekripsi fungsi](#pkcs11-mech-function-enc-dec)
+ [Turunkan fungsi kunci](#pkcs11-mech-function-derive-key)
+ [Fungsi Bungkus dan Buka Bungkus](#pkcs11-mech-function-wrap-unwrap)
+ [Ukuran data maksimum untuk setiap mekanisme](#pkcs11-mech-max)
+ [Anotasi mekanisme](#pkcs11-mech-annotations)

## Menghasilkan fungsi key dan key pair
<a name="pkcs11-mech-function-genkey"></a>

Pustaka AWS CloudHSM perangkat lunak untuk pustaka PKCS \$111 memungkinkan Anda menggunakan mekanisme berikut untuk fungsi Generate Key dan Key Pair.
+ `CKM_RSA_PKCS_KEY_PAIR_GEN`
+ `CKM_RSA_X9_31_KEY_PAIR_GEN`Mekanisme ini secara fungsional identik dengan `CKM_RSA_PKCS_KEY_PAIR_GEN` mekanisme, tetapi menawarkan jaminan yang lebih kuat untuk `p` dan `q` generasi.
+ `CKM_EC_KEY_PAIR_GEN`
+ `CKM_GENERIC_SECRET_KEY_GEN`
+ `CKM_AES_KEY_GEN`
+ `CKM_DES3_KEY_GEN`— perubahan yang akan datang tercantum dalam catatan kaki[5](#mech5).

## Tanda tangani dan verifikasi fungsi
<a name="pkcs11-mech-function-signverify"></a>

Pustaka AWS CloudHSM perangkat lunak untuk pustaka PKCS \$111 memungkinkan Anda menggunakan mekanisme berikut untuk fungsi Masuk dan Verifikasi. Dengan Client SDK 5, data di-hash secara lokal dalam perangkat lunak. Ini berarti tidak ada batasan ukuran data yang dapat di-hash oleh SDK.

Dengan Client SDK 5 RSA dan ECDSA hashing dilakukan secara lokal sehingga tidak ada batasan data. Dengan HMAC, ada batas data. Lihat catatan kaki [2](#mech2) untuk info lebih lanjut.

**RSA**
+ `CKM_RSA_X_509`
+ `CKM_RSA_PKCS`— operasi satu bagian saja.
+ `CKM_RSA_PKCS_PSS`— operasi satu bagian saja.
+ `CKM_SHA1_RSA_PKCS`
+ `CKM_SHA224_RSA_PKCS`
+ `CKM_SHA256_RSA_PKCS`
+ `CKM_SHA384_RSA_PKCS`
+ `CKM_SHA512_RSA_PKCS`
+ `CKM_SHA512_RSA_PKCS`
+ `CKM_SHA1_RSA_PKCS_PSS`
+ `CKM_SHA224_RSA_PKCS_PSS`
+ `CKM_SHA256_RSA_PKCS_PSS`
+ `CKM_SHA384_RSA_PKCS_PSS`
+ `CKM_SHA512_RSA_PKCS_PSS`

**ECDSA**
+ `CKM_ECDSA`— operasi satu bagian saja.
+ `CKM_ECDSA_SHA1`
+ `CKM_ECDSA_SHA224`
+ `CKM_ECDSA_SHA256`
+ `CKM_ECDSA_SHA384`
+ `CKM_ECDSA_SHA512`

**HMAC**
+ `CKM_SHA_1_HMAC`[2](#mech2)
+ `CKM_SHA224_HMAC`[2](#mech2)
+ `CKM_SHA256_HMAC`[2](#mech2)
+ `CKM_SHA384_HMAC`[2](#mech2)
+ `CKM_SHA512_HMAC`[2](#mech2)

**CMAC**
+ `CKM_AES_CMAC`

## Tanda tangani pemulihan dan verifikasi fungsi pemulihan
<a name="pkcs11-mech-function-sr-vr"></a>

Client SDK 5 tidak mendukung fungsi Sign Recover dan Verify Recover.

## Fungsi mencerna
<a name="pkcs11-mech-function-digest"></a>

Pustaka AWS CloudHSM perangkat lunak untuk pustaka PKCS \$111 memungkinkan Anda menggunakan mekanisme berikut untuk fungsi Digest. Dengan Client SDK 5, data di-hash secara lokal dalam perangkat lunak. Ini berarti tidak ada batasan ukuran data yang dapat di-hash oleh SDK.
+ `CKM_SHA_1`
+ `CKM_SHA224`
+ `CKM_SHA256`
+ `CKM_SHA384`
+ `CKM_SHA512`

## Enkripsi dan dekripsi fungsi
<a name="pkcs11-mech-function-enc-dec"></a>

Pustaka AWS CloudHSM perangkat lunak untuk pustaka PKCS \$111 memungkinkan Anda menggunakan mekanisme berikut untuk fungsi Enkripsi dan Dekripsi.
+ `CKM_RSA_X_509`
+ `CKM_RSA_PKCS`— operasi satu bagian saja. Perubahan yang akan datang tercantum dalam catatan kaki[5](#mech5).
+ `CKM_RSA_PKCS_OAEP`— operasi satu bagian saja.
+ `CKM_AES_ECB`
+ `CKM_AES_CTR`
+ `CKM_AES_CBC`
+ `CKM_AES_CBC_PAD`
+ `CKM_DES3_CBC`— perubahan yang akan datang tercantum dalam catatan kaki[5](#mech5).
+ `CKM_DES3_ECB`— perubahan yang akan datang tercantum dalam catatan kaki[5](#mech5).
+ `CKM_DES3_CBC_PAD`— perubahan yang akan datang tercantum dalam catatan kaki[5](#mech5).
+  `CKM_AES_GCM` [1](#mech1), [2](#mech2)
+ `CKM_CLOUDHSM_AES_GCM`[3](#mech3)

## Turunkan fungsi kunci
<a name="pkcs11-mech-function-derive-key"></a>

Pustaka AWS CloudHSM perangkat lunak untuk pustaka PKCS \$111 mendukung mekanisme derivasi kunci berikut:
+ `CKM_SP800_108_COUNTER_KDF`
+ `CKM_ECDH1_DERIVE`- Mendukung derivasi kunci ECDH dengan jenis KDF yang ditentukan vendor berikut: [6](#kdf6)
  + `CKD_CLOUDHSM_X963_SHA1_KDF`- X9.63 KDF dengan SHA1 [7](#kdf7)
  + `CKD_CLOUDHSM_X963_SHA224_KDF`- X9.63 KDF dengan SHA224 [7](#kdf7)
  + `CKD_CLOUDHSM_X963_SHA256_KDF`- X9.63 KDF dengan SHA256 [7](#kdf7)
  + `CKD_CLOUDHSM_X963_SHA384_KDF`- X9.63 KDF dengan SHA384 [7](#kdf7)
  + `CKD_CLOUDHSM_X963_SHA512_KDF`- X9.63 KDF dengan SHA512 [7](#kdf7)

## Fungsi Bungkus dan Buka Bungkus
<a name="pkcs11-mech-function-wrap-unwrap"></a>

Pustaka AWS CloudHSM perangkat lunak untuk pustaka PKCS \$111 memungkinkan Anda menggunakan mekanisme berikut untuk fungsi Wrap dan Unwrap.

Untuk informasi tambahan mengenai pembungkus kunci AES, lihat Pembungkus Kunci [AES.](manage-aes-key-wrapping.md) 
+ `CKM_RSA_PKCS`— operasi satu bagian saja. Perubahan yang akan datang tercantum dalam catatan kaki[5](#mech5).
+ `CKM_RSA_PKCS_OAEP`[4](#mech4)
+ `CKM_AES_GCM`[1](#mech1), [3](#mech3)
+ `CKM_CLOUDHSM_AES_GCM`[3](#mech3)
+ `CKM_RSA_AES_KEY_WRAP`
+ `CKM_CLOUDHSM_AES_KEY_WRAP_NO_PAD`[3](#mech3)
+ `CKM_CLOUDHSM_AES_KEY_WRAP_PKCS5_PAD`[3](#mech3)
+ `CKM_CLOUDHSM_AES_KEY_WRAP_ZERO_PAD`[3](#mech3)

## Ukuran data maksimum untuk setiap mekanisme
<a name="pkcs11-mech-max"></a>

Tabel berikut mencantumkan ukuran data maksimum yang ditetapkan untuk setiap mekanisme:


**Ukuran set data maksimum**  
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/cloudhsm/latest/userguide/pkcs11-mechanisms.html)

## Anotasi mekanisme
<a name="pkcs11-mech-annotations"></a>
+ [1] Saat melakukan enkripsi AES-GCM, HSM tidak menerima data vektor inisialisasi (IV) dari aplikasi. Anda harus menggunakan IV yang dihasilkannya. IV 12-byte yang disediakan oleh HSM ditulis ke dalam referensi memori yang ditunjukkan oleh elemen pIV dari parameter `CK_GCM_PARAMS` struktur yang Anda suplai. Untuk mencegah kebingungan pengguna, PKCS \$111 SDK di versi 1.1.1 dan sebelumnya memastikan bahwa pIV menunjuk ke penyangga yang dinolkan ketika enkripsi AES-GCM diinisialisasi.
+ [2] Saat mengoperasikan data dengan menggunakan salah satu mekanisme berikut, jika buffer data melebihi ukuran data maksimum, operasi menghasilkan kesalahan. Untuk mekanisme ini, semua pemrosesan data harus terjadi di dalam HSM. Untuk informasi tentang set ukuran data maksimum untuk setiap mekanisme, lihat[Ukuran data maksimum untuk setiap mekanisme](#pkcs11-mech-max).
+ [3] Mekanisme yang ditentukan vendor. Untuk menggunakan mekanisme yang ditetapkan vendor CloudHSM, aplikasi PKCS \$111 harus menyertakan `/opt/cloudhsm/include/pkcs11/pkcs11t.h` selama kompilasi.

  `CKM_CLOUDHSM_AES_GCM`: Mekanisme kepemilikan ini adalah alternatif pemrograman yang lebih aman untuk `CKM_AES_GCM` standar. Ini menambahkan IV yang dihasilkan oleh HSM untuk ciphertext, bukan menuliskannya kembali ke dalam struktur `CK_GCM_PARAMS` yang disediakan selama inisialisasi cipher. Anda dapat menggunakan mekanisme ini dengan fungsi `C_Encrypt`, `C_WrapKey`, `C_Decrypt`, dan `C_UnwrapKey`. Bila menggunakan mekanisme ini, variabel pIV di struk `CK_GCM_PARAMS` harus diatur ke `NULL`. Bila menggunakan mekanisme ini dengan `C_Decrypt` dan `C_UnwrapKey`, IV diharapkan akan ditambahkan ke ciphertext yang sedang dibuka.

  `CKM_CLOUDHSM_AES_KEY_WRAP_PKCS5_PAD`: Bungkus Kunci AES dengan Padding PKCS \$15.

  `CKM_CLOUDHSM_AES_KEY_WRAP_ZERO_PAD`: Bungkus Kunci AES dengan Padding Nol.
+ [4] Berikut ini `CK_MECHANISM_TYPE` dan `CK_RSA_PKCS_MGF_TYPE` didukung `CK_RSA_PKCS_OAEP_PARAMS` untuk`CKM_RSA_PKCS_OAEP`:
  + `CKM_SHA_1` menggunakan `CKG_MGF1_SHA1`
  + `CKM_SHA224` menggunakan `CKG_MGF1_SHA224`
  + `CKM_SHA256` menggunakan `CKG_MGF1_SHA256`
  + `CKM_SHA384` menggunakan `CKM_MGF1_SHA384`
  + `CKM_SHA512` menggunakan `CKM_MGF1_SHA512`
+ [5] Sesuai dengan panduan NIST, ini tidak diizinkan untuk cluster dalam mode FIPS setelah 2023. Untuk cluster dalam mode non-FIPS, masih diperbolehkan setelah 2023. Lihat [Kepatuhan FIPS 140: Penutupan Mekanisme 2024](compliance-dep-notif.md#compliance-dep-notif-1) untuk detail.
+ [6] Jenis yang ditentukan vendor. Untuk menggunakan tipe yang ditentukan vendor CloudHSM, aplikasi PKCS \$111 harus menyertakan selama kompilasi. `cloudhsm_pkcs11_vendor_defs.h` Ini ditemukan di `/opt/cloudhsm/include/pkcs11/cloudhsm_pkcs11_vendor_defs.h` platform berbasis Linux dan `C:\Program Files\Amazon\CloudHSM\include\pkcs11\cloudhsm_pkcs11_vendor_defs.h` untuk platform berbasis Windows
+ [7] Fungsi derivasi kunci (KDFs) ditentukan dalam [Publikasi Khusus NIST 800-56A](https://nvlpubs.nist.gov/nistpubs/SpecialPublications/NIST.SP.800-56Ar3.pdf) Revisi 3.

# Operasi API yang didukung untuk pustaka PKCS \$111 untuk SDK AWS CloudHSM Klien 5
<a name="pkcs11-apis"></a>

Pustaka PKCS \$111 mendukung operasi API PKCS \$111 berikut untuk AWS CloudHSM Client SDK 5.
+ `C_CloseAllSessions`
+ `C_CloseSession`
+ `C_CreateObject`
+ `C_Decrypt`
+ `C_DecryptFinal`
+ `C_DecryptInit`
+ `C_DecryptUpdate`
+ `C_DeriveKey`
+ `C_DestroyObject`
+ `C_Digest`
+ `C_DigestFinal`
+ `C_DigestInit`
+ `C_DigestUpdate`
+ `C_Encrypt`
+ `C_EncryptFinal`
+ `C_EncryptInit`
+ `C_EncryptUpdate`
+ `C_Finalize`
+ `C_FindObjects`
+ `C_FindObjectsFinal`
+ `C_FindObjectsInit`
+ `C_GenerateKey`
+ `C_GenerateKeyPair`
+ `C_GenerateRandom`
+ `C_GetAttributeValue`
+ `C_GetFunctionList`
+ `C_GetInfo`
+ `C_GetMechanismInfo`
+ `C_GetMechanismList`
+ `C_GetSessionInfo`
+ `C_GetSlotInfo`
+ `C_GetSlotList`
+ `C_GetTokenInfo`
+ `C_Initialize`
+ `C_Login`
+ `C_Logout`
+ `C_OpenSession`
+ `C_Sign`
+ `C_SignFinal`
+ `C_SignInit`
+ `C_SignUpdate`
+ `C_UnWrapKey`
+ `C_Verify`
+ `C_VerifyFinal`
+ `C_VerifyInit`
+ `C_VerifyUpdate`
+ `C_WrapKey`

# Atribut kunci di pustaka PKCS \$111 untuk SDK AWS CloudHSM Klien 5
<a name="pkcs11-attributes"></a>

Objek AWS CloudHSM kunci dapat berupa kunci publik, pribadi, atau rahasia. Tindakan diizinkan pada objek kunci ditentukan melalui atribut. Atribut didefinisikan ketika objek kunci dibuat. Saat Anda menggunakan pustaka PKCS \$111 untuk AWS CloudHSM, kami menetapkan nilai default seperti yang ditentukan oleh standar PKCS \$111.

AWS CloudHSM tidak mendukung semua atribut yang tercantum dalam spesifikasi PKCS \$111. Kami patuh dengan spesifikasi untuk semua atribut yang kami dukung. Atribut ini tercantum dalam tabel masing-masing.

Fungsi kriptografi seperti `C_CreateObject`, `C_GenerateKey`, `C_GenerateKeyPair`, `C_UnwrapKey`, dan `C_DeriveKey` yang membuat, memodifikasi, atau menyalin objek mengambil templat atribut sebagai salah satu parameternya. Untuk informasi selengkapnya tentang meneruskan templat atribut selama pembuatan objek, lihat [Menghasilkan kunci melalui pustaka PKCS \$111 untuk contoh](https://github.com/aws-samples/aws-cloudhsm-pkcs11-examples/tree/master/src/generate).

Topik berikut memberikan informasi lebih lanjut tentang atribut AWS CloudHSM kunci.

**Topics**
+ [Atribut tabel](pkcs11-attributes-interpreting.md)
+ [Memodifikasi atribut](modify-attr.md)
+ [Menafsirkan kode kesalahan](attr-errors.md)

# Tabel atribut pustaka PKCS \$111 untuk SDK AWS CloudHSM Klien 5
<a name="pkcs11-attributes-interpreting"></a>

Tabel pustaka PKCS \$111 untuk AWS CloudHSM berisi daftar atribut yang berbeda menurut jenis kunci. Ini menunjukkan apakah atribut yang diberikan didukung untuk jenis kunci tertentu saat menggunakan fungsi kriptografi tertentu dengan AWS CloudHSM.

**Legenda:**
+ ✔ menunjukkan bahwa CloudHSM mendukung atribut untuk jenis kunci tertentu.
+ ✖ menunjukkan bahwa CloudHSM tidak mendukung atribut untuk jenis kunci tertentu.
+ R menunjukkan bahwa nilai atribut diatur ke hanya-baca untuk jenis kunci tertentu.
+ S menunjukkan bahwa atribut tidak dapat dibaca oleh `GetAttributeValue` karena sensitif.
+ Sel kosong di kolom Nilai Default menunjukkan bahwa tidak ada nilai default tertentu yang ditetapkan untuk atribut.

## GenerateKeyPair
<a name="generatekeypair"></a>

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/cloudhsm/latest/userguide/pkcs11-attributes-interpreting.html)

## GenerateKey
<a name="generatekey"></a>

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/cloudhsm/latest/userguide/pkcs11-attributes-interpreting.html)

## CreateObject
<a name="createobject"></a>

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/cloudhsm/latest/userguide/pkcs11-attributes-interpreting.html)

## UnwrapKey
<a name="unwrapkey"></a>

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/cloudhsm/latest/userguide/pkcs11-attributes-interpreting.html)

## DeriveKey
<a name="derivekey"></a>

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/cloudhsm/latest/userguide/pkcs11-attributes-interpreting.html)

## GetAttributeValue
<a name="getattributevalue"></a>

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/cloudhsm/latest/userguide/pkcs11-attributes-interpreting.html)

**Anotasi atribut**
+ [1] Atribut ini sebagian didukung oleh firmware dan harus secara eksplisit diatur hanya ke nilai default.
+ [2] Atribut wajib.

# Memodifikasi atribut pustaka PKCS \$111 untuk AWS CloudHSM SDK Klien 5
<a name="modify-attr"></a>

Beberapa atribut pustaka PKCS \$111 untuk AWS CloudHSM objek dapat dimodifikasi setelah objek dibuat, sedangkan beberapa tidak bisa. Untuk memodifikasi atribut, gunakan perintah [key set-attribute](cloudhsm_cli-key-set-attribute.md) dari CloudHSM CLI. Anda juga dapat memperoleh daftar atribut dengan menggunakan perintah [daftar kunci](cloudhsm_cli-key-list.md) dari CloudHSM CLI.

Daftar berikut menampilkan atribut yang diizinkan untuk modifikasi setelah pembuatan objek:
+ `CKA_LABEL`
+ `CKA_TOKEN`
**catatan**  
Modifikasi hanya diperbolehkan untuk mengubah kunci sesi menjadi kunci token. Gunakan perintah [key set-attribute](cloudhsm_cli-key-set-attribute.md) dari CloudHSM CLI untuk mengubah nilai atribut.
+ `CKA_ENCRYPT`
+ `CKA_DECRYPT`
+ `CKA_SIGN`
+ `CKA_VERIFY`
+ `CKA_WRAP`
+ `CKA_UNWRAP`
+ `CKA_LABEL`
+ `CKA_SENSITIVE`
+ `CKA_DERIVE`
**catatan**  
Atribut ini mendukung derivasi kunci. Kunci harus `False` untuk semua kunci publik dan tidak dapat diatur ke `True`. Untuk kunci rahasia dan kunci privat EC, kunci dapat diatur ke `True` atau `False`.
+ `CKA_TRUSTED`
**catatan**  
Atribut ini dapat diatur ke `True` atau `False` oleh Petugas Kripto (CO) saja.
+ `CKA_WRAP_WITH_TRUSTED`
**catatan**  
Terapkan atribut ini ke kunci data yang dapat diekspor untuk menentukan bahwa Anda hanya dapat membungkus kunci ini dengan kunci yang ditandai sebagai `CKA_TRUSTED`. Setelah Anda mengatur `CKA_WRAP_WITH_TRUSTED` menjadi true (benar), atribut menjadi hanya-baca dan Anda tidak dapat mengubah atau menghapus atribut.

# Menafsirkan kode kesalahan pustaka PKCS \$111 untuk AWS CloudHSM SDK Klien 5
<a name="attr-errors"></a>

Menentukan dalam template atribut pustaka PKCS \$111 yang tidak didukung oleh kunci tertentu menghasilkan kesalahan. Tabel berikut berisi kode galat yang dihasilkan ketika Anda melanggar spesifikasi:

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/cloudhsm/latest/userguide/attr-errors.html)

# Contoh kode untuk pustaka PKCS \$111 untuk SDK AWS CloudHSM Klien 5
<a name="pkcs11-samples"></a>

Contoh kode GitHub menunjukkan cara menyelesaikan tugas dasar menggunakan pustaka PKCS \$111 untuk AWS CloudHSM Client SDK 5. 

## Prasyarat
<a name="pkcs11-samples-prereqs"></a>

Sebelum menjalankan sampel, lakukan langkah-langkah berikut untuk mengatur lingkungan Anda:
+ Instal dan konfigurasikan [pustaka PKCS \$111](pkcs11-library-install.md) untuk Client SDK 5.
+ Siapkan [pengguna kriptografi (CU)](manage-hsm-users.md). Aplikasi Anda menggunakan akun HSM ini untuk menjalankan sampel kode pada HSM.

## Sampel Kode
<a name="pkcs11-samples-code"></a>

Sampel Kode untuk Perpustakaan Perangkat AWS CloudHSM Lunak untuk PKCS \$111 tersedia di. [GitHub](https://github.com/aws-samples/aws-cloudhsm-pkcs11-examples) Repositori ini mencakup contoh tentang bagaimana melakukan operasi umum menggunakan PKCS \$111 termasuk enkripsi, dekripsi, penandatanganan, dan verifikasi.
+ [Hasilkan kunci (AES, RSA, EC)](https://github.com/aws-samples/aws-cloudhsm-pkcs11-examples/tree/master/src/generate)
+ [Daftar atribut kunci](https://github.com/aws-samples/aws-cloudhsm-pkcs11-examples/blob/master/src/attributes/)
+ [Enkripsi dan dekripsi data dengan AES GCM](https://github.com/aws-samples/aws-cloudhsm-pkcs11-examples/blob/master/src/encrypt/aes_gcm.c)
+ [Enkripsi dan dekripsi data dengan AES\$1CTR](https://github.com/aws-samples/aws-cloudhsm-pkcs11-examples/tree/master/src/encrypt/aes_ctr.c) 
+ [Enkripsi dan dekripsi data dengan 3DES](https://github.com/aws-samples/aws-cloudhsm-pkcs11-examples/tree/master/src/encrypt/des_ecb.c) 
+ [Tanda tangani dan verifikasi data dengan RSA](https://github.com/aws-samples/aws-cloudhsm-pkcs11-examples/blob/master/src/sign/rsa_sign.c)
+ [Turunkan kunci menggunakan HMAC KDF](https://github.com/aws-samples/aws-cloudhsm-pkcs11-examples/blob/master/src/derivation/hmac_kdf.c)
+ [Bungkus dan buka kunci dengan AES menggunakan padding PKCS \$15](https://github.com/aws-samples/aws-cloudhsm-pkcs11-examples/blob/master/src/wrapping/aes_wrapping.c)
+ [Bungkus dan buka kunci dengan AES tanpa padding](https://github.com/aws-samples/aws-cloudhsm-pkcs11-examples/blob/master/src/wrapping/aes_no_padding_wrapping.c)
+ [Bungkus dan buka kunci dengan AES menggunakan bantalan nol](https://github.com/aws-samples/aws-cloudhsm-pkcs11-examples/blob/master/src/wrapping/aes_zero_padding_wrapping.c)
+ [Bungkus dan buka kunci dengan AES-GCM](https://github.com/aws-samples/aws-cloudhsm-pkcs11-examples/tree/master/src/wrapping/aes_gcm_wrapping.c)
+ [Bungkus dan buka kunci dengan RSA](https://github.com/aws-samples/aws-cloudhsm-pkcs11-examples/blob/master/src/wrapping/rsa_wrapping.c)

# Konfigurasi lanjutan untuk pustaka PKCS \$111 untuk AWS CloudHSM
<a name="pkcs11-library-configs"></a>

Penyedia AWS CloudHSM PKCS \$111 menyertakan konfigurasi lanjutan berikut, yang bukan merupakan bagian dari konfigurasi umum yang digunakan sebagian besar pelanggan. Konfigurasi ini memberikan kemampuan tambahan.
+ [Menghubungkan ke beberapa slot dengan PKCS \$111](pkcs11-library-configs-multi-slot.md)
+ [Coba lagi konfigurasi untuk PKCS \$111](pkcs11-library-configs-retry.md)

# Beberapa konfigurasi slot dengan pustaka PKCS \$111 untuk AWS CloudHSM
<a name="pkcs11-library-configs-multi-slot"></a>

Satu slot di pustaka Client SDK 5 PKCS \$111 mewakili satu koneksi ke cluster di. AWS CloudHSM Dengan Client SDK 5, Anda dapat mengonfigurasi PKCS11 pustaka Anda untuk memungkinkan beberapa slot menghubungkan pengguna ke beberapa klaster CloudHSM dari satu aplikasi PKCS \$111. 

Gunakan petunjuk dalam topik ini untuk membuat aplikasi Anda menggunakan fungsionalitas multi-slot untuk terhubung dengan beberapa cluster.

**Topics**
+ [Prasyarat multi-slot untuk pustaka PKCS \$111 untuk AWS CloudHSM](#pkcs11-multi-slot-prereqs)
+ [Konfigurasikan pustaka PKCS \$111 untuk fungsionalitas multi-slot AWS CloudHSM](pkcs11-multi-slot-config-run.md)
+ [Tambahkan cluster dengan fungsionalitas multi-slot untuk AWS CloudHSM](pkcs11-multi-slot-add-cluster.md)
+ [Hapus cluster dengan fungsionalitas multi-slot untuk AWS CloudHSM](pkcs11-multi-slot-remove-cluster.md)

## Prasyarat multi-slot untuk pustaka PKCS \$111 untuk AWS CloudHSM
<a name="pkcs11-multi-slot-prereqs"></a>

Sebelum mengonfigurasi beberapa slot untuk pustaka PKCS \$111 AWS CloudHSM, lengkapi prasyarat berikut.
+ Dua atau lebih AWS CloudHSM cluster yang ingin Anda sambungkan, bersama dengan sertifikat klaster mereka.
+ Instans EC2 dengan Grup Keamanan dikonfigurasi dengan benar untuk terhubung ke semua cluster di atas. Untuk informasi selengkapnya tentang cara menyiapkan cluster dan instance klien, lihat [Memulai AWS CloudHSM](getting-started.md).
+ Untuk mengatur fungsionalitas multi-slot, Anda harus sudah mengunduh dan menginstal pustaka PKCS \$111. Jika Anda belum melakukan ini, lihat instruksi di[Instal pustaka PKCS \$111 untuk AWS CloudHSM Client SDK 5](pkcs11-library-install.md).

# Konfigurasikan pustaka PKCS \$111 untuk fungsionalitas multi-slot AWS CloudHSM
<a name="pkcs11-multi-slot-config-run"></a>

Untuk mengonfigurasi pustaka PKCS \$111 Anda untuk fungsionalitas multi-slot AWS CloudHSM, ikuti langkah-langkah berikut:

1. Identifikasi cluster yang ingin Anda sambungkan menggunakan fungsionalitas multi-slot.

1. Tambahkan klaster ini ke konfigurasi PKCS \$111 Anda dengan mengikuti petunjuk di [Tambahkan cluster dengan fungsionalitas multi-slot untuk AWS CloudHSM](pkcs11-multi-slot-add-cluster.md)

1. Lain kali aplikasi PKCS \$111 Anda berjalan, itu akan memiliki fungsi multi-slot.

# Tambahkan cluster dengan fungsionalitas multi-slot untuk AWS CloudHSM
<a name="pkcs11-multi-slot-add-cluster"></a>

Saat [menghubungkan ke beberapa slot dengan PKCS \$111](pkcs11-library-configs-multi-slot.md) for AWS CloudHSM, gunakan **configure-pkcs11 add-cluster** perintah untuk menambahkan cluster ke konfigurasi Anda.

## Sintaksis
<a name="pkcs11-multi-slot-add-cluster-syntax"></a>

```
configure-pkcs11 add-cluster [OPTIONS]
        --cluster-id <CLUSTER ID> 
        [--region <REGION>]
        [--endpoint <ENDPOINT>]
        [--hsm-ca-cert <HSM CA CERTIFICATE FILE>]
        [--client-cert-hsm-tls-file <CLIENT CERTIFICATE FILE>]
        [--client-key-hsm-tls-file <CLIENT KEY FILE>]
        [-h, --help]
```

## Contoh
<a name="pkcs11-multi-slot-add-cluster-examples"></a>

### Tambahkan cluster menggunakan `cluster-id` parameter
<a name="w2aac25c21c17c31b7c13b7b3b1"></a>

**Example**  
 Gunakan **configure-pkcs11 add-cluster** bersama dengan `cluster-id` parameter untuk menambahkan cluster (dengan ID dari`cluster-1234567`) ke konfigurasi Anda.   

```
$ sudo /opt/cloudhsm/bin/configure-pkcs11 add-cluster --cluster-id <cluster-1234567>
```

```
PS C:\> & "C:\Program Files\Amazon\CloudHSM\bin\configure-pkcs11.exe" add-cluster --cluster-id <cluster-1234567>
```

**Tip**  
Jika menggunakan **configure-pkcs11 add-cluster** dengan `cluster-id` parameter tidak mengakibatkan klaster ditambahkan, lihat contoh berikut untuk versi yang lebih panjang dari perintah ini yang juga memerlukan `--region` dan `--endpoint` parameter untuk mengidentifikasi cluster yang ditambahkan. Jika, misalnya, wilayah cluster berbeda dari yang dikonfigurasi sebagai default AWS CLI Anda, Anda harus menggunakan `--region` parameter untuk menggunakan wilayah yang benar. Selain itu, Anda memiliki kemampuan untuk menentukan titik akhir AWS CloudHSM API yang akan digunakan untuk panggilan, yang mungkin diperlukan untuk berbagai pengaturan jaringan, seperti menggunakan titik akhir antarmuka VPC yang tidak menggunakan nama host DNS default untuk. AWS CloudHSM

### Tambahkan cluster menggunakan`cluster-id`,`endpoint`, dan `region` parameter
<a name="w2aac25c21c17c31b7c13b7b3b3"></a>

**Example**  
 Gunakan `region` parameter **configure-pkcs11 add-cluster** bersama dengan `cluster-id``endpoint`,, dan untuk menambahkan cluster (dengan ID`cluster-1234567`) ke konfigurasi Anda.   

```
$ sudo /opt/cloudhsm/bin/configure-pkcs11 add-cluster --cluster-id <cluster-1234567> --region <us-east-1> --endpoint <https://cloudhsmv2.us-east-1.amazonaws.com>
```

```
PS C:\> & "C:\Program Files\Amazon\CloudHSM\bin\configure-pkcs11.exe" add-cluster --cluster-id <cluster-1234567>--region <us-east-1> --endpoint <https://cloudhsmv2.us-east-1.amazonaws.com>
```

Untuk informasi tentang parameter `--cluster-id`, `--region` dan `--endpoint`, lihat [AWS CloudHSM Parameter konfigurasi SDK 5 klien](configure-tool-params5.md).

## Parameter
<a name="pkcs11-multi-slot-add-cluster-parameters"></a>

**--kluster-id *<Cluster ID>***  
 Membuat panggilan `DescribeClusters` untuk menemukan semua alamat IP antarmuka jaringan elastis (ENI) HSM dalam klaster yang terkait dengan ID klaster. Sistem menambahkan alamat IP ENI ke file AWS CloudHSM konfigurasi.  
Jika Anda menggunakan `--cluster-id` parameter dari instans EC2 dalam VPC yang tidak memiliki akses ke internet publik, maka Anda harus membuat antarmuka VPC endpoint untuk terhubung. AWS CloudHSM Untuk informasi lebih lanjut tentang VPC endpoint, lihat [AWS CloudHSM dan titik akhir VPC](cloudhsm-vpc-endpoint.md).
Wajib: Ya

**--titik akhir *<Endpoint>***  
Tentukan titik akhir AWS CloudHSM API yang digunakan untuk melakukan `DescribeClusters` panggilan. Anda harus menetapkan pilihan ini dalam kombinasi dengan `--cluster-id`.   
Wajib: Tidak

**--hsm-ca-cert *<HsmCA Certificate Filepath>***  
Menentukan filepath ke sertifikat HSM CA.  
Wajib: Tidak

**--wilayah *<Region>***  
Tentukan wilayah klaster Anda. Anda harus menetapkan pilihan ini dalam kombinasi dengan `--cluster-id`.  
Jika Anda tidak menyediakan parameter `--region`, sistem memilih wilayah dengan mencoba untuk membaca variabel lingkungan `AWS_DEFAULT_REGION` atau `AWS_REGION`. Jika variabel-variabel tersebut tidak diatur, maka sistem memeriksa wilayah yang terkait dengan profil Anda di file AWS config Anda (biasanya `~/.aws/config`) kecuali jika Anda menentukan file yang berbeda di variabel lingkungan `AWS_CONFIG_FILE`. Jika tidak ada variabel di atas yang diatur, sistem default ke wilayah `us-east-1`.  
Wajib: Tidak

**-- client-cert-hsm-tls berkas *<client certificate hsm tls path>***  
 Jalur ke sertifikat klien yang digunakan untuk otentikasi timbal balik klien TLS-HSM.   
 Hanya gunakan opsi ini jika Anda telah mendaftarkan setidaknya satu jangkar kepercayaan ke HSM dengan CloudHSM CLI. Anda harus menetapkan pilihan ini dalam kombinasi dengan `--client-key-hsm-tls-file`.   
Wajib: Tidak

**-- client-key-hsm-tls berkas *<client key hsm tls path>***  
 Jalur ke kunci klien yang digunakan untuk otentikasi timbal balik klien TLS-HSM.   
 Hanya gunakan opsi ini jika Anda telah mendaftarkan setidaknya satu jangkar kepercayaan ke HSM dengan CloudHSM CLI. Anda harus menetapkan pilihan ini dalam kombinasi dengan `--client-cert-hsm-tls-file`.   
Wajib: Tidak

# Hapus cluster dengan fungsionalitas multi-slot untuk AWS CloudHSM
<a name="pkcs11-multi-slot-remove-cluster"></a>

Saat [menghubungkan ke beberapa slot dengan PKCS \$111](pkcs11-library-configs-multi-slot.md), gunakan **configure-pkcs11 remove-cluster** perintah untuk menghapus cluster dari slot PKCS \$111 yang tersedia.

## Sintaksis
<a name="pkcs11-multi-slot-remove-cluster-syntax"></a>

```
configure-pkcs11 remove-cluster [OPTIONS]
        --cluster-id <CLUSTER ID>
        [-h, --help]
```

## Contoh
<a name="pkcs11-multi-slot-remove-cluster-examples"></a>

### Hapus cluster menggunakan `cluster-id` parameter
<a name="w2aac25c21c17c31b7c15b7b3b1"></a>

**Example**  
 Gunakan **configure-pkcs11 remove-cluster** bersama dengan `cluster-id` parameter untuk menghapus cluster (dengan ID dari`cluster-1234567`) dari konfigurasi Anda.   

```
$ sudo /opt/cloudhsm/bin/configure-pkcs11 remove-cluster --cluster-id <cluster-1234567>
```

```
PS C:\> & "C:\Program Files\Amazon\CloudHSM\bin\configure-pkcs11.exe" remove-cluster --cluster-id <cluster-1234567>
```

Untuk informasi tentang parameter `--cluster-id`, lihat [AWS CloudHSM Parameter konfigurasi SDK 5 klien](configure-tool-params5.md).

## Parameter
<a name="pkcs11-multi-slot-remove-cluster-parameters"></a>

**--kluster-id *<Cluster ID>***  
 ID cluster untuk menghapus dari konfigurasi  
Wajib: Ya

# Coba lagi perintah untuk pustaka PKCS \$111 untuk AWS CloudHSM
<a name="pkcs11-library-configs-retry"></a>

AWS CloudHSM Client SDK 5.8.0 dan yang lebih baru memiliki strategi coba ulang otomatis bawaan yang akan mencoba kembali operasi HSM-throttled dari sisi klien. Ketika HSM membatasi operasi karena terlalu sibuk melakukan operasi sebelumnya dan tidak dapat menerima lebih banyak permintaan, klien SDKs akan mencoba kembali operasi yang dibatasi hingga 3 kali sementara mundur secara eksponensial. Strategi coba ulang otomatis ini dapat diatur ke salah satu dari dua mode: **off** dan **standar**.
+ **off**: SDK Klien tidak akan melakukan strategi coba ulang apa pun untuk operasi yang dibatasi oleh HSM.
+ **standard**: Ini adalah mode default untuk Client SDK 5.8.0 dan yang lebih baru. Dalam mode ini, klien SDKs akan secara otomatis mencoba kembali operasi yang dibatasi dengan mundur secara eksponensial.

Untuk informasi selengkapnya, lihat [Pelambatan HSM](troubleshoot-hsm-throttling.md).

## Setel perintah coba lagi ke mode mati
<a name="w2aac25c21c17c31b9b9"></a>

------
#### [ Linux ]

**Untuk mengatur perintah coba lagi **off** untuk Client SDK 5 di Linux**
+ Anda dapat menggunakan perintah berikut untuk mengatur konfigurasi coba lagi ke **off** mode:

  ```
  $ sudo /opt/cloudhsm/bin/configure-pkcs11 --default-retry-mode off
  ```

------
#### [ Windows ]

**Untuk mengatur perintah coba lagi **off** untuk Client SDK 5 pada Windows**
+ Anda dapat menggunakan perintah berikut untuk mengatur konfigurasi coba lagi ke **off** mode:

  ```
  PS C:\> & "C:\Program Files\Amazon\CloudHSM\bin\configure-pkcs11.exe" --default-retry-mode off
  ```

------

# Penyimpanan sertifikat dengan pustaka PKCS \$111
<a name="pkcs11-certificate-storage"></a>

 Pustaka AWS CloudHSM PKCS \$111 mendukung penyimpanan sertifikat kunci publik sebagai “objek publik” (sebagaimana didefinisikan dalam PKCS \$111 2.40) pada klaster hsm2m.medium. Fitur ini memungkinkan sesi PKCS \$111 publik dan pribadi untuk membuat, mengambil, memodifikasi, dan menghapus sertifikat kunci publik. 

 Untuk menggunakan penyimpanan sertifikat dengan pustaka PKCS \$111, Anda harus mengaktifkannya dalam konfigurasi klien Anda. Setelah diaktifkan, Anda dapat mengelola objek sertifikat dari aplikasi PKCS \$111 Anda. Operasi yang berlaku untuk sertifikat dan objek kunci, seperti [C\$1 FindObjects](http://docs.oasis-open.org/pkcs11/pkcs11-base/v2.40/os/pkcs11-base-v2.40-os.html#_Toc323205461), akan mengembalikan hasil dari penyimpanan kunci dan sertifikat. 

**Topics**
+ [Aktifkan penyimpanan sertifikat](pkcs11-certificate-storage-configuration.md)
+ [API penyimpanan sertifikat](pkcs11-certificate-storage-api.md)
+ [Atribut sertifikat](pkcs11-certificate-storage-attributes.md)
+ [Log audit penyimpanan sertifikat](pkcs11-certificate-storage-audit-logs.md)

# Mengaktifkan penyimpanan sertifikat
<a name="pkcs11-certificate-storage-configuration"></a>

 Anda dapat mengaktifkan penyimpanan sertifikat pada klaster hsm2m.medium menggunakan alat konfigurasi pustaka PKCS \$111. Fitur ini tersedia dalam SDK versi 5.13 dan yang lebih baru. Untuk daftar operasi yang mendukung jenis objek sertifikat, lihat[Operasi API penyimpanan sertifikat](pkcs11-certificate-storage-api.md). 

 Untuk mengaktifkan penyimpanan sertifikat, ikuti langkah-langkah berikut untuk sistem operasi Anda: 

------
#### [ Linux ]
+ 

****Aktifkan penyimpanan sertifikat****  
Jalankan perintah berikut:

  ```
  $ sudo /opt/cloudhsm/bin/configure-pkcs11 --enable-certificate-storage
  ```

------
#### [ Windows ]
+ 

****Aktifkan penyimpanan sertifikat****  
Buka command prompt dan jalankan perintah berikut:

  ```
  PS C:\> & "C:\Program Files\Amazon\CloudHSM\bin\configure-pkcs11.exe" --enable-certificate-storage
  ```

------

# Operasi API penyimpanan sertifikat
<a name="pkcs11-certificate-storage-api"></a>

 Operasi PKCS \$111 berikut mendukung tipe objek sertifikat ()`CKO_CERTIFICATE`: 

## Operasi sertifikat umum
<a name="general-certificate-operations"></a>

**`C_CreateObject`**  
Membuat objek sertifikat baru.

**`C_DestroyObject`**  
Menghapus objek sertifikat yang ada.

**`C_GetAttributeValue`**  
Mendapat nilai satu atau lebih atribut dari objek sertifikat.

**`C_SetAttributeValue`**  
Memperbarui nilai satu atau lebih atribut dari objek sertifikat.

## Operasi pencarian objek sertifikat
<a name="certificate-object-search-operations"></a>

**`C_FindObjectsInit`**  
Memulai pencarian objek sertifikat.

**`C_FindObjects`**  
Melanjutkan pencarian objek sertifikat.

**`C_FindObjectsFinal`**  
Mengakhiri pencarian objek sertifikat.

# Atribut penyimpanan sertifikat
<a name="pkcs11-certificate-storage-attributes"></a>

 Tabel berikut mencantumkan atribut objek sertifikat yang didukung dan nilainya: 


| Atribut | Nilai default | Deskripsi | 
| --- | --- | --- | 
| `CKA_CLASS` | Diperlukan | Harus berupa `CKO_CERTIFICATE`. | 
| `CKA_TOKEN` | True |  Harus berupa `True`. | 
| `CKA_MODIFIABLE` | True | Harus berupa `True`. | 
| `CKA_PRIVATE` | False | Harus berupa `False`. | 
| `CKA_LABEL` | Kosong | Batasi 127 karakter. | 
| `CKA_COPYABLE` | False | Harus berupa `False`. | 
| `CKA_DESTROYABLE` | True | Harus berupa `True`. | 
| `CKA_CERTIFICATE_TYPE` | Diperlukan | Harus berupa `CKC_X_509`. | 
| `CKA_TRUSTED` | False | Harus berupa `False`. | 
| `CKA_CERTIFICATE_CATEGORY` | `CK_CERTIFICATE_CATEGORY_UNSPECIFIED` | Harus berupa `CK_CERTIFICATE_CATEGORY_UNSPECIFIED`. | 
| `CKA_CHECK_VALUE` | Berasal dari `CKA_VALUE` | Secara otomatis diatur berdasarkan`CKA_VALUE`. | 
| `CKA_START_DATE` | Kosong | Tanggal sertifikat 'tidak sebelum'. | 
| `CKA_END_DATE` | Kosong | Tanggal sertifikat 'tidak setelah'. | 
| `CKA_PUBLIC_KEY_INFO` | Kosong | Ukuran maksimum adalah 16 kilobyte. | 
| `CKA_SUBJECT` | Diperlukan | Subjek sertifikat. | 
| `CKA_ID` | Kosong | Ukuran maksimum adalah 128 byte. Keunikan tidak ditegakkan. | 
| `CKA_ISSUER` | Kosong | Penerbit sertifikat. | 
| `CKA_SERIAL_NUMBER` | Kosong | Nomor seri sertifikat. | 
| `CKA_VALUE` | Diperlukan | Ukuran maksimum adalah 32 kilobyte. | 

# Log audit penyimpanan sertifikat
<a name="pkcs11-certificate-storage-audit-logs"></a>

 AWS CloudHSM menulis log audit untuk operasi penyimpanan sertifikat yang mengubah data ke aliran log Acara CloudWatch Amazon terpisah dalam grup log klaster CloudWatch Anda. Aliran log ini dinamai untuk cluster, bukan untuk HSM tertentu di dalam cluster. 

 Untuk informasi tentang mengakses log audit CloudWatch, lihat[Bekerja dengan CloudWatch Log Amazon dan Log AWS CloudHSM Audit](get-hsm-audit-logs-using-cloudwatch.md). 

## Bidang entri log
<a name="pkcs11-certificate-storage-audit-logs-fields"></a>

`object_handle`  
Pengidentifikasi unik dari objek sertifikat.

`op_code`  
Operasi dilakukan atau dicoba. Kemungkinan nilai:  
+ `CreateObject`
+ `DestroyObject`
+ `SetAttributeValues`

`response`  
`OK`jika operasi berhasil, atau salah satu dari jenis kesalahan berikut:  
+ `DuplicateAttribute`
+ `InvalidAttributeValue`
+ `ObjectNotFound`
+ `MaxObjectsReached`
+ `InternalFailure`

`attributes`  
Atribut dimodifikasi, jika ada.

`timestamp`  
Waktu ketika operasi terjadi, dalam milidetik sejak zaman Unix.

## Contoh-contoh log Audit
<a name="pkcs11-certificate-storage-audit-logs-examples"></a>

### CreateObject contoh
<a name="pkcs11-certificate-storage-audit-logs-examples-create"></a>

```
{
    "object_handle": 463180677312929947,
    "op_code": "CreateObject",
    "response": "OK",
    "attributes": null,
    "timestamp": 1725482483671
}
```

### DestroyObject contoh
<a name="pkcs11-certificate-storage-audit-logs-examples-delete"></a>

```
{
    "object_handle": 463180677312929947,
    "op_code": "DestroyObject",
    "response": "OK",
    "attributes": null,
    "timestamp": 1725482484559
}
```

### SetAttributeValues contoh
<a name="pkcs11-certificate-storage-audit-logs-examples-set"></a>

```
{
    "object_handle": 463180678453346687,
    "op_code": "SetAttributeValues",
    "response": "OK",
    "attributes": [
        "Label"
    ],
    "timestamp": 1725482488004
}
```

### Contoh yang tidak berhasil CreateObject
<a name="pkcs11-certificate-storage-audit-logs-examples-error"></a>

```
{
    "object_handle": null,
    "op_code": "CreateObject",
    "response": "MaxObjectsReached",
    "attributes": null,
    "timestamp": 1726084937125
}
```

# Mesin AWS CloudHSM Dinamis OpenSSL untuk SDK Klien 5
<a name="openssl-library"></a>

 AWS CloudHSM OpenSSL Dynamic Engine memungkinkan Anda untuk membongkar operasi kriptografi ke cluster CloudHSM Anda melalui OpenSSL API.

AWS CloudHSM menyediakan OpenSSL Dynamic Engine, yang dapat Anda baca di atau. [AWS CloudHSM SSL/TLS offload di Linux menggunakan Tomcat dengan JSSE](third-offload-linux-jsse.md) [AWS CloudHSM SSL/TLS offload di Linux menggunakan NGINX atau Apache dengan OpenSSL](third-offload-linux-openssl.md) Untuk contoh penggunaan AWS CloudHSM dengan OpenSSL, lihat blog keamanan [AWS ini](https://aws.amazon.com/blogs/security/automate-the-deployment-of-an-nginx-web-service-using-amazon-ecs-with-tls-offload-in-cloudhsm/). Untuk informasi tentang dukungan platform SDKs, lihat[AWS CloudHSM Platform yang didukung SDK Klien 5](client-supported-platforms.md). Untuk pemecahan masalah, lihat. [Masalah yang diketahui untuk OpenSSL Dynamic Engine untuk AWS CloudHSM](ki-openssl-sdk.md)

Gunakan bagian berikut untuk menginstal dan mengkonfigurasi mesin AWS CloudHSM dinamis untuk OpenSSL, menggunakan Client SDK 5.

Untuk informasi tentang penggunaan SDK Klien 3, lihat[Menggunakan versi SDK sebelumnya untuk bekerja dengan AWS CloudHSM](choose-client-sdk.md).

**Topics**
+ [Instal OpenSSL Dynamic Engine AWS CloudHSM untuk Client SDK 5](openssl5-install.md)
+ [Tipe kunci yang didukung untuk OpenSSL Dynamic Engine AWS CloudHSM untuk Client SDK 5](openssl-key-types.md)
+ [Mekanisme yang didukung untuk OpenSSL Dynamic Engine AWS CloudHSM untuk Client SDK 5](openssl-mechanisms.md)
+ [Konfigurasi lanjutan untuk OpenSSL untuk AWS CloudHSM](openssl-library-configs.md)

# Instal OpenSSL Dynamic Engine AWS CloudHSM untuk Client SDK 5
<a name="openssl5-install"></a>

Gunakan bagian berikut untuk menginstal OpenSSL Dynamic Engine AWS CloudHSM for Client SDK 5.

**catatan**  
Untuk menjalankan satu klaster HSM dengan SDK Klien 5, Anda harus terlebih dahulu mengelola pengaturan daya tahan kunci klien dengan menetapkan `disable_key_availability_check` ke `True`. Untuk informasi selengkapnya, lihat [Sinkronisasi Kunci](manage-key-sync.md) dan [Alat Konfigurasi SDK Klien 5](configure-sdk-5.md).

**Untuk menginstal dan mengatur konfigurasi OpenSSL Dynamic Engine**

1. Gunakan salah satu perintah berikut untuk mengunduh dan menjalankan mesin OpenSSL.

------
#### [ Amazon Linux 2023 ]

   Instal OpenSSL Dynamic Engine untuk Amazon Linux 2023 pada arsitektur x86\$164:

   ```
   $ wget https://s3.amazonaws.com/cloudhsmv2-software/CloudHsmClient/Amzn2023/cloudhsm-dyn-latest.amzn2023.x86_64.rpm
   ```

   ```
   $ sudo yum install ./cloudhsm-dyn-latest.amzn2023.x86_64.rpm
   ```

   Instal OpenSSL Dynamic Engine untuk Amazon Linux 2023 pada arsitektur: ARM64 

   ```
   $ wget https://s3.amazonaws.com/cloudhsmv2-software/CloudHsmClient/Amzn2023/cloudhsm-dyn-latest.amzn2023.aarch64.rpm
   ```

   ```
   $ sudo yum install ./cloudhsm-dyn-latest.amzn2023.aarch64.rpm
   ```

------
#### [ Amazon Linux 2 ]

   Instal OpenSSL Dynamic Engine untuk Amazon Linux 2 pada arsitektur x86\$164:

   ```
   $ wget https://s3.amazonaws.com/cloudhsmv2-software/CloudHsmClient/EL7/cloudhsm-dyn-latest.el7.x86_64.rpm
   ```

   ```
   $ sudo yum install ./cloudhsm-dyn-latest.el7.x86_64.rpm
   ```

   Instal OpenSSL Dynamic Engine untuk Amazon Linux 2 pada arsitektur: ARM64 

   ```
   $ wget https://s3.amazonaws.com/cloudhsmv2-software/CloudHsmClient/EL7/cloudhsm-dyn-latest.el7.aarch64.rpm
   ```

   ```
   $ sudo yum install ./cloudhsm-dyn-latest.el7.aarch64.rpm
   ```

------
#### [ RHEL 9 (9.2\$1) ]

   Instal OpenSSL Dynamic Engine untuk RHEL 9 pada arsitektur x86\$164:

   ```
   $ wget https://s3.amazonaws.com/cloudhsmv2-software/CloudHsmClient/EL9/cloudhsm-dyn-latest.el9.x86_64.rpm
   ```

   ```
   $ sudo yum install ./cloudhsm-dyn-latest.el9.x86_64.rpm
   ```

   Instal OpenSSL Dynamic Engine untuk RHEL 9 pada arsitektur: ARM64 

   ```
   $ wget https://s3.amazonaws.com/cloudhsmv2-software/CloudHsmClient/EL9/cloudhsm-dyn-latest.el9.aarch64.rpm
   ```

   ```
   $ sudo yum install ./cloudhsm-dyn-latest.el9.aarch64.rpm
   ```

------
#### [ RHEL 8 (8.3\$1) ]

   Instal OpenSSL Dynamic Engine untuk RHEL 8 pada arsitektur x86\$164:

   ```
   $ wget https://s3.amazonaws.com/cloudhsmv2-software/CloudHsmClient/EL8/cloudhsm-dyn-latest.el8.x86_64.rpm
   ```

   ```
   $ sudo yum install ./cloudhsm-dyn-latest.el8.x86_64.rpm
   ```

   Instal OpenSSL Dynamic Engine untuk RHEL 8 pada arsitektur: ARM64 

   ```
   $ wget https://s3.amazonaws.com/cloudhsmv2-software/CloudHsmClient/EL8/cloudhsm-dyn-latest.el8.aarch64.rpm
   ```

   ```
   $ sudo yum install ./cloudhsm-dyn-latest.el8.aarch64.rpm
   ```

------
#### [ Ubuntu 24.04 LTS ]

   Instal OpenSSL Dynamic Engine untuk Ubuntu 24.04 LTS pada arsitektur x86\$164:

   ```
   $ wget https://s3.amazonaws.com/cloudhsmv2-software/CloudHsmClient/Noble/cloudhsm-dyn_latest_u24.04_amd64.deb
   ```

   ```
   $ sudo apt install ./cloudhsm-dyn_latest_u24.04_amd64.deb
   ```

   Instal OpenSSL Dynamic Engine untuk Ubuntu 24.04 LTS pada arsitektur: ARM64 

   ```
   $ wget https://s3.amazonaws.com/cloudhsmv2-software/CloudHsmClient/Noble/cloudhsm-dyn_latest_u24.04_arm64.deb
   ```

   ```
   $ sudo apt install ./cloudhsm-dyn_latest_u24.04_arm64.deb
   ```

------
#### [ Ubuntu 22.04 LTS ]

   Instal OpenSSL Dynamic Engine untuk Ubuntu 22.04 LTS pada arsitektur x86\$164:

   ```
   $ wget https://s3.amazonaws.com/cloudhsmv2-software/CloudHsmClient/Jammy/cloudhsm-dyn_latest_u22.04_amd64.deb
   ```

   ```
   $ sudo apt install ./cloudhsm-dyn_latest_u22.04_amd64.deb
   ```

   Instal OpenSSL Dynamic Engine untuk Ubuntu 22.04 LTS pada arsitektur: ARM64 

   ```
   $ wget https://s3.amazonaws.com/cloudhsmv2-software/CloudHsmClient/Jammy/cloudhsm-dyn_latest_u22.04_arm64.deb
   ```

   ```
   $ sudo apt install ./cloudhsm-dyn_latest_u22.04_arm64.deb
   ```

------

   Anda telah menginstal perpustakaan bersama untuk mesin dinamis di`/opt/cloudhsm/lib/libcloudhsm_openssl_engine.so`.

1. SDK Klien Bootstrap 5. Untuk informasi selengkapnya tentang bootstrapping, lihat [Bootstrap Klien SDK](cluster-connect.md#connect-how-to).

1. Tetapkan variabel lingkungan dengan kredensil pengguna kripto (CU). Untuk informasi tentang membuat CUs, lihat[Buat AWS CloudHSM pengguna dengan CloudHSM CLI](cloudhsm_cli-user-create.md).

   ```
   $ export CLOUDHSM_PIN=<HSM user name>:<password>
   ```
**catatan**  
SDK Klien 5 memperkenalkan `CLOUDHSM_PIN` variabel lingkungan untuk menyimpan kredensial CU. Di Client SDK 3 Anda menyimpan kredensi CU dalam variabel lingkungan. `n3fips_password` Klien SDK 5 mendukung kedua variabel lingkungan, namun sebaiknya gunakan`CLOUDHSM_PIN`.  
Saat mengatur variabel `CLOUDHSM_PIN` lingkungan, Anda harus melarikan diri dari karakter khusus apa pun yang dapat ditafsirkan oleh shell Anda.

1. Hubungkan instalasi OpenSSL Dynamic Engine Anda ke cluster. Untuk informasi selengkapnya, lihat [Hubungkan ke Klaster](cluster-connect.md).

1. Bootstrap SDK Klien 5. Untuk informasi selengkapnya, lihat [Bootstrap Klien SDK](cluster-connect.md#connect-how-to).

## Verifikasi OpenSSL Dynamic Engine untuk SDK Klien 5
<a name="verify-dyn-5"></a>

Gunakan perintah berikut untuk memverifikasi instalasi OpenSSL Dynamic Engine.

```
$ openssl engine -t cloudhsm
```

Output berikut memverifikasi konfigurasi Anda:

```
(cloudhsm) CloudHSM OpenSSL Engine
     [ available ]
```

# Tipe kunci yang didukung untuk OpenSSL Dynamic Engine AWS CloudHSM untuk Client SDK 5
<a name="openssl-key-types"></a>

 AWS CloudHSM OpenSSL Dynamic Engine mendukung jenis kunci berikut dengan Client SDK 5.


****  

| Tipe Kunci | Deskripsi | 
| --- | --- | 
| EC | ECDSA sign/verify untuk tipe kunci P-256, P-384, dan secp256k1. Untuk menghasilkan kunci EC yang dapat dioperasikan dengan mesin OpenSSL, lihat. [Ekspor kunci asimetris dengan CloudHSM CLI](cloudhsm_cli-key-generate-file.md) | 
| RSA | Pembuatan kunci RSA untuk kunci 2048, 3072, dan 4096-bit. Tanda/verifikasi RSA. Verifikasi diturunkan ke perangkat lunak OpenSSL. | 

# Mekanisme yang didukung untuk OpenSSL Dynamic Engine AWS CloudHSM untuk Client SDK 5
<a name="openssl-mechanisms"></a>

 AWS CloudHSM OpenSSL Dynamic Engine mendukung mekanisme berikut untuk fungsi Masuk dan Verifikasi dengan Client SDK 5.

## Tanda tangani dan verifikasi fungsi
<a name="openssl-mechanisms-sign-verify"></a>

Dengan Client SDK 5, data di-hash secara lokal dalam perangkat lunak. Ini berarti tidak ada batasan ukuran data yang dapat di-hash.

Jenis Tanda Tangan RSA
+ SHA1withRSA
+ SHA224withRSA
+ SHA256withRSA
+ SHA384withRSA
+ SHA512withRSA

Jenis Tanda Tangan ECDSA
+ SHA1withECDSA
+ SHA224withECDSA
+ SHA256withECDSA
+ SHA384withECDSA
+ SHA512withECDSA

# Konfigurasi lanjutan untuk OpenSSL untuk AWS CloudHSM
<a name="openssl-library-configs"></a>

Penyedia AWS CloudHSM OpenSSL menyertakan konfigurasi lanjutan berikut, yang bukan merupakan bagian dari konfigurasi umum yang digunakan sebagian besar pelanggan. Konfigurasi ini memberikan kemampuan tambahan.
+ [Coba lagi perintah untuk OpenSSL](openssl-library-configs-retry.md)

# Coba lagi perintah untuk OpenSSL untuk AWS CloudHSM
<a name="openssl-library-configs-retry"></a>

AWS CloudHSM Client SDK 5.8.0 dan yang lebih baru memiliki strategi coba ulang otomatis bawaan yang akan mencoba kembali operasi HSM-throttled dari sisi klien. Ketika HSM membatasi operasi karena terlalu sibuk melakukan operasi sebelumnya dan tidak dapat menerima lebih banyak permintaan, klien SDKs akan mencoba kembali operasi yang dibatasi hingga 3 kali sementara mundur secara eksponensial. Strategi coba ulang otomatis ini dapat diatur ke salah satu dari dua mode: **off** dan **standar**.
+ **off**: SDK Klien tidak akan melakukan strategi coba ulang apa pun untuk operasi yang dibatasi oleh HSM.
+ **standard**: Ini adalah mode default untuk Client SDK 5.8.0 dan yang lebih baru. Dalam mode ini, klien SDKs akan secara otomatis mencoba kembali operasi yang dibatasi dengan mundur secara eksponensial.

Untuk informasi selengkapnya, lihat [Pelambatan HSM](troubleshoot-hsm-throttling.md).

## Setel perintah coba lagi ke mode mati
<a name="w2aac25c21c19c19b7b9"></a>

Anda dapat menggunakan perintah berikut untuk mengatur perintah coba lagi ke **off** mode:

```
$ sudo /opt/cloudhsm/bin/configure-dyn --default-retry-mode off
```

# Penyedia AWS CloudHSM OpenSSL untuk SDK Klien 5
<a name="openssl-provider-library"></a>

Penyedia AWS CloudHSM OpenSSL memungkinkan Anda untuk membongkar operasi kriptografi TLS ke klaster CloudHSM Anda melalui OpenSSL Provider API. Antarmuka Provider adalah pendekatan yang direkomendasikan untuk penerapan baru menggunakan OpenSSL 3.2 dan yang lebih baru.

Gunakan bagian berikut untuk menginstal dan mengkonfigurasi Penyedia AWS CloudHSM OpenSSL, menggunakan Client SDK 5.

**Awas**  
 Integrasi dengan OpenSSL CLI saat ini tidak didukung oleh Penyedia OpenSSL. AWS CloudHSM Lihat [AWS CloudHSM SSL/TLS offload di Linux menggunakan NGINX atau dengan OpenSSL Provider HAProxy](third-offload-linux-openssl-provider.md) untuk integrasi yang didukung. 

## Platform yang didukung
<a name="openssl-provider-supported-platforms"></a>

Penyedia OpenSSL memerlukan OpenSSL 3.2 atau yang lebih baru, tersedia di \$1, Ubuntu 24.04\$1, dan Amazon Linux EL9 2023\$1.

Verifikasi kompatibilitas: `openssl version`

**Topics**
+ [Platform yang didukung](#openssl-provider-supported-platforms)
+ [Instal Penyedia AWS CloudHSM OpenSSL untuk Klien SDK 5](openssl-provider-install.md)
+ [Tipe kunci yang didukung untuk Penyedia AWS CloudHSM OpenSSL untuk SDK Klien 5](openssl-provider-key-types.md)
+ [Mekanisme yang Didukung Penyedia OpenSSL](openssl-provider-mechanisms.md)
+ [Konfigurasi Lanjutan Penyedia OpenSSL](openssl-provider-advanced-config.md)

# Instal Penyedia AWS CloudHSM OpenSSL untuk Klien SDK 5
<a name="openssl-provider-install"></a>

Gunakan bagian berikut untuk menginstal Penyedia OpenSSL untuk AWS CloudHSM Client SDK 5.

**catatan**  
Untuk menjalankan satu klaster HSM dengan SDK Klien 5, Anda harus terlebih dahulu mengelola pengaturan daya tahan kunci klien dengan menetapkan `disable_key_availability_check` ke `True`. Untuk informasi selengkapnya, lihat [Sinkronisasi Kunci](working-client-sync.md#client-sync-sdk8) dan [Alat Konfigurasi SDK Klien 5](configure-sdk-5.md).

## Persyaratan
<a name="openssl-provider-cluster-requirements"></a>

Penyedia OpenSSL **memerlukan** tipe klaster hsm2m.medium dan minimum CloudHSM Client SDK versi 5.17.0 atau yang lebih baru.

## Instal Penyedia OpenSSL
<a name="openssl-provider-install-steps"></a>

**Untuk menginstal Penyedia OpenSSL**

1. Gunakan perintah berikut untuk mengunduh dan menginstal Penyedia OpenSSL.

------
#### [ Amazon Linux 2023 ]

   Instal Penyedia OpenSSL untuk Amazon Linux 2023 pada arsitektur x86\$164:

   ```
   $ wget https://s3.amazonaws.com/cloudhsmv2-software/CloudHsmClient/Amzn2023/cloudhsm-openssl-provider-latest.amzn2023.x86_64.rpm
   ```

   ```
   $ sudo yum install ./cloudhsm-openssl-provider-latest.amzn2023.x86_64.rpm
   ```

   Instal Penyedia OpenSSL untuk Amazon Linux 2023 pada arsitektur: ARM64 

   ```
   $ wget https://s3.amazonaws.com/cloudhsmv2-software/CloudHsmClient/Amzn2023/cloudhsm-openssl-provider-latest.amzn2023.aarch64.rpm
   ```

   ```
   $ sudo yum install ./cloudhsm-openssl-provider-latest.amzn2023.aarch64.rpm
   ```

------
#### [ RHEL 9 (9.2\$1) ]

   Instal Penyedia OpenSSL untuk RHEL 9 pada arsitektur x86\$164:

   ```
   $ wget https://s3.amazonaws.com/cloudhsmv2-software/CloudHsmClient/EL9/cloudhsm-openssl-provider-latest.el9.x86_64.rpm
   ```

   ```
   $ sudo yum install ./cloudhsm-openssl-provider-latest.el9.x86_64.rpm
   ```

   Instal Penyedia OpenSSL untuk RHEL 9 pada arsitektur: ARM64 

   ```
   $ wget https://s3.amazonaws.com/cloudhsmv2-software/CloudHsmClient/EL9/cloudhsm-openssl-provider-latest.el9.aarch64.rpm
   ```

   ```
   $ sudo yum install ./cloudhsm-openssl-provider-latest.el9.aarch64.rpm
   ```

------
#### [ RHEL 10 (10.0\$1) ]

   Instal Penyedia OpenSSL untuk RHEL 10 pada arsitektur x86\$164:

   ```
   $ wget https://s3.amazonaws.com/cloudhsmv2-software/CloudHsmClient/EL10/cloudhsm-openssl-provider-latest.el10.x86_64.rpm
   ```

   ```
   $ sudo yum install ./cloudhsm-openssl-provider-latest.el10.x86_64.rpm
   ```

   Instal Penyedia OpenSSL untuk RHEL 10 pada arsitektur: ARM64 

   ```
   $ wget https://s3.amazonaws.com/cloudhsmv2-software/CloudHsmClient/EL10/cloudhsm-openssl-provider-latest.el10.aarch64.rpm
   ```

   ```
   $ sudo yum install ./cloudhsm-openssl-provider-latest.el10.aarch64.rpm
   ```

------
#### [ Ubuntu 24.04 ]

   Instal Penyedia OpenSSL untuk Ubuntu 24.04 pada arsitektur x86\$164:

   ```
   $ wget https://s3.amazonaws.com/cloudhsmv2-software/CloudHsmClient/Noble/cloudhsm-openssl-provider_latest_u24.04_amd64.deb
   ```

   ```
   $ sudo dpkg -i ./cloudhsm-openssl-provider_latest_u24.04_amd64.deb
   ```

   Instal Penyedia OpenSSL untuk Ubuntu 24.04 pada arsitektur: ARM64 

   ```
   $ wget https://s3.amazonaws.com/cloudhsmv2-software/CloudHsmClient/Noble/cloudhsm-openssl-provider_latest_u24.04_arm64.deb
   ```

   ```
   $ sudo dpkg -i ./cloudhsm-openssl-provider_latest_u24.04_arm64.deb
   ```

------

   Anda telah menginstal pustaka bersama untuk Penyedia OpenSSL di. `/opt/cloudhsm/lib/licloudhsm_openssl_provider.so` 

1. SDK Klien Bootstrap 5. Untuk informasi selengkapnya tentang bootstrapping, lihat [Bootstrap Klien SDK](cluster-connect.md#connect-how-to).

1. Tetapkan variabel `CLOUDHSM_PIN` lingkungan dengan kredensi pengguna kripto (CU) Anda:

   ```
   $ export CLOUDHSM_PIN=<username>:<password>
   ```

1. Connect instalasi OpenSSL Provider Anda ke cluster. Untuk informasi selengkapnya, lihat [Hubungkan ke Klaster](cluster-connect.md).

## Verifikasi instalasi.
<a name="openssl-provider-verify-installation"></a>

Verifikasi bahwa Penyedia OpenSSL diinstal dengan benar:

```
$ CLOUDHSM_PIN=<username>:<password> openssl list -providers -provider cloudhsm
```

Anda akan melihat output yang mirip dengan:

```
Providers:
  cloudhsm
    name: AWS CloudHSM OpenSSL Provider
    version: 5.17.0
    status: active
  default
    name: OpenSSL Default Provider
    version: 3.2.2
    status: active
```

# Tipe kunci yang didukung untuk Penyedia AWS CloudHSM OpenSSL untuk SDK Klien 5
<a name="openssl-provider-key-types"></a>

Penyedia AWS CloudHSM OpenSSL mendukung tipe kunci berikut dengan Client SDK 5.


****  

| Tipe Kunci | Deskripsi | 
| --- | --- | 
| RSA | RSA sign/verify dan operasi enkripsi asimetris. Verifikasi diturunkan ke perangkat lunak OpenSSL. Untuk menghasilkan kunci RSA yang dapat dioperasikan dengan Penyedia OpenSSL, lihat. [Ekspor kunci asimetris dengan CloudHSM CLI](cloudhsm_cli-key-generate-file.md) | 
| EC | ECDSA sign/verify untuk kurva P-256, P-384, dan P-521. Verifikasi diturunkan ke perangkat lunak OpenSSL. Untuk menghasilkan kunci EC yang dapat dioperasikan dengan Penyedia OpenSSL, lihat. [Ekspor kunci asimetris dengan CloudHSM CLI](cloudhsm_cli-key-generate-file.md) | 

# Mekanisme yang Didukung Penyedia OpenSSL
<a name="openssl-provider-mechanisms"></a>

AWS CloudHSM OpenSSL Provider SDK mendukung serangkaian mekanisme kriptografi yang komprehensif untuk berbagai operasi termasuk tanda tangan digital, enkripsi asimetris, enkripsi simetris, pertukaran kunci, dan banyak lagi.

## Jenis tanda tangan RSA
<a name="openssl-provider-rsa-signatures"></a>

Penyedia OpenSSL mendukung tanda tangan digital RSA dengan beberapa algoritma hash dan skema padding:

SHA1withRSA  
Tanda tangan RSA dengan algoritma hash SHA-1  
+ Bantalan PKCS \$11 v1.5
+ Padding PSS (Skema Tanda Tangan Probabilistik)

SHA224withRSA  
Tanda tangan RSA dengan algoritma hash SHA-224  
+ Bantalan PKCS \$11 v1.5
+ Padding PSS

SHA256withRSA  
Tanda tangan RSA dengan algoritma hash SHA-256  
+ Bantalan PKCS \$11 v1.5
+ Padding PSS

SHA384withRSA  
Tanda tangan RSA dengan algoritma hash SHA-384  
+ Bantalan PKCS \$11 v1.5
+ Padding PSS

SHA512withRSA  
Tanda tangan RSA dengan algoritma hash SHA-512  
+ Bantalan PKCS \$11 v1.5
+ Padding PSS

## Jenis tanda tangan ECDSA
<a name="openssl-provider-ecdsa-signatures"></a>

Penyedia OpenSSL mendukung tanda tangan digital ECDSA dengan beberapa algoritma hash:

SHA1withECDSA  
Tanda tangan ECDSA dengan algoritma hash SHA-1

SHA224withECDSA  
Tanda tangan ECDSA dengan algoritma hash SHA-224

SHA256withECDSA  
Tanda tangan ECDSA dengan algoritma hash SHA-256

SHA384withECDSA  
Tanda tangan ECDSA dengan algoritma hash SHA-384

SHA512withECDSA  
Tanda tangan ECDSA dengan algoritma hash SHA-512

# Konfigurasi Lanjutan Penyedia OpenSSL
<a name="openssl-provider-advanced-config"></a>

AWS CloudHSM OpenSSL Provider SDK menyediakan opsi konfigurasi lanjutan untuk menyesuaikan perilakunya untuk berbagai kasus penggunaan dan lingkungan. Gunakan alat konfigurasi untuk mengatur opsi ini.
+ [Coba lagi konfigurasi untuk Penyedia OpenSSL](openssl-provider-configs-retry.md)

# Coba lagi perintah untuk Penyedia OpenSSL untuk AWS CloudHSM
<a name="openssl-provider-configs-retry"></a>

AWS CloudHSM Client SDK 5.8.0 dan yang lebih baru memiliki strategi coba ulang otomatis bawaan yang akan mencoba kembali operasi HSM-throttled dari sisi klien. Ketika HSM membatasi operasi karena terlalu sibuk melakukan operasi sebelumnya dan tidak dapat menerima lebih banyak permintaan, klien SDKs akan mencoba kembali operasi yang dibatasi hingga 3 kali sementara mundur secara eksponensial. Strategi coba ulang otomatis ini dapat diatur ke salah satu dari dua mode: **off** dan **standar**.
+ **off**: SDK Klien tidak akan melakukan strategi coba ulang apa pun untuk operasi yang dibatasi oleh HSM.
+ **standard**: Ini adalah mode default untuk Client SDK 5.8.0 dan yang lebih baru. Dalam mode ini, klien SDKs akan secara otomatis mencoba kembali operasi yang dibatasi dengan mundur secara eksponensial.

Untuk informasi selengkapnya, lihat [Pelambatan HSM](troubleshoot-hsm-throttling.md).

## Setel perintah coba lagi ke mode mati
<a name="w2aac25c21c21c19b7b9"></a>

------
#### [ Linux ]

**Untuk mengatur perintah coba lagi **off** untuk Client SDK 5 di Linux**
+ Anda dapat menggunakan perintah berikut untuk mengatur konfigurasi coba lagi ke **off** mode:

  ```
  $ sudo /opt/cloudhsm/bin/configure-openssl-provider --default-retry-mode off
  ```

------

# Penyedia penyimpanan kunci (KSP) untuk AWS CloudHSM Klien SDK 5
<a name="ksp-library"></a>

 Key Storage Provider (KSP) adalah API kriptografi khusus untuk sistem operasi Microsoft Windows. Key Storage Provider (KSP) memungkinkan pengembang untuk menggunakan teknik kriptografi untuk mengamankan aplikasi berbasis Windows.

Untuk informasi tentang bootstrap, lihat. [Menghubungkan ke cluster](cluster-connect.md)

Untuk informasi tentang penggunaan SDK Klien 3, lihat[Menggunakan versi SDK sebelumnya untuk bekerja dengan AWS CloudHSM](choose-client-sdk.md).

**Topics**
+ [Instal penyedia penyimpanan kunci (KSP) untuk AWS CloudHSM Client SDK 5](ksp-library-install.md)
+ [Otentikasi ke penyedia penyimpanan Kunci (KSP) untuk AWS CloudHSM Klien SDK 5](ksp-library-authentication.md)
+ [Tipe kunci yang didukung untuk Penyedia Penyimpanan Kunci (KSP) untuk SDK AWS CloudHSM Klien 5](ksp-library--key-types.md)
+ [Operasi API yang didukung Penyedia penyimpanan kunci (KSP) untuk AWS CloudHSM Klien SDK 5](ksp-library-apis.md)
+ [Konfigurasi lanjutan untuk KSP untuk AWS CloudHSM](ksp-library-configs.md)

# Instal penyedia penyimpanan kunci (KSP) untuk AWS CloudHSM Client SDK 5
<a name="ksp-library-install"></a>

Gunakan bagian berikut untuk menginstal penyedia penyimpanan kunci (KSP) untuk AWS CloudHSM Client SDK 5.

**catatan**  
Untuk menjalankan satu klaster HSM dengan SDK Klien 5, Anda harus terlebih dahulu mengelola pengaturan daya tahan kunci klien dengan menetapkan `disable_key_availability_check` ke `True`. Untuk informasi selengkapnya, lihat [Sinkronisasi Kunci](manage-key-sync.md) dan [Alat Konfigurasi SDK Klien 5](configure-sdk-5.md).

**Untuk menginstal dan mengkonfigurasi Penyedia Penyimpanan Kunci (KSP)**

1. Instal Penyedia Penyimpanan Kunci (KSP) untuk Windows Server pada arsitektur x86\$164, buka PowerShell sebagai administrator dan jalankan perintah berikut:

   ```
   PS C:\> wget https://s3.amazonaws.com/cloudhsmv2-software/CloudHsmClient/Windows/AWSCloudHSMKSP-latest.msi -Outfile C:\AWSCloudHSMKSP-latest.msi
   ```

   ```
   PS C:\> Start-Process msiexec.exe -ArgumentList '/i C:\AWSCloudHSMKSP-latest.msi /quiet /norestart /log C:\client-install.txt' -Wait
   ```

1. Gunakan alat konfigurasi untuk menentukan lokasi sertifikat penerbitan. Untuk petunjuk, lihat [Tentukan lokasi sertifikat penerbitan](cluster-connect.md#specify-cert-location).

1. Untuk terhubung ke cluster Anda, lihat[Bootstrap Klien SDK](cluster-connect.md#connect-how-to).

1. Anda dapat menemukan file Penyedia Penyimpanan Kunci (KSP) di lokasi berikut:
   + Biner Windows:

     ```
     C:\Program Files\Amazon\CloudHSM
     ```

     Skrip konfigurasi Windows dan berkas log:

     ```
     C:\ProgramData\Amazon\CloudHSM
     ```

# Otentikasi ke penyedia penyimpanan Kunci (KSP) untuk AWS CloudHSM Klien SDK 5
<a name="ksp-library-authentication"></a>

Sebelum Anda menggunakan Key Storage Provider (KSP) untuk AWS CloudHSM Client SDK 5, Anda harus mengatur kredensi login untuk HSM pada sistem Anda. Anda memiliki dua pilihan:
+ Windows Credentials Manager (direkomendasikan untuk keamanan yang lebih baik)
+ Variabel lingkungan sistem (pengaturan yang lebih sederhana)

## Pengelola Kredensional Windows
<a name="sdk5-wcm"></a>

Anda dapat mengatur kredensil menggunakan `set_cloudhsm_credentials` utilitas atau antarmuka Windows Credentials Manager.
+ **Menggunakan utilitas `set_cloudhsm_credentials`**:

  Pemasang Windows termasuk `set_cloudhsm_credentials` utilitas. Anda dapat menggunakan utilitas ini untuk dengan mudah melewati kredensial login HSM ke Windows Credential Manager. Jika Anda ingin mengkompilasi utilitas ini dari sumber, Anda dapat menggunakan kode Python yang disertakan dalam penginstal.

  1. Navigasi ke `C:\Program Files\Amazon\CloudHSM\tools\`.

  1. Jalankan perintah berikut:

     ```
     set_cloudhsm_credentials.exe --username <CU USER> --password <CU PASSWORD>
     ```
+ **Menggunakan antarmuka Credential Manager**:

  1. Buka Manajer Kredensi:
     + Masukkan `credential manager` di kotak pencarian taskbar 
     + Pilih **Credential Manager**

  1. Pilih **Kredensial Windows** untuk mengelola kredensial Windows.

  1. Pilih **Tambahkan kredensi generik**

  1. Masukkan detail berikut:
     + **Alamat Internet atau Jaringan**:`CLOUDHSM_PIN`.
     + **Nama Pengguna**:*<CU USER>*.
     + **Kata Sandi**:*<CU PASSWORD>*.

  1. Pilih **OK**

## Variabel lingkungan sistem
<a name="sdk5-enviorn-var"></a>

Anda dapat mengatur variabel lingkungan sistem untuk mengidentifikasi HSM dan [pengguna kripto](understanding-users.md#crypto-user-chsm-cli) (CU) Anda. 

**Awas**  
Menyetel kredensil melalui variabel lingkungan sistem menyimpan kata sandi Anda dalam teks biasa di sistem Anda. Untuk keamanan yang lebih baik, gunakan Windows Credential Manager sebagai gantinya.

Anda dapat mengatur variabel lingkungan menggunakan:
+ Itu [https://docs.microsoft.com/en-us/windows-server/administration/windows-commands/setx](https://docs.microsoft.com/en-us/windows-server/administration/windows-commands/setx).
+ Panel Kontrol **Properti Sistem** Windows (tab **Lanjutan**).
+ mengatur variabel lingkungan sistem permanen Metode [terprogram](https://msdn.microsoft.com/en-us/library/system.environment.setenvironmentvariable(v=vs.110).aspx).

Untuk mengatur variabel lingkungan sistem:

**`CLOUDHSM_PIN=<CU USERNAME>:<CU PASSWORD>`**  
Mengidentifikasi [pengguna kripto](understanding-users.md#crypto-user-chsm-cli) (CU) di HSM dan menyediakan semua informasi login yang diperlukan. Aplikasi Anda mengautentikasi dan berjalan sebagai CU ini. Aplikasi memiliki izin CU ini dan dapat melihat dan mengelola hanya kunci yang CU miliki dan bagikan. Untuk membuat CU baru, gunakan perintah [user create](cloudhsm_cli-user-create.md) di CloudHSM CLI. Untuk menemukan yang ada CUs, gunakan perintah [daftar pengguna](cloudhsm_cli-user-list.md) di CloudHSM CLI.  
Contoh:  

```
setx /m CLOUDHSM_PIN test_user:password123
```

**catatan**  
Saat menyetel variabel lingkungan CLOUDHSM\$1PIN, Anda harus menghindari karakter khusus apa pun yang mungkin ditafsirkan oleh shell Anda.

# Tipe kunci yang didukung untuk Penyedia Penyimpanan Kunci (KSP) untuk SDK AWS CloudHSM Klien 5
<a name="ksp-library--key-types"></a>

Penyedia Penyimpanan AWS CloudHSM Kunci (KSP) mendukung jenis kunci berikut dengan Client SDK 5.


****  

| Tipe Kunci | Deskripsi | 
| --- | --- | 
| EC | Hasilkan kunci dengan kurva secp256r1 (P-256), secp384r1 (P-384), dan secp521r1 (P-521). | 
| RSA | Hasilkan kunci RSA 2048, 3072, dan 4096-bit. | 

# Operasi API yang didukung Penyedia penyimpanan kunci (KSP) untuk AWS CloudHSM Klien SDK 5
<a name="ksp-library-apis"></a>

Parameter dalam KSP ditentukan oleh Microsoft KSP. Lihat [dokumentasi Microsoft](https://learn.microsoft.com/en-us/windows/win32/api/ncrypt/) untuk informasi selengkapnya.

Penyedia Penyimpanan Kunci (KSP) mendukung operasi API KSP berikut untuk AWS CloudHSM Client SDK 5.
+ [`NCryptOpenStorageProvider`](ksp-library-apis-open-provider.md)
+ [NCryptOpenKey](ksp-library-apis-open-key.md)
+ [NCryptCreatePersistedKey](ksp-library-apis-create-persisted-key.md)
+ [NCryptGetProperty](ksp-library-apis-get-property.md)
+ [NCryptSetProperty](ksp-library-apis-set-property.md)
+ [NCryptFinalizeKey](ksp-library-apis-finalize-key.md)
+ [NCryptDeleteKey](ksp-library-apis-delete-key.md)
+ [NCryptFreeObject](ksp-library-apis-free-object.md)
+ [NCryptFreeBuffer](ksp-library-apis-free-buffer.md)
+ [NCryptIsAlgSupported](ksp-library-apis-is-alg-supported.md)
+ [NCryptEnumAlgorithms](ksp-library-apis-enum-algorithms.md)
+ [NCryptEnumKeys](ksp-library-apis-enum-keys.md)
+ [NCryptExportKey](ksp-library-apis-export-key.md)
+ [NCryptSignHash](ksp-library-apis-sign-hash.md)
+ [NCryptVerifySignature](ksp-library-apis-verify-signature.md)

# NCryptOpenStorageProvider berfungsi dengan Penyedia Penyimpanan Kunci (KSP)
<a name="ksp-library-apis-open-provider"></a>

`NCryptOpenStorageProvider`Fungsi memuat dan menginisialisasi Penyedia Penyimpanan Kunci (KSP).

## Parameter
<a name="ksp-library-apis-open-provider-parameters"></a>

 `phProvider`[keluar]   
Pointer ke `NCRYPT_PROV_HANDLE` variabel yang menyimpan pegangan penyedia.

 `pszProviderName`[dalam]   
Pointer ke string Unicode yang dihentikan nol yang mengidentifikasi penyedia penyimpanan kunci. AWS CloudHSM Key Storage Provider (KSP) mendukung nilai-nilai berikut:    
****    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/cloudhsm/latest/userguide/ksp-library-apis-open-provider.html)
Nilai adalah string karakter lebar literal, seperti yang ditunjukkan oleh L sebelum literal.

`dwFlags`[dalam]  
Bendera yang mengubah perilaku fungsi. Tidak ada bendera yang ditentukan untuk fungsi ini.

## Nilai yang Ditampilkan
<a name="ksp-library-apis-open-provider-return-value"></a>

Fungsi mengembalikan kode status untuk menunjukkan keberhasilan atau kegagalan.

Kode pengembalian umum meliputi:


****  

| Kode pengembalian | Deskripsi | 
| --- | --- | 
|  ERROR\$1SUCCESS  |  Operasi selesai dengan sukses.  | 
|  NTE\$1INVALID\$1PARAMETER  |  Satu atau lebih parameter tidak valid.  | 
|  NTE\$1FAIL  |  Operasi tidak bisa selesai.  | 

# NCryptOpenKey dengan penyedia penyimpanan kunci (KSP)
<a name="ksp-library-apis-open-key"></a>

`NCryptOpenKey`Fungsi ini membuka kunci yang ada di Penyedia Penyimpanan Kunci (KSP).

## Parameter
<a name="ksp-library-apis-open-key-parameters"></a>

 `hProvider`[dalam]   
Pegangan KSP yang berisi kunci. Gunakan [`NCryptOpenStorageProvider`](ksp-library-apis-open-provider.md)untuk mendapatkan pegangan.

 `phKey`[Keluar]   
Sebuah pointer ke `NCRYPT_KEY_HANDLE` variabel yang menyimpan pegangan kunci.

`pszKeyName`[dalam]  
Sebuah pointer ke string Unicode null-terminated yang berisi nama kunci.

`dwLegacyKeySpec`[di, tidak terpakai]  
AWS CloudHSM Penyedia Penyimpanan Kunci (KSP) tidak menggunakan parameter ini.

`dwFlags`[dalam]  
Bendera yang memodifikasi perilaku fungsi. Tidak ada bendera yang ditentukan untuk fungsi ini.

## Nilai yang Ditampilkan
<a name="ksp-library-apis-open-key-return-value"></a>

Fungsi mengembalikan kode status untuk menunjukkan keberhasilan atau kegagalan.

Kode pengembalian umum meliputi:


****  

| Kode kembalikan | Deskripsi | 
| --- | --- | 
|  ERROR\$1SUCCESS  |  Operasi selesai dengan sukses.  | 
|  NTE\$1INVALID\$1PARAMETER  |  Satu atau lebih parameter tidak valid.  | 
|  NTE\$1FAIL  |  Operasi tidak bisa selesai.  | 
|  NTE\$1INVALID\$1HANDLE  |  Pegangan masuk `hProvider` tidak valid.  | 
|  NTE\$1BAD\$1KEYSET  |  Nama kunci yang diberikan tidak mengembalikan hasil yang unik.  | 

# NCryptCreatePersistedKey dengan penyedia penyimpanan kunci (KSP)
<a name="ksp-library-apis-create-persisted-key"></a>

`NCryptCreatePersistedKey`Fungsi ini membuat kunci baru dan menyimpannya di Penyedia Penyimpanan Kunci (KSP). Anda dapat menggunakan [`NCryptSetProperty`](ksp-library-apis-set-property.md)fungsi untuk mengatur propertinya setelah pembuatan. Anda harus menelepon [`NCryptFinalizeKey`](ksp-library-apis-finalize-key.md)sebelum Anda dapat menggunakan kunci.

## Parameter
<a name="ksp-library-apis-create-persisted-key-parameters"></a>

 `hProvider`[dalam]   
Pegangan penyedia penyimpanan kunci tempat Anda akan membuat kunci. Gunakan [`NCryptOpenStorageProvider`](ksp-library-apis-open-provider.md)untuk mendapatkan pegangan ini.

 `phKey`[Keluar]   
Alamat `NCRYPT_KEY_HANDLE` variabel yang menyimpan pegangan kunci. 

 `pszAlgId`[dalam]   
Pointer ke string Unicode yang dihentikan nol yang menentukan pengidentifikasi algoritma kriptografi untuk membuat kunci.  
AWS CloudHSM Penyedia Penyimpanan Kunci (KSP) mendukung algoritma berikut:     
****    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/cloudhsm/latest/userguide/ksp-library-apis-create-persisted-key.html)

`pszKeyName`[dalam, opsional]  
Pointer ke string Unicode yang dihentikan nol yang berisi nama kunci. Jika parameter ini adalah NULL, fungsi ini akan membuat kunci fana yang tidak bertahan.

`dwLegacyKeySpec`[di, tidak terpakai]  
AWS CloudHSM Penyedia Penyimpanan Kunci (KSP) tidak menggunakan parameter ini.

`dwFlags`[dalam]  
Bendera untuk memodifikasi perilaku fungsi. Gunakan nol atau lebih dari nilai-nilai berikut:    
****    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/cloudhsm/latest/userguide/ksp-library-apis-create-persisted-key.html)

## Nilai yang Ditampilkan
<a name="ksp-library-apis-create-persisted-key-return-value"></a>

Fungsi mengembalikan kode status untuk menunjukkan keberhasilan atau kegagalan.

Kode pengembalian umum meliputi:


****  

| Kode pengembalian | Deskripsi | 
| --- | --- | 
|  ERROR\$1SUCCESS  |  Fungsi selesai dengan sukses.  | 
|  NTE\$1INVALID\$1PARAMETER  |  Satu atau lebih parameter tidak valid.  | 
|  NTE\$1FAIL  |  Operasi tidak bisa selesai.  | 
|  NTE\$1BAD\$1FLAGS  |  `dwFlags`Parameter berisi nilai yang tidak valid.  | 
|  NTE\$1NOT\$1SUPPORTED  |  `pszAlgId`Parameter berisi nilai yang tidak didukung.  | 
|  NTE\$1EXISTS  |  Kunci dengan nama yang ditentukan sudah ada dan operasi tidak digunakan` NCRYPT_OVERWRITE_KEY_FLAG`.  | 

# NCryptGetProperty dengan penyedia penyimpanan kunci (KSP)
<a name="ksp-library-apis-get-property"></a>

`NCryptGetProperty`Fungsi mengambil nilai properti untuk objek penyimpanan kunci.

## Parameter
<a name="ksp-library-apis-create-get-property-parameters"></a>

 `hObject`[dalam]   
 Pegangan objek yang propertinya ingin Anda ambil. Anda dapat menggunakan:  
+ Pegangan penyedia (`NCRYPT_PROV_HANDLE`)
+ Sebuah pegangan kunci (`NCRYPT_KEY_HANDLE`)

 `pszProperty `[dalam]   
Sebuah pointer ke string Unicode null-terminated yang berisi nama properti untuk diambil.   
Saat menggunakan`NCRYPT_PROV_HANDLE`, Penyedia Penyimpanan AWS CloudHSM Kunci (KSP) mendukung pengidentifikasi KSP berikut:    
****    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/cloudhsm/latest/userguide/ksp-library-apis-get-property.html)
Saat menggunakan`NCRYPT_KEY_HANDLE`, Penyedia Penyimpanan AWS CloudHSM Kunci (KSP) mendukung pengidentifikasi KSP berikut:    
****    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/cloudhsm/latest/userguide/ksp-library-apis-get-property.html)
Nilai adalah string karakter lebar literal, seperti yang ditunjukkan oleh L sebelum literal.

 `pbOutput`[Keluar]   
Alamat buffer untuk menyimpan nilai properti. Tentukan ukuran buffer menggunakan`cbOutput`.  
Untuk menentukan ukuran buffer yang diperlukan, atur parameter ini ke NULL. Fungsi menyimpan ukuran yang diperlukan (dalam byte) di lokasi yang ditunjuk oleh`pcbResult`.

 `cbOutput`[dalam]   
 Ukuran `pbOutput` buffer dalam byte.

`pcbResult`[Keluar]  
Pointer ke variabel DWORD yang menyimpan jumlah byte yang disalin ke buffer. `pbOutput`  
Jika NULL, ini menyimpan ukuran yang diperlukan (dalam byte). `pbOutput`

`dwFlags`[dalam]  
Bendera untuk memodifikasi perilaku fungsi. Anda dapat menggunakan nol atau:    
****    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/cloudhsm/latest/userguide/ksp-library-apis-get-property.html)
Ketika PSZProperty`NCRYPT_SECURITY_DESCR_PROPERTY`, gunakan satu atau kombinasi dari:    
****    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/cloudhsm/latest/userguide/ksp-library-apis-get-property.html)

## Nilai yang Ditampilkan
<a name="ksp-library-apis-get-property-return-value"></a>

Fungsi mengembalikan kode status untuk menunjukkan keberhasilan atau kegagalan.

Kode pengembalian umum meliputi:


****  

| Kode pengembalian | Deskripsi | 
| --- | --- | 
|  ERROR\$1SUCCESS  |  Operasi selesai dengan sukses.  | 
|  NTE\$1INVALID\$1PARAMETER  |  Satu atau lebih parameter tidak valid.  | 
|  NTE\$1FAIL  |  Operasi tidak bisa selesai.  | 
|  NTE\$1BAD\$1FLAGS  |  `dwFlags`Parameter berisi nilai yang tidak valid.  | 
|  NTE\$1NOT\$1SUPPORTED  |  `pszAlgId`Parameter berisi nilai yang tidak didukung.  | 
|  NTE\$1INVALID\$1HANDLE  |  Pegangan masuk `hObject` tidak valid.  | 
|  NTE\$1BUFFER\$1TOO\$1SMALL  |  `cbOutput`Parameternya terlalu kecil untuk mengembalikan nilai.  | 

# NCryptSetProperty dengan penyedia penyimpanan kunci (KSP)
<a name="ksp-library-apis-set-property"></a>

`NCryptSetProperty`Fungsi menetapkan nilai properti untuk objek penyimpanan kunci.

## Parameter
<a name="ksp-library-apis-create-set-property-parameters"></a>

 `hObject`[dalam]   
 Pegangan objek yang propertinya ingin Anda atur. Anda dapat menggunakan:  
+ Pegangan penyedia (`NCRYPT_PROV_HANDLE`)
+ Sebuah pegangan kunci (`NCRYPT_KEY_HANDLE`)

 `pszProperty `[dalam]   
Sebuah pointer ke string Unicode null-terminated yang berisi nama properti untuk diambil.   
Saat menggunakan`NCRYPT_PROV_HANDLE`, Penyedia Penyimpanan AWS CloudHSM Kunci (KSP) mendukung pengidentifikasi KSP berikut:    
****    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/cloudhsm/latest/userguide/ksp-library-apis-set-property.html)
Saat menggunakan`NCRYPT_KEY_HANDLE`, Penyedia Penyimpanan AWS CloudHSM Kunci (KSP) mendukung pengidentifikasi KSP berikut:    
****    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/cloudhsm/latest/userguide/ksp-library-apis-set-property.html)
Nilai adalah string karakter lebar literal, seperti yang ditunjukkan oleh L sebelum literal.

 `pbInput`[dalam]   
 Alamat buffer yang berisi nilai properti baru. `cbInput`berisi ukuran buffer. 

 `cbInput`[dalam]   
 Ukuran `pbInput` buffer dalam byte. 

`dwFlags`[dalam]  
Bendera yang memodifikasi perilaku fungsi. Tidak ada bendera yang ditentukan untuk fungsi ini.

## Nilai yang Ditampilkan
<a name="ksp-library-apis-set-property-return-value"></a>

Fungsi mengembalikan kode status untuk menunjukkan keberhasilan atau kegagalan.

Kode pengembalian umum meliputi:


****  

| Kode pengembalian | Deskripsi | 
| --- | --- | 
|  ERROR\$1SUCCESS  |  Operasi selesai dengan sukses.  | 
|  NTE\$1INVALID\$1PARAMETER  |  Satu atau lebih parameter tidak valid.  | 
|  NTE\$1FAIL  |  Operasi tidak bisa selesai.  | 
|  NTE\$1BAD\$1FLAGS  |  `dwFlags`Parameter berisi nilai yang tidak valid.  | 
|  NTE\$1NOT\$1SUPPORTED  |  `pszProperty`Parameter berisi nilai yang tidak didukung.  | 
|  NTE\$1INVALID\$1HANDLE  |  Pegangan masuk `hObject` tidak valid.  | 
|  NTE\$1BAD\$1DATA  |  Data yang ditunjukkan oleh `pbInput` dan `cbInput` tidak valid.  | 

# NCryptFinalizeKey dengan penyedia penyimpanan kunci (KSP)
<a name="ksp-library-apis-finalize-key"></a>

`NCryptFinalizeKey`Fungsi ini melengkapi kunci KSP. Anda harus memanggil fungsi ini sebelum Anda dapat menggunakan kunci.

## Parameter
<a name="ksp-library-apis-finalize-key-parameters"></a>

 `hKey`[dalam]   
 Pegangan kunci untuk menyelesaikan. Dapatkan pegangan ini dengan memanggil [NCryptCreatePersistedKey](ksp-library-apis-create-persisted-key.md)fungsi.

`dwFlags`[dalam]  
Bendera untuk memodifikasi perilaku fungsi. Anda dapat menggunakan nol atau nilai-nilai ini:    
****    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/cloudhsm/latest/userguide/ksp-library-apis-finalize-key.html)

## Nilai yang Ditampilkan
<a name="ksp-library-apis-finalize-key-return-value"></a>

Fungsi mengembalikan kode status untuk menunjukkan keberhasilan atau kegagalan.

Kode pengembalian umum meliputi:


****  

| Kode pengembalian | Deskripsi | 
| --- | --- | 
|  ERROR\$1SUCCESS  |  Operasi selesai dengan sukses.  | 
|  NTE\$1FAIL  |  Operasi tidak bisa selesai.  | 
|  NTE\$1INVALID\$1HANDLE  |  Pegangan masuk `hKey` tidak valid.  | 
|  NTE\$1NOT\$1SUPPORTED  |  `dwFlags`Parameter berisi nilai yang tidak didukung.  | 
|  NTE\$1BAD\$1FLAGS  |  `dwFlags`Parameter berisi nilai yang tidak valid.  | 

# NCryptDeleteKey dengan penyedia penyimpanan kunci (KSP)
<a name="ksp-library-apis-delete-key"></a>

`NCryptDeleteKey`Fungsi menghapus kunci KSP dari Penyedia Penyimpanan Kunci (KSP).

## Parameter
<a name="ksp-library-apis-delete-key-parameters"></a>

 `hKey`[dalam]   
 Pegangan kunci untuk dihapus. 

`dwFlags`[dalam]  
Bendera untuk memodifikasi perilaku fungsi. Anda dapat menggunakan nol atau lebih dari nilai-nilai berikut:    
****    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/cloudhsm/latest/userguide/ksp-library-apis-delete-key.html)

## Nilai yang Ditampilkan
<a name="ksp-library-apis-delete-key-return-value"></a>

Fungsi mengembalikan kode status untuk menunjukkan keberhasilan atau kegagalan.

Kode pengembalian umum meliputi:


****  

| Kode pengembalian | Deskripsi | 
| --- | --- | 
|  ERROR\$1SUCCESS  |  Fungsinya berhasil.  | 
|  NTE\$1INVALID\$1PARAMETER  |  Satu atau lebih parameter tidak valid.  | 
|  NTE\$1BAD\$1FLAGS  |  `dwFlags`Parameter berisi nilai yang tidak valid.  | 
|  NTE\$1FAIL  |  Operasi tidak bisa selesai.  | 
|  NTE\$1INVALID\$1HANDLE  |  Pegangan masuk `hKey` tidak valid.  | 
|  NTE\$1INTERNAL\$1ERROR  |  Kesalahan internal terjadi saat menghapus kunci.  | 

# NCryptFreeObject dengan penyedia penyimpanan kunci (KSP)
<a name="ksp-library-apis-free-object"></a>

`NCryptFreeObject`Fungsi melepaskan provider atau key handle dari Key Storage Provider (KSP).

## Parameter
<a name="ksp-library-apis-free-object-parameters"></a>

 `hObject`[dalam]   
 Pegangan objek untuk dilepaskan. Anda dapat menggunakan:  
+ Pegangan penyedia (`NCRYPT_PROV_HANDLE`)
+ Sebuah pegangan kunci (`NCRYPT_KEY_HANDLE`)

## Nilai yang Ditampilkan
<a name="ksp-library-apis-free-object-return-value"></a>

Fungsi mengembalikan kode status untuk menunjukkan keberhasilan atau kegagalan.

Kode pengembalian umum meliputi:


****  

| Kode pengembalian | Deskripsi | 
| --- | --- | 
|  ERROR\$1SUCCESS  |  Operasi selesai dengan sukses.  | 
|  NTE\$1INVALID\$1HANDLE  |  Pegangan masuk `hObject` tidak valid.  | 

# NCryptFreeBuffer dengan penyedia penyimpanan kunci (KSP)
<a name="ksp-library-apis-free-buffer"></a>

`NCryptFreeBuffer`Fungsi ini melepaskan blok memori yang dialokasikan oleh Penyedia Penyimpanan Kunci (KSP).

## Parameter
<a name="ksp-library-apis-free-buffer-parameters"></a>

 `pvInput`[dalam]   
 Alamat memori yang akan dilepaskan. 

## Nilai yang Ditampilkan
<a name="ksp-library-apis-free-buffer-return-value"></a>

Fungsi mengembalikan kode status untuk menunjukkan keberhasilan atau kegagalan.

Kode pengembalian umum meliputi:


****  

| Kode pengembalian | Deskripsi | 
| --- | --- | 
|  ERROR\$1SUCCESS  |  Operasi selesai dengan sukses.  | 
|  NTE\$1FAIL  |  Operasi tidak bisa selesai.  | 

# NCryptIsAlgSupported dengan penyedia penyimpanan kunci (KSP)
<a name="ksp-library-apis-is-alg-supported"></a>

NCryptIsAlgSupported fungsi menentukan apakah Key Storage Provider (KSP) mendukung algoritma kriptografi tertentu.

## Parameter
<a name="ksp-library-apis-is-alg-supported-parameters"></a>

 `hProvider`[dalam]   
 Pegangan penyedia penyimpanan kunci. Gunakan [`NCryptOpenStorageProvider`](ksp-library-apis-open-provider.md)untuk mendapatkan pegangan. 

 `pszAlgId`[dalam]   
 Pointer ke string Unicode yang dihentikan nol yang berisi pengidentifikasi algoritma kriptografi untuk membuat kunci. AWS CloudHSM Key Storage Provider (KSP) mendukung algoritma berikut:     
****    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/cloudhsm/latest/userguide/ksp-library-apis-is-alg-supported.html)

`dwFlags`[dalam]  
Bendera yang memodifikasi perilaku fungsi. Ini bisa nol atau nilai berikut:    
****    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/cloudhsm/latest/userguide/ksp-library-apis-is-alg-supported.html)

## Nilai yang Ditampilkan
<a name="ksp-library-apis-is-alg-supported-return-value"></a>

Fungsi mengembalikan kode status untuk menunjukkan keberhasilan atau kegagalan.

Kode pengembalian umum meliputi:


****  

| Kode kembalikan | Deskripsi | 
| --- | --- | 
|  ERROR\$1SUCCESS  |  Operasi selesai dengan sukses.  | 
|  NTE\$1INVALID\$1PARAMETER  |  Satu atau lebih parameter tidak valid.  | 
|  NTE\$1BAD\$1FLAGS  |  `dwFlags`Parameter berisi nilai yang tidak valid.  | 
|  NTE\$1NOT\$1SUPPORTED  |  `pszAlgId`Parameter berisi nilai yang tidak didukung.  | 
|  NTE\$1INVALID\$1HANDLE  |  Pegangan masuk `hProvider` tidak valid.  | 

# NCryptEnumAlgorithms dengan penyedia penyimpanan kunci (KSP)
<a name="ksp-library-apis-enum-algorithms"></a>

`NCryptEnumAlgorithms`Fungsi ini mengambil nama-nama algoritma yang didukung oleh Penyedia Penyimpanan Kunci (KSP).

## Parameter
<a name="ksp-library-apis-enum-algorithms-parameters"></a>

 `hProvider`[dalam]   
 Pegangan penyedia penyimpanan kunci untuk menghitung algoritma. Gunakan [`NCryptOpenStorageProvider`](ksp-library-apis-open-provider.md)fungsi untuk mendapatkan pegangan ini. 

 `dwAlgOperations`[dalam]   
Satu set nilai yang menentukan kelas algoritma mana yang akan dihitung. Anda dapat menggunakan nol untuk menghitung semua algoritma, atau menggabungkan satu atau lebih dari nilai-nilai ini:     
****    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/cloudhsm/latest/userguide/ksp-library-apis-enum-algorithms.html)

`pdwAlgCount`[Keluar]  
Alamat DWORD yang menyimpan jumlah elemen dalam `ppAlgList` array.

`ppAlgList`[Keluar]  
Alamat pointer `NCryptAlgorithmName` struktur yang menyimpan array nama algoritma terdaftar. `pdwAlgCount`Parameter menunjukkan jumlah elemen dalam array ini.

`dwFlags`[dalam]  
Bendera untuk memodifikasi perilaku fungsi. Gunakan nol atau nilai berikut:    
****    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/cloudhsm/latest/userguide/ksp-library-apis-enum-algorithms.html)

## Nilai yang Ditampilkan
<a name="ksp-library-apis-open-key-return-value"></a>

Fungsi mengembalikan kode status untuk menunjukkan keberhasilan atau kegagalan.

Kode pengembalian umum meliputi:


****  

| Kode pengembalian | Deskripsi | 
| --- | --- | 
|  ERROR\$1SUCCESS  |  Operasi selesai dengan sukses.  | 
|  NTE\$1INVALID\$1PARAMETER  |  Satu atau lebih parameter tidak valid.  | 
|  NTE\$1FAIL  |  Operasi tidak bisa selesai.  | 
|  NTE\$1BAD\$1FLAGS  |  `dwFlags`Parameter berisi nilai yang tidak valid.  | 
|  NTE\$1NOT\$1SUPPORTED  |  `dwAlgOperations`Parameter berisi nilai yang tidak didukung.  | 

# NCryptEnumKeys dengan penyedia penyimpanan kunci (KSP)
<a name="ksp-library-apis-enum-keys"></a>

NCryptEnumKeys fungsi daftar kunci yang disimpan di Penyedia Penyimpanan Kunci (KSP).

## Parameter
<a name="ksp-library-apis-enum-keys-parameters"></a>

 `hProvider`[dalam]   
Pegangan penyedia penyimpanan utama. Gunakan [`NCryptOpenStorageProvider`](ksp-library-apis-open-provider.md)untuk mendapatkan pegangan ini. 

 `pszScope`[di, tidak terpakai]   
 Setel parameter ini ke NULL.

 `ppKeyName`[keluar]   
Alamat pointer ke `NCryptKeyName` struktur yang menyimpan nama kunci. Untuk membebaskan memori ini setelah digunakan, hubungi`NCryptFreeBuffer`. 

`ppEnumState`[masuk, keluar]  
Alamat pointer VOID yang melacak kemajuan enumerasi. Penyedia penyimpanan kunci menggunakan informasi ini secara internal untuk mengelola urutan enumerasi. Untuk memulai enumerasi baru dari awal, atur pointer ini ke NULL.  
Untuk membebaskan memori ini setelah menyelesaikan enumerasi, berikan pointer ini ke file. `NCryptFreeBuffer`

`dwFlags`[dalam]  
Bendera untuk memodifikasi perilaku fungsi. Fungsi ini tidak memiliki bendera.

## Nilai yang Ditampilkan
<a name="ksp-library-apis-enum-keys-return-value"></a>

Fungsi mengembalikan kode status untuk menunjukkan keberhasilan atau kegagalan.

Kode pengembalian umum meliputi:


****  

| Kode pengembalian | Deskripsi | 
| --- | --- | 
|  ERROR\$1SUCCESS  |  Operasi selesai dengan sukses.  | 
|  NTE\$1INVALID\$1PARAMETER  |  Satu atau lebih parameter tidak valid.  | 
|  NTE\$1FAIL  |  Operasi tidak bisa selesai.  | 
|  NTE\$1INVALID\$1HANDLE  |  Pegangan masuk `hProvider` tidak valid.  | 
|  NTE\$1NO\$1MORE\$1ITEMS  |  Enumerasi telah mencantumkan semua kunci yang tersedia.  | 

# NCryptExportKey dengan penyedia penyimpanan kunci (KSP)
<a name="ksp-library-apis-export-key"></a>

`NCryptExportKey`Fungsi mengekspor kunci KSP ke memori. BLOB Fungsi ini hanya mendukung ekspor kunci publik.

## Parameter
<a name="ksp-library-apis-export-key-parameters"></a>

 `hKey`[dalam]  
Pegangan kunci untuk mengekspor.

 `hExportKey`[di, tidak terpakai]  
 AWS CloudHSM Penyedia Penyimpanan Kunci (KSP) tidak menggunakan parameter ini. 

`pszBlobType`[dalam]  
String Unicode yang dihentikan nol yang menentukan jenis yang akan diekspor. BLOB AWS CloudHSM Penyedia Penyimpanan Kunci (KSP) mendukung nilai-nilai berikut:    
****    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/cloudhsm/latest/userguide/ksp-library-apis-export-key.html)

`pParameterList`[di, tidak terpakai]  
AWS CloudHSM Penyedia Penyimpanan Kunci (KSP) tidak menggunakan parameter ini.

`pbOutput`[keluar, opsional]  
Alamat buffer untuk menyimpan BLOB kunci. Tentukan ukuran buffer menggunakan`cbOutput`. Jika disetel ke NULL, fungsi menyimpan ukuran yang diperlukan (dalam byte) di DWORD yang ditunjuk oleh. `pcbResult`

`cbOutput`[dalam]  
Ukuran `pbOutput` buffer dalam byte.

`pcbResult`[keluar]  
Alamat variabel DWORD yang menyimpan jumlah byte yang disalin ke buffer. `pbOutput` Jika `pbOutput` NULL, fungsi menyimpan ukuran buffer yang diperlukan dalam byte.

`dwFlags`[dalam]  
Bendera yang memodifikasi cara kerja fungsi. Anda dapat menggunakan nol atau berikut ini:    
****    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/cloudhsm/latest/userguide/ksp-library-apis-export-key.html)

## Nilai yang Ditampilkan
<a name="ksp-library-apis-export-key-return-value"></a>

Fungsi mengembalikan kode status untuk menunjukkan keberhasilan atau kegagalan.

Kode pengembalian umum meliputi:


****  

| Kode pengembalian | Deskripsi | 
| --- | --- | 
|  ERROR\$1SUCCESS  |  Operasi selesai dengan sukses.  | 
|  NTE\$1INVALID\$1PARAMETER  |  Satu atau lebih parameter tidak valid.  | 
|  NTE\$1FAIL  |  Operasi tidak bisa selesai.  | 
|  NTE\$1INVALID\$1HANDLE  |  Pegangan masuk `hProvider` tidak valid.  | 
|  NTE\$1BAD\$1FLAGS  |  `dwFlags`Parameter berisi nilai yang tidak valid.  | 
|  NTE\$1BAD\$1KEY\$1STATE  |  Status kunci tidak valid.  | 
|  NTE\$1NOT\$1SUPPORTED  |  `dwFlags`Parameter `pszBlobType` atau berisi nilai yang tidak didukung.  | 
|  STATUS\$1INTERNAL\$1ERROR  |  Kesalahan internal terjadi selama operasi.  | 

# NCryptSignHash dengan penyedia penyimpanan kunci (KSP)
<a name="ksp-library-apis-sign-hash"></a>

`NCryptSignHash`Fungsi ini menciptakan tanda tangan dari nilai hash.

## Parameter
<a name="ksp-library-apis-sign-hash-parameters"></a>

 `hKey`[dalam]   
 Pegangan kunci yang digunakan untuk menandatangani hash. 

`pPaddingInfo`[dalam, opsional]  
Sebuah pointer ke struktur yang berisi informasi padding. Jenis struktur tergantung pada `dwFlags` nilainya. Gunakan parameter ini hanya dengan tombol asimetris; atur ke NULL untuk jenis kunci lainnya.

`pbHashValue`[dalam]  
Sebuah pointer ke buffer yang berisi nilai hash untuk ditandatangani. Tentukan ukuran buffer menggunakan`cbHashValue`.

`cbHashValue`[dalam]  
Ukuran, dalam byte, dari `pbHashValue` buffer untuk ditandatangani.

`pbSignature`[keluar]  
Alamat buffer untuk menyimpan tanda tangan. Tentukan ukuran buffer menggunakan`cbSignature`.  
Untuk menentukan ukuran buffer yang diperlukan, atur parameter ini ke NULL. Fungsi menyimpan ukuran yang diperlukan (dalam byte) di lokasi yang ditunjuk oleh`pcbResult`.

`cbSignature`[dalam]  
Ukuran `pbSignature` buffer dalam byte. Fungsi mengabaikan parameter ini jika `pbSignature` NULL.

`pcbResult`[keluar]  
Pointer ke variabel DWORD yang menyimpan jumlah byte yang disalin ke buffer. `pbSignature`  
Jika `pbSignature` NULL, ini menyimpan ukuran buffer yang diperlukan, dalam byte. 

`dwFlags`[dalam]  
Bendera untuk memodifikasi perilaku fungsi. Bendera yang diizinkan bergantung pada jenis kunci Anda. Gunakan salah satu dari nilai-nilai ini:    
****    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/cloudhsm/latest/userguide/ksp-library-apis-sign-hash.html)

## Nilai yang Ditampilkan
<a name="ksp-library-apis-sign-hash-return-value"></a>

Fungsi mengembalikan kode status untuk menunjukkan keberhasilan atau kegagalan.

Kode pengembalian umum meliputi:


****  

| Kode pengembalian | Deskripsi | 
| --- | --- | 
|  ERROR\$1SUCCESS  |  Operasi selesai dengan sukses.  | 
|  NTE\$1INVALID\$1PARAMETER  |  Satu atau lebih parameter tidak valid.  | 
|  NTE\$1FAIL  |  Operasi tidak bisa selesai.  | 
|  NTE\$1INVALID\$1HANDLE  |  Pegangan masuk `hKey` tidak valid.  | 
|  NTE\$1BAD\$1FLAGS  |  `dwFlags`Parameter berisi nilai yang tidak valid.  | 
|  NTE\$1BUFFER\$1TOO\$1SMALL  |  `pcbOutput`Parameternya terlalu kecil untuk mengembalikan nilai.  | 
|  NTE\$1BAD\$1KEY\$1STATE  |  Status kunci tidak valid.  | 
|  NTE\$1INTERNAL\$1ERROR  |  Kesalahan internal terjadi saat menandatangani hash.  | 

# NCryptVerifySignature dengan penyedia penyimpanan kunci (KSP)
<a name="ksp-library-apis-verify-signature"></a>

`NCryptVerifySignature`Fungsi ini mengonfirmasi apakah tanda tangan cocok dengan hash tertentu.

## Parameter
<a name="ksp-library-apis-verify-signature-parameters"></a>

 `hKey`[dalam]   
 Pegangan kunci yang digunakan untuk mendekripsi tanda tangan. Anda harus menggunakan bagian kunci publik dari key pair yang digunakan untuk menandatangani data dengan [`NCryptSignHash`](ksp-library-apis-sign-hash.md). 

`pPaddingInfo`[dalam, opsional]  
Sebuah pointer ke struktur yang berisi informasi padding. Jenis struktur tergantung pada `dwFlags` nilainya. Gunakan parameter ini hanya dengan tombol asimetris; atur ke NULL untuk jenis kunci lainnya.

`pbHashValue`[dalam]  
Sebuah pointer ke buffer yang berisi nilai hash untuk ditandatangani. Tentukan ukuran buffer menggunakan`cbHashValue`.

`cbHashValue`[dalam]  
Ukuran `pbHashValue` buffer dalam byte.

`pbSignature`[Keluar]  
Alamat buffer yang berisi hash data yang ditandatangani. Gunakan [`NCryptSignHash`](ksp-library-apis-sign-hash.md)untuk membuat tanda tangan ini. Tentukan ukuran buffer menggunakan`cbSignature`.

`cbSignature`[dalam]  
Ukuran `pbSignature` buffer dalam byte. Gunakan [`NCryptSignHash`](ksp-library-apis-sign-hash.md)untuk membuat tanda tangan.

`dwFlags`[dalam]  
Bendera untuk memodifikasi perilaku fungsi. Bendera yang diizinkan bergantung pada jenis kunci Anda. Gunakan salah satu dari nilai-nilai ini:    
****    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/cloudhsm/latest/userguide/ksp-library-apis-verify-signature.html)

## Nilai yang Ditampilkan
<a name="ksp-library-apis-verify-signature-return-value"></a>

Fungsi mengembalikan kode status untuk menunjukkan keberhasilan atau kegagalan.

Kode pengembalian umum meliputi:


****  

| Kode kembalikan | Deskripsi | 
| --- | --- | 
|  ERROR\$1SUCCESS  |  Operasi selesai dengan sukses.  | 
|  NTE\$1INVALID\$1PARAMETER  |  Satu atau lebih parameter tidak valid.  | 
|  NTE\$1FAIL  |  Operasi tidak bisa selesai.  | 
|  NTE\$1INVALID\$1HANDLE  |  Pegangan masuk `hKey` tidak valid.  | 
|  NTE\$1BAD\$1FLAGS  |  `dwFlags`Parameter berisi nilai yang tidak valid.  | 
|  NTE\$1BAD\$1SIGNATURE  |  Tanda tangan tidak diverifikasi.  | 
|  NTE\$1BAD\$1KEY\$1STATE  |  Status kunci tidak valid.  | 
|  NTE\$1INTERNAL\$1ERROR  |  Kesalahan internal terjadi saat memverifikasi tanda tangan.  | 

# Konfigurasi lanjutan untuk KSP untuk AWS CloudHSM
<a name="ksp-library-configs"></a>

Penyedia Penyimpanan AWS CloudHSM Kunci (KSP) mencakup konfigurasi lanjutan berikut, yang bukan merupakan bagian dari konfigurasi umum yang digunakan sebagian besar pelanggan. Konfigurasi ini memberikan kemampuan tambahan.
+ [SDK3 mode kompatibilitas untuk KSP](ksp-library-configs-sdk3-compatibility-mode.md)

# SDK3 mode kompatibilitas untuk Penyedia Penyimpanan Kunci (KSP) untuk AWS CloudHSM
<a name="ksp-library-configs-sdk3-compatibility-mode"></a>

Penyedia Penyimpanan Kunci (KSP) menerapkan pendekatan yang berbeda untuk interaksi kunci HSM:
+ Klien SDK 5: Menyediakan komunikasi langsung dengan kunci yang disimpan di HSM, menghilangkan kebutuhan akan file referensi lokal
+ Client SDK 3: Mempertahankan file lokal di server Windows yang bertindak sebagai referensi ke kunci yang disimpan di HSM, menggunakan file-file ini untuk memfasilitasi operasi utama

Untuk pelanggan yang bermigrasi dari Client SDK 3 ke Client SDK 5, mengaktifkan opsi mode SDK3 kompatibilitas mendukung operasi menggunakan file referensi kunci yang ada sambil mempertahankan arsitektur penyimpanan kunci HSM yang mendasarinya.

## Aktifkan mode SDK3 kompatibilitas
<a name="ksp-library-configs-sdk3-compatibility-mode-on"></a>

------
#### [ Windows ]

**Untuk mengaktifkan mode SDK3 kompatibilitas untuk Penyedia Penyimpanan Kunci (KSP) untuk Klien SDK 5 di Windows**
+ Anda dapat menggunakan perintah berikut untuk mengaktifkan mode SDK3 kompatibilitas:

  ```
  PS C:\> & "C:\Program Files\Amazon\CloudHSM\bin\configure-ksp.exe" --enable-sdk3-compatibility-mode
  ```

------

## Nonaktifkan mode SDK3 kompatibilitas
<a name="ksp-library-configs-sdk3-compatibility-mode-off"></a>

------
#### [ Windows ]

**Untuk menonaktifkan mode SDK3 kompatibilitas untuk Penyedia Penyimpanan Kunci (KSP) untuk Klien SDK 5 di Windows**
+ Anda dapat menggunakan perintah berikut untuk menonaktifkan mode SDK3 kompatibilitas:

  ```
  PS C:\> & "C:\Program Files\Amazon\CloudHSM\bin\configure-ksp.exe" --disable-sdk3-compatibility-mode
  ```

------

# Penyedia JCE untuk AWS CloudHSM Klien SDK 5
<a name="java-library"></a>

Penyedia AWS CloudHSM JCE adalah implementasi penyedia yang dibangun dari kerangka penyedia Java Cryptographic Extension (JCE). JCE memungkinkan Anda untuk melakukan operasi kriptografi menggunakan Java Development Kit (JDK). Dalam panduan ini, penyedia AWS CloudHSM JCE kadang-kadang disebut sebagai penyedia JCE. Gunakan penyedia JCE dan JDK untuk membongkar operasi kriptografi ke HSM. Untuk pemecahan masalah, lihat. [Masalah yang diketahui untuk JCE SDK untuk AWS CloudHSM](ki-jce-sdk.md)

Untuk informasi tentang penggunaan SDK Klien 3, lihat[Menggunakan versi SDK sebelumnya untuk bekerja dengan AWS CloudHSM](choose-client-sdk.md).

**Topics**
+ [Instal penyedia JCE untuk AWS CloudHSM Client SDK 5](java-library-install_5.md)
+ [Tipe kunci yang didukung untuk penyedia JCE untuk AWS CloudHSM Client SDK 5](java-lib-keys_5.md)
+ [Dasar-dasar manajemen utama di penyedia JCE untuk AWS CloudHSM Client SDK 5](java-library-key-basics_5.md)
+ [Mekanisme yang didukung untuk penyedia JCE untuk AWS CloudHSM Client SDK 5](java-lib-supported_5.md)
+ [Atribut kunci Java yang didukung untuk AWS CloudHSM Klien SDK 5](java-lib-attributes_5.md)
+ [Contoh kode untuk pustaka AWS CloudHSM perangkat lunak untuk Java untuk Klien SDK 5](java-samples.md)
+ [AWS CloudHSM JCE penyedia Javadocs](java-javadocs_5.md)
+ [AWS CloudHSM KeyStore Kelas Java untuk Client SDK 5](alternative-keystore_5.md)
+ [Konfigurasi lanjutan untuk AWS CloudHSM JCE untuk Client SDK 5](java-lib-configs.md)

# Instal penyedia JCE untuk AWS CloudHSM Client SDK 5
<a name="java-library-install_5"></a>

Penyedia JCE untuk AWS CloudHSM Client SDK 5 kompatibel dengan OpenJDK 8, OpenJDK 11, OpenJDK 17, OpenJDK 21, dan OpenJDK 25. Anda dapat mengunduh keduanya dari situs web [OpenJDK](https://openjdk.java.net/).

Gunakan bagian berikut untuk menginstal dan memberikan kredensil kepada penyedia.

**catatan**  
Untuk menjalankan satu klaster HSM dengan SDK Klien 5, Anda harus terlebih dahulu mengelola pengaturan daya tahan kunci klien dengan menetapkan `disable_key_availability_check` ke `True`. Untuk informasi selengkapnya, lihat [Sinkronisasi Kunci](manage-key-sync.md) dan [Alat Konfigurasi SDK Klien 5](configure-sdk-5.md).

**Topics**
+ [Langkah 1: Instal penyedia JCE](#install-java-library_5)
+ [Langkah 2: Berikan kredensil ke penyedia JCE](#java-library-credentials_5)

## Langkah 1: Instal penyedia JCE
<a name="install-java-library_5"></a>

1. Gunakan perintah berikut untuk mengunduh dan menginstal penyedia JCE. 

------
#### [ Amazon Linux 2023 ]

   Instal penyedia JCE untuk Amazon Linux 2023 pada arsitektur x86\$164:

   ```
   $ wget https://s3.amazonaws.com/cloudhsmv2-software/CloudHsmClient/Amzn2023/cloudhsm-jce-latest.amzn2023.x86_64.rpm
   ```

   ```
   $ sudo yum install ./cloudhsm-jce-latest.amzn2023.x86_64.rpm
   ```

   Instal penyedia JCE untuk Amazon Linux 2023 pada ARM64 arsitektur:

   ```
   $ wget https://s3.amazonaws.com/cloudhsmv2-software/CloudHsmClient/Amzn2023/cloudhsm-jce-latest.amzn2023.aarch64.rpm
   ```

   ```
   $ sudo yum install ./cloudhsm-jce-latest.amzn2023.aarch64.rpm
   ```

------
#### [ Amazon Linux 2 ]

   Instal penyedia JCE untuk Amazon Linux 2 pada arsitektur x86\$164:

   ```
   $ wget https://s3.amazonaws.com/cloudhsmv2-software/CloudHsmClient/EL7/cloudhsm-jce-latest.el7.x86_64.rpm
   ```

   ```
   $ sudo yum install ./cloudhsm-jce-latest.el7.x86_64.rpm
   ```

   Instal penyedia JCE untuk Amazon Linux 2 pada ARM64 arsitektur:

   ```
   $ wget https://s3.amazonaws.com/cloudhsmv2-software/CloudHsmClient/EL7/cloudhsm-jce-latest.el7.aarch64.rpm
   ```

   ```
   $ sudo yum install ./cloudhsm-jce-latest.el7.aarch64.rpm
   ```

------
#### [ RHEL 10 (10.0\$1) ]

   Instal penyedia JCE untuk RHEL 10 pada arsitektur x86\$164:

   ```
   $ wget https://s3.amazonaws.com/cloudhsmv2-software/CloudHsmClient/EL10/cloudhsm-jce-latest.el10.x86_64.rpm
   ```

   ```
   $ sudo yum install ./cloudhsm-jce-latest.el10.x86_64.rpm
   ```

   Instal penyedia JCE untuk RHEL 10 pada ARM64 arsitektur:

   ```
   $ wget https://s3.amazonaws.com/cloudhsmv2-software/CloudHsmClient/EL10/cloudhsm-jce-latest.el10.aarch64.rpm
   ```

   ```
   $ sudo yum install ./cloudhsm-jce-latest.el10.aarch64.rpm
   ```

------
#### [ RHEL 9 (9.2\$1) ]

   Instal penyedia JCE untuk RHEL 9 (9.2\$1) pada arsitektur x86\$164:

   ```
   $ wget https://s3.amazonaws.com/cloudhsmv2-software/CloudHsmClient/EL9/cloudhsm-jce-latest.el9.x86_64.rpm
   ```

   ```
   $ sudo yum install ./cloudhsm-jce-latest.el9.x86_64.rpm
   ```

   Instal penyedia JCE untuk RHEL 9 (9.2\$1) pada arsitektur: ARM64 

   ```
   $ wget https://s3.amazonaws.com/cloudhsmv2-software/CloudHsmClient/EL9/cloudhsm-jce-latest.el9.aarch64.rpm
   ```

   ```
   $ sudo yum install ./cloudhsm-jce-latest.el9.aarch64.rpm
   ```

------
#### [ RHEL 8 (8.3\$1) ]

   Instal penyedia JCE untuk RHEL 8 pada arsitektur x86\$164:

   ```
   $ wget https://s3.amazonaws.com/cloudhsmv2-software/CloudHsmClient/EL8/cloudhsm-jce-latest.el8.x86_64.rpm
   ```

   ```
   $ sudo yum install ./cloudhsm-jce-latest.el8.x86_64.rpm
   ```

   Instal penyedia JCE untuk RHEL 8 pada ARM64 arsitektur:

   ```
   $ wget https://s3.amazonaws.com/cloudhsmv2-software/CloudHsmClient/EL8/cloudhsm-jce-latest.el8.aarch64.rpm
   ```

   ```
   $ sudo yum install ./cloudhsm-jce-latest.el8.aarch64.rpm
   ```

------
#### [ Ubuntu 24.04 LTS ]

   Instal penyedia JCE untuk Ubuntu 24.04 LTS pada arsitektur x86\$164:

   ```
   $ wget https://s3.amazonaws.com/cloudhsmv2-software/CloudHsmClient/Noble/cloudhsm-jce_latest_u24.04_amd64.deb
   ```

   ```
   $ sudo apt install ./cloudhsm-jce_latest_u24.04_amd64.deb
   ```

   Instal penyedia JCE untuk Ubuntu 24.04 LTS pada arsitektur: ARM64 

   ```
   $ wget https://s3.amazonaws.com/cloudhsmv2-software/CloudHsmClient/Noble/cloudhsm-jce_latest_u24.04_arm64.deb
   ```

   ```
   $ sudo apt install ./cloudhsm-jce_latest_u24.04_arm64.deb
   ```

------
#### [ Ubuntu 22.04 LTS ]

   Instal penyedia JCE untuk Ubuntu 22.04 LTS pada arsitektur x86\$164:

   ```
   $ wget https://s3.amazonaws.com/cloudhsmv2-software/CloudHsmClient/Jammy/cloudhsm-jce_latest_u22.04_amd64.deb
   ```

   ```
   $ sudo apt install ./cloudhsm-jce_latest_u22.04_amd64.deb
   ```

   Instal penyedia JCE untuk Ubuntu 22.04 LTS pada arsitektur: ARM64 

   ```
   $ wget https://s3.amazonaws.com/cloudhsmv2-software/CloudHsmClient/Jammy/cloudhsm-jce_latest_u22.04_arm64.deb
   ```

   ```
   $ sudo apt install ./cloudhsm-jce_latest_u22.04_arm64.deb
   ```

------
#### [ Windows Server ]

   Instal penyedia JCE untuk Windows Server pada arsitektur x86\$164, buka PowerShell sebagai administrator dan jalankan perintah berikut:

   ```
   PS C:\> wget https://s3.amazonaws.com/cloudhsmv2-software/CloudHsmClient/Windows/AWSCloudHSMJCE-latest.msi -Outfile C:\AWSCloudHSMJCE-latest.msi
   ```

   ```
   PS C:\> Start-Process msiexec.exe -ArgumentList '/i C:\AWSCloudHSMJCE-latest.msi /quiet /norestart /log C:\client-install.txt' -Wait
   ```

------

1. SDK Klien Bootstrap 5. Untuk informasi selengkapnya tentang bootstrapping, lihat [Bootstrap Klien SDK](cluster-connect.md#connect-how-to).

1. Temukan file penyedia JCE berikut:

------
#### [ Linux ]
   + `/opt/cloudhsm/java/cloudhsm-<version>.jar`
   + `/opt/cloudhsm/bin/configure-jce`
   + `/opt/cloudhsm/bin/jce-info`

------
#### [ Windows ]
   + `C:\Program Files\Amazon\CloudHSM\java\cloudhsm-<version>.jar>`
   + `C:\Program Files\Amazon\CloudHSM\bin\configure-jce.exe`
   + `C:\Program Files\Amazon\CloudHSM\bin\jce_info.exe`

------

## Langkah 2: Berikan kredensil ke penyedia JCE
<a name="java-library-credentials_5"></a>

Sebelum aplikasi Java Anda dapat menggunakan HSM, HSM harus terlebih dahulu mengotentikasi aplikasi. HSMs mengautentikasi menggunakan login eksplisit atau metode login implisit.

**Login eksplisit** - Metode ini memungkinkan Anda memberikan AWS CloudHSM kredensil langsung dalam aplikasi. Ini menggunakan metode dari [https://docs.oracle.com/javase/8/docs/api/java/security/AuthProvider.html](https://docs.oracle.com/javase/8/docs/api/java/security/AuthProvider.html), di mana Anda melewati nama pengguna dan kata sandi CU dalam pola pin. Untuk informasi selengkapnya, lihat [Login ke contoh kode HSM](https://github.com/aws-samples/aws-cloudhsm-jce-examples/blob/sdk5/src/main/java/com/amazonaws/cloudhsm/examples/LoginRunner.java).

**Login implisit** — Metode ini memungkinkan Anda mengatur AWS CloudHSM kredensil baik dalam file properti baru, properti sistem, atau sebagai variabel lingkungan.
+ **Properti sistem** — Set kredensial melalui properti sistem saat menjalankan aplikasi Anda. Contoh berikut menunjukkan dua cara berbeda yang dapat dilakukan:

------
#### [ Linux ]

  ```
  $ java -DHSM_USER=<HSM user name> -DHSM_PASSWORD=<password>
  ```

  ```
  System.setProperty("HSM_USER","<HSM user name>");
  System.setProperty("HSM_PASSWORD","<password>");
  ```

------
#### [ Windows ]

  ```
  PS C:\> java -DHSM_USER=<HSM user name> -DHSM_PASSWORD=<password>
  ```

  ```
  System.setProperty("HSM_USER","<HSM user name>");
  System.setProperty("HSM_PASSWORD","<password>");
  ```

------
+ **Variabel lingkungan** — Set kredensial sebagai variabel lingkungan.
**catatan**  
Saat mengatur variabel lingkungan, Anda harus melarikan diri dari karakter khusus apa pun yang dapat ditafsirkan oleh shell Anda.

------
#### [ Linux ]

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

------
#### [ Windows ]

  ```
  PS C:\> $Env:HSM_USER="<HSM user name>"
  PS C:\> $Env:HSM_PASSWORD="<password>"
  ```

------

Kredensial mungkin tidak tersedia jika aplikasi tidak menyediakannya atau jika Anda mencoba operasi sebelum HSM mengautentikasi sesi. Dalam kasus tersebut, pustaka perangkat lunak CloudHSM untuk Java mencari kredensialnya dengan urutan sebagai berikut:

1. Properti sistem

1. Variabel-variabel lingkungan

# Tipe kunci yang didukung untuk penyedia JCE untuk AWS CloudHSM Client SDK 5
<a name="java-lib-keys_5"></a>

Perpustakaan AWS CloudHSM perangkat lunak untuk Java memungkinkan Anda untuk menghasilkan jenis kunci berikut.


****  

| Tipe Kunci | Deskripsi | 
| --- | --- | 
| AES | Hasilkan kunci AES 128, 192, dan 256-bit.  | 
| Tiga DES (3DES, DESede) | Hasilkan Kunci Triple DES 192-bit. [*](#java-lib-keys_5-note-1) | 
| EC | Hasilkan pasangan kunci EC - kurva NIST secp224r1 (P-224), secp256r1 (P-256), secp256k1 (Blockchain), secp384r1 (P-384), dan secp521r1 (P-521). | 
| GENERIC\$1SECRET | Hasilkan 1 hingga 800 byte rahasia generik. | 
| HMAC | Dukungan hash untuk SHA1,, SHA224, SHA256 SHA384, SHA512. | 
| RSA | Hasilkan 2048-bit sampai 4096-bit kunci RSA, dengan penambahan 256 bit. | 

\$1 Sesuai dengan panduan NIST, ini dilarang untuk cluster dalam mode FIPS setelah 2023. Untuk cluster dalam mode non-FIPS, masih diperbolehkan setelah 2023. Lihat [Kepatuhan FIPS 140: Penutupan Mekanisme 2024](compliance-dep-notif.md#compliance-dep-notif-1) untuk rincian selengkapnya.

# Dasar-dasar manajemen utama di penyedia JCE untuk AWS CloudHSM Client SDK 5
<a name="java-library-key-basics_5"></a>

Dasar-dasar manajemen kunci dalam penyedia JCE melibatkan mengimpor kunci, mengekspor kunci, memuat kunci dengan pegangan, atau menghapus kunci. Untuk informasi lebih lanjut tentang mengelola kunci, lihat sampel kode [Kelola kunci](https://github.com/aws-samples/aws-cloudhsm-jce-examples/blob/sdk5/src/main/java/com/amazonaws/cloudhsm/examples/KeyUtilitiesRunner.java).

Anda juga dapat menemukan lebih banyak contoh kode penyedia JCE di [Sampel Kode](java-samples.md).

# Mekanisme yang didukung untuk penyedia JCE untuk AWS CloudHSM Client SDK 5
<a name="java-lib-supported_5"></a>

Topik ini memberikan informasi tentang mekanisme yang didukung untuk penyedia JCE dengan AWS CloudHSM Client SDK 5. Untuk informasi tentang antarmuka Java Cryptography Architecture (JCA) dan kelas mesin yang didukung oleh AWS CloudHSM, lihat topik berikut. 

**Topics**
+ [Menghasilkan fungsi key dan key pair](#java-gen-key-pairs-5)
+ [Fungsi cipher](#java-ciphers_5)
+ [Tanda tangani dan verifikasi fungsi](#java-sign-verify_5)
+ [Fungsi mencerna](#java-digests_5)
+ [Fungsi kode otentikasi pesan berbasis hash (HMAC)](#java-mac_5)
+ [Fungsi kode otentikasi pesan berbasis sandi (CMAC)](#java-cmac_5)
+ [Fungsi Perjanjian Utama](#java-key-derivation_5)
+ [Konversi kunci ke spesifikasi utama menggunakan pabrik-pabrik utama](#java-key-factories)
+ [Anotasi mekanisme](#w2aac25c21c25c15c23)

## Menghasilkan fungsi key dan key pair
<a name="java-gen-key-pairs-5"></a>

Pustaka AWS CloudHSM perangkat lunak untuk Java memungkinkan Anda untuk menggunakan operasi berikut untuk menghasilkan fungsi key dan key pair.
+ `RSA`
+ `EC`
+ `AES`
+ `DESede (Triple DES)`lihat catatan [1](#java-gen-key-pairs-5-note-1)
+ `GenericSecret`

## Fungsi cipher
<a name="java-ciphers_5"></a>

Pustaka AWS CloudHSM perangkat lunak untuk Java mendukung kombinasi algoritma, mode, dan padding berikut.


| Algoritme | Mode | Bantalan | Catatan | 
| --- | --- | --- | --- | 
| AES | CBC |  `AES/CBC/NoPadding` `AES/CBC/PKCS5Padding`  |  Menerapkan `Cipher.ENCRYPT_MODE` dan `Cipher.DECRYPT_MODE`. Menerapkan `Cipher.UNWRAP_MODE for AES/CBC NoPadding`  | 
| AES | ECB |  `AES/ECB/PKCS5Padding` `AES/ECB/NoPadding`  | Menerapkan `Cipher.ENCRYPT_MODE` dan `Cipher.DECRYPT_MODE`.  | 
| AES | CTR |  `AES/CTR/NoPadding`  |  Menerapkan `Cipher.ENCRYPT_MODE` dan `Cipher.DECRYPT_MODE`.  | 
| AES | GCM | `AES/GCM/NoPadding` | Menerapkan `Cipher.WRAP_MODE`, `Cipher.UNWRAP_MODE`, `Cipher.ENCRYPT_MODE`, dan `Cipher.DECRYPT_MODE`.Ketika melakukan enkripsi AES-GCM, HSM mengabaikan vektor inisialisasi (IV) dalam permintaan dan menggunakan IV yang dihasilkannya. Saat operasi selesai, Anda harus memanggil `Cipher.getIV()` untuk mendapatkan IV. | 
| AESWrap | ECB |  `AESWrap/ECB/NoPadding` `AESWrap/ECB/PKCS5Padding` `AESWrap/ECB/ZeroPadding`  | Menerapkan `Cipher.WRAP_MODE` dan `Cipher.UNWRAP_MODE`.  | 
| DESede (Tiga DES) | CBC |  `DESede/CBC/PKCS5Padding` `DESede/CBC/NoPadding`  |  Menerapkan `Cipher.ENCRYPT_MODE` dan `Cipher.DECRYPT_MODE`. Lihat catatan [1](#java-gen-key-pairs-5-note-1) di bawah untuk perubahan yang akan datang.  | 
| DESede (Tiga DES) | ECB |  `DESede/ECB/NoPadding` `DESede/ECB/PKCS5Padding`  | Menerapkan `Cipher.ENCRYPT_MODE` dan `Cipher.DECRYPT_MODE`. Lihat catatan [1](#java-gen-key-pairs-5-note-1) di bawah untuk perubahan yang akan datang.  | 
| RSA | ECB | `RSA/ECB/PKCS1Padding`**lihat catatan [1](#java-gen-key-pairs-5-note-1)** `RSA/ECB/OAEPPadding` `RSA/ECB/OAEPWithSHA-1ANDMGF1Padding` `RSA/ECB/OAEPWithSHA-224ANDMGF1Padding` `RSA/ECB/OAEPWithSHA-256ANDMGF1Padding` `RSA/ECB/OAEPWithSHA-384ANDMGF1Padding` `RSA/ECB/OAEPWithSHA-512ANDMGF1Padding`  |  Menerapkan `Cipher.WRAP_MODE`, `Cipher.UNWRAP_MODE`, `Cipher.ENCRYPT_MODE`, dan `Cipher.DECRYPT_MODE`.  | 
| RSA | ECB | `RSA/ECB/NoPadding` |  Menerapkan `Cipher.ENCRYPT_MODE` dan `Cipher.DECRYPT_MODE`.  | 
| RSAAESWrap | ECB |  `RSAAESWrap/ECB/OAEPPadding` `RSAAESWrap/ECB/OAEPWithSHA-1ANDMGF1Padding` `RSAAESWrap/ECB/OAEPWithSHA-224ANDMGF1Padding` `RSAAESWrap/ECB/OAEPWithSHA-256ANDMGF1Padding` `RSAAESWrap/ECB/OAEPWithSHA-384ANDMGF1Padding` `RSAAESWrap/ECB/OAEPWithSHA-512ANDMGF1Padding`  | Menerapkan `Cipher.WRAP_MODE` dan `Cipher.UNWRAP_MODE`.  | 

## Tanda tangani dan verifikasi fungsi
<a name="java-sign-verify_5"></a>

Pustaka AWS CloudHSM perangkat lunak untuk Java mendukung jenis tanda tangan dan verifikasi berikut. Dengan Client SDK 5 dan algoritma tanda tangan dengan hashing, data di-hash secara lokal dalam perangkat lunak sebelum dikirim ke HSM untuk tanda tangan/verifikasi. Ini berarti tidak ada batasan ukuran data yang dapat di-hash oleh SDK.

**Jenis Tanda Tangan RSA**
+ `NONEwithRSA`
+ `RSASSA-PSS`
+ `SHA1withRSA`
+ `SHA1withRSA/PSS`
+ `SHA1withRSAandMGF1`
+ `SHA224withRSA`
+ `SHA224withRSAandMGF1`
+ `SHA224withRSA/PSS`
+ `SHA256withRSA`
+ `SHA256withRSAandMGF1`
+ `SHA256withRSA/PSS`
+ `SHA384withRSA`
+ `SHA384withRSAandMGF1`
+ `SHA384withRSA/PSS`
+ `SHA512withRSA`
+ `SHA512withRSAandMGF1`
+ `SHA512withRSA/PSS`

**Jenis Tanda Tangan ECDSA**
+ `NONEwithECDSA`
+ `SHA1withECDSA`
+ `SHA224withECDSA`
+ `SHA256withECDSA`
+ `SHA384withECDSA`
+ `SHA512withECDSA`

## Fungsi mencerna
<a name="java-digests_5"></a>

Pustaka AWS CloudHSM perangkat lunak untuk Java mendukung intisari pesan berikut. Dengan Client SDK 5, data di-hash secara lokal dalam perangkat lunak. Ini berarti tidak ada batasan ukuran data yang dapat di-hash oleh SDK.
+ `SHA-1`
+ `SHA-224`
+ `SHA-256`
+ `SHA-384`
+ `SHA-512`

## Fungsi kode otentikasi pesan berbasis hash (HMAC)
<a name="java-mac_5"></a>

Pustaka AWS CloudHSM perangkat lunak untuk Java mendukung algoritma HMAC berikut.
+ `HmacSHA1`(Ukuran data maksimum dalam byte: 16288)
+ `HmacSHA224`(Ukuran data maksimum dalam byte: 16256)
+ `HmacSHA256`(Ukuran data maksimum dalam byte: 16288)
+ `HmacSHA384`(Ukuran data maksimum dalam byte: 16224)
+ `HmacSHA512`(Ukuran data maksimum dalam byte: 16224)

## Fungsi kode otentikasi pesan berbasis sandi (CMAC)
<a name="java-cmac_5"></a>

CMACs (Kode otentikasi pesan berbasis sandi) buat kode otentikasi pesan (MACs) menggunakan sandi blok dan kunci rahasia. Mereka berbeda dari HMACs dalam bahwa mereka menggunakan metode kunci simetris blok untuk MACs bukan metode hashing.

Pustaka AWS CloudHSM perangkat lunak untuk Java mendukung algoritma CMAC berikut.
+ `AESCMAC`

## Fungsi Perjanjian Utama
<a name="java-key-derivation_5"></a>

Pustaka AWS CloudHSM perangkat lunak untuk Java mendukung ECDH dengan Key Derivation Functions (KDF). Jenis KDF berikut didukung:
+ `ECDHwithX963SHA1KDF`Mendukung algoritma X9.63 KDF SHA1 [2](#kdf2)
+ `ECDHwithX963SHA224KDF`Mendukung algoritma X9.63 KDF SHA224 [2](#kdf2)
+ `ECDHwithX963SHA256KDF`Mendukung algoritma X9.63 KDF SHA256 [2](#kdf2)
+ `ECDHwithX963SHA384KDF`Mendukung algoritma X9.63 KDF SHA384 [2](#kdf2)
+ `ECDHwithX963SHA512KDF`Mendukung algoritma X9.63 KDF SHA512 [2](#kdf2)

## Konversi kunci ke spesifikasi utama menggunakan pabrik-pabrik utama
<a name="java-key-factories"></a>

Anda dapat menggunakan pabrik-pabrik utama untuk mengonversi kunci ke spesifikasi utama. AWS CloudHSM memiliki dua jenis pabrik utama untuk JCE:

**SecretKeyFactory:** Digunakan untuk mengimpor atau menurunkan kunci simetris. Dengan menggunakan SecretKeyFactory, Anda dapat meneruskan Kunci yang didukung atau didukung KeySpec untuk mengimpor atau memperoleh kunci simetris. AWS CloudHSM Berikut ini adalah spesifikasi yang didukung untuk KeyFactory:
+ `generateSecret`Metode untuk SecretKeyFactory [KeySpec](https://docs.oracle.com/javase/8/docs/api/java/security/spec/KeySpec.html)kelas berikut didukung:
  + **KeyAttributesMap**dapat digunakan untuk mengimpor byte kunci dengan atribut tambahan sebagai CloudHSM Key. Contohnya dapat ditemukan di sini di [sini](https://github.com/aws-samples/aws-cloudhsm-jce-examples/blob/sdk5/src/main/java/com/amazonaws/cloudhsm/examples/KeyUtilitiesRunner.java).
  + **[SecretKeySpec](https://docs.oracle.com/javase/8/docs/api/javax/crypto/spec/SecretKeySpec.html)**dapat digunakan untuk mengimpor spesifikasi kunci simetris sebagai Kunci CloudHSM.
  + **AesCmacKdfParameterSpec**dapat digunakan untuk menurunkan kunci simetris menggunakan CloudHSM AES Key lain.

**catatan**  
SecretKeyFactory`translateKey`Metode ini mengambil kunci apa pun yang mengimplementasikan antarmuka [kunci](https://docs.oracle.com/javase/8/docs/api/java/security/Key.html).

**KeyFactory:** Digunakan untuk mengimpor kunci asimetris. Dengan menggunakan KeyFactory, Anda dapat meneruskan Kunci yang didukung atau didukung KeySpec untuk mengimpor kunci AWS CloudHSM asimetris. Untuk informasi lebih lanjut, lihat sumber daya berikut:
+ `generatePublic`Metode KeyFactory For, [KeySpec](https://docs.oracle.com/javase/8/docs/api/java/security/spec/KeySpec.html)kelas berikut didukung:
+  KeyAttributesMap CloudHSM untuk RSA dan EC, termasuk: KeyTypes
  +  KeyAttributesMap CloudHSM untuk RSA dan EC publik. KeyTypes Contoh dapat ditemukan [di sini](https://github.com/aws-samples/aws-cloudhsm-jce-examples/blob/sdk5/src/main/java/com/amazonaws/cloudhsm/examples/KeyUtilitiesRunner.java)
  + [X509 EncodedKeySpec untuk Kunci](https://docs.oracle.com/javase/8/docs/api/java/security/spec/X509EncodedKeySpec.html) Publik RSA dan EC
  + [RSAPublicKeySpec](https://docs.oracle.com/javase/8/docs/api/java/security/spec/RSAPublicKeySpec.html)untuk Kunci Publik RSA
  + [ECPublicKeySpec](https://docs.oracle.com/javase/8/docs/api/java/security/spec/ECPublicKeySpec.html)untuk Kunci Publik EC
+ `generatePrivate`Metode KeyFactory For, [KeySpec](https://docs.oracle.com/javase/8/docs/api/java/security/spec/KeySpec.html)kelas berikut didukung:
+  KeyAttributesMap CloudHSM untuk RSA dan EC, termasuk: KeyTypes
  +  KeyAttributesMap CloudHSM untuk RSA dan EC publik. KeyTypes Contoh dapat ditemukan [di sini](https://github.com/aws-samples/aws-cloudhsm-jce-examples/blob/sdk5/src/main/java/com/amazonaws/cloudhsm/examples/KeyUtilitiesRunner.java)
  + [PKCS8EncodedKeySpec](https://docs.oracle.com/javase/8/docs/api/java/security/spec/PKCS8EncodedKeySpec.html)untuk EC dan RSA Private Key
  + [RSAPrivateCrtKeySpec](https://docs.oracle.com/javase/8/docs/api/java/security/spec/RSAPrivateCrtKeySpec.html)untuk Kunci Pribadi RSA
  + [ECPrivateKeySpec](https://docs.oracle.com/javase/8/docs/api/java/security/spec/ECPrivateKeySpec.html)untuk Kunci Pribadi EC

`translateKey`Metode KeyFactory For, dibutuhkan setiap Key yang mengimplementasikan [Key Interface](https://docs.oracle.com/javase/8/docs/api/java/security/Key.html).

## Anotasi mekanisme
<a name="w2aac25c21c25c15c23"></a>

[1] Sesuai dengan panduan NIST, ini tidak diizinkan untuk cluster dalam mode FIPS setelah 2023. Untuk cluster dalam mode non-FIPS, masih diperbolehkan setelah 2023. Lihat [Kepatuhan FIPS 140: Penutupan Mekanisme 2024](compliance-dep-notif.md#compliance-dep-notif-1) untuk detail.

[2] Fungsi derivasi kunci (KDFs) ditentukan dalam [Publikasi Khusus NIST 800-56A](https://nvlpubs.nist.gov/nistpubs/SpecialPublications/NIST.SP.800-56Ar3.pdf) Revisi 3.

# Atribut kunci Java yang didukung untuk AWS CloudHSM Klien SDK 5
<a name="java-lib-attributes_5"></a>

Topik ini memberikan informasi tentang atribut kunci Java yang didukung untuk AWS CloudHSM Client SDK 5. Topik ini menjelaskan cara menggunakan ekstensi berpemilik untuk penyedia JCE untuk menetapkan atribut kunci. Gunakan ekstensi ini untuk mengatur atribut kunci yang didukung dan nilai-nilainya selama operasi ini:
+ Pembuatan kunci
+ Impor kunci

Untuk contoh cara menggunakan atribut kunci, lihat[Contoh kode untuk pustaka AWS CloudHSM perangkat lunak untuk Java untuk Klien SDK 5](java-samples.md).

**Topics**
+ [Memahami atribut](#java-understanding-attributes_5)
+ [Atribut yang didukung](#java-attributes_5)
+ [Menyetel atribut untuk kunci](#java-setting-attributes_5)

## Memahami atribut
<a name="java-understanding-attributes_5"></a>

Gunakan atribut kunci untuk menentukan tindakan apa yang diizinkan pada objek utama, termasuk kunci publik, pribadi, atau rahasia. Atribut dan nilai kunci didefinisikan selama operasi pembuatan objek utama. 

Ekstensi Kriptografi Java (JCE) tidak menentukan bagaimana Anda harus menetapkan nilai pada atribut kunci, sehingga sebagian besar tindakan diizinkan secara default. Sebaliknya, PKCS \$1 11 standar menentukan satu set lengkap atribut dengan default lebih ketat. Dimulai dengan penyedia JCE 3.1, AWS CloudHSM menyediakan ekstensi eksklusif yang memungkinkan Anda menetapkan nilai yang lebih ketat untuk atribut yang umum digunakan. 

## Atribut yang didukung
<a name="java-attributes_5"></a>

Anda dapat mengatur nilai untuk atribut yang tercantum dalam tabel berikut. Sebagai praktik terbaik, tetapkan hanya nilai untuk atribut yang ingin Anda buat ketat. Jika Anda tidak menentukan nilai, AWS CloudHSM menggunakan nilai default yang ditentukan dalam tabel di bawah ini. Sel kosong di kolom Nilai Default menunjukkan bahwa tidak ada nilai default tertentu yang ditetapkan untuk atribut.


****  

| Atribut | Nilai Default | Catatan |  | Kunci simetris | Kunci Publik dalam Pasangan Kunci | Kunci Privat dalam Pasangan Kunci |  | 
| --- | --- | --- | --- | --- | --- | --- | --- | 
| DECRYPT | TRUE |  | TRUE | Benar menunjukkan Anda dapat menggunakan kunci untuk mendekripsi penyangga apa pun. Anda biasanya menyetel ini ke FALSE untuk kunci yang WRAPNYA disetel ke true.  | 
| DERIVE |  |  |  | Memungkinkan kunci untuk digunakan untuk mendapatkan kunci lainnya. | 
| ENCRYPT | TRUE | TRUE |  | Benar menunjukkan Anda dapat menggunakan kunci untuk mengenkripsi penyangga apa pun. | 
| EXTRACTABLE | TRUE |  | TRUE | Benar menunjukkan Anda dapat mengekspor kunci ini keluar dari HSM. | 
| ID |  |  |  | Nilai yang ditentukan pengguna yang digunakan untuk mengidentifikasi kunci. | 
| KEY\$1TYPE |  |  |  | Digunakan untuk mengidentifikasi jenis kunci (AES,, rahasia generik DESede, EC, atau RSA). | 
| LABEL |   |  |  | String yang ditentukan pengguna memungkinkan Anda mengidentifikasi kunci dengan mudah pada HSM Anda. Untuk mengikuti praktik terbaik, gunakan label unik untuk setiap tombol sehingga lebih mudah ditemukan nanti. | 
| LOCAL |  |  |  | Menunjukkan kunci yang dihasilkan oleh HSM. | 
| OBJECT\$1CLASS |  |  |  | Digunakan untuk mengidentifikasi Object Class dari kunci (SecretKey, PublicKey atau PrivateKey). | 
| PRIVATE | TRUE | TRUE | TRUE | Benar menunjukkan bahwa pengguna tidak dapat mengakses kunci sampai pengguna diautentikasi. Untuk kejelasan, pengguna tidak dapat mengakses kunci apa pun AWS CloudHSM sampai mereka diautentikasi, bahkan jika atribut ini disetel ke FALSE. | 
| SIGN | TRUE |  | TRUE | Benar menunjukkan Anda dapat menggunakan kunci untuk menandatangani digest pesan. Hal ini umumnya diatur ke FALSE untuk kunci publik dan kunci privat yang telah Anda arsipkan. | 
| SIZE |  |  |  | Atribut yang mendefinisikan ukuran kunci. Untuk detail selengkapnya tentang ukuran kunci yang didukung, lihat [Mekanisme yang didukung untuk SDK Klien 5](https://docs.aws.amazon.com/cloudhsm/latest/userguide/java-lib-supported_5.html#java-keys_5). | 
| TOKEN | FALSE | FALSE | FALSE |  Kunci permanen yang direplikasi HSMs di semua klaster dan disertakan dalam cadangan. TOKEN = FALSE menyiratkan kunci sementara yang secara otomatis dihapus ketika koneksi ke HSM rusak atau keluar.  | 
| UNWRAP | TRUE |  | TRUE | Benar menunjukkan Anda dapat menggunakan kunci untuk membungkus kunci lain. | 
| VERIFY | TRUE | TRUE |  | Benar menunjukkan Anda dapat menggunakan kunci untuk menandatangani digest pesan. Hal ini umumnya diatur ke FALSE untuk kunci privat. | 
| WRAP | TRUE | TRUE |  | Benar menunjukkan Anda dapat menggunakan kunci untuk membungkus kunci lain. Anda biasanya akan mengatur ini ke FALSE untuk kunci privat. | 
| WRAP\$1WITH\$1TRUSTED | FALSE |  | FALSE | True menunjukkan kunci hanya dapat dibungkus dan dibuka dengan kunci yang memiliki TRUSTED atribut disetel ke true. Setelah kunci WRAP\$1WITH\$1TRUSTED disetel ke true, atribut itu hanya-baca dan tidak dapat disetel ke false. Untuk membaca tentang pembungkus kepercayaan, lihat [Menggunakan kunci tepercaya untuk mengontrol pembukaan kunci](https://docs.aws.amazon.com/cloudhsm/latest/userguide/cloudhsm_using_trusted_keys_control_key_wrap.html). | 

**catatan**  
Anda mendapatkan dukungan yang lebih luas untuk atribut di pustaka PKCS \$111. Untuk informasi lebih lanjut, lihat [Atribut PKCS \$111 yang Didukung](pkcs11-attributes.md).

## Menyetel atribut untuk kunci
<a name="java-setting-attributes_5"></a>

`KeyAttributesMap`adalah objek seperti Peta Java, yang dapat Anda gunakan untuk mengatur nilai atribut untuk objek kunci. Metode untuk fungsi `KeyAttributesMap` yang mirip dengan metode yang digunakan untuk manipulasi peta Java. 

Untuk mengatur nilai kustom pada atribut, Anda memiliki dua opsi:
+ Gunakan metode yang tercantum dalam tabel berikut
+ Gunakan pola pembangun yang ditunjukkan kemudian dalam dokumen ini

Atribut peta objek mendukung metode berikut untuk mengatur atribut:


****  

| Operasi | Nilai Pengembalian | Metode `KeyAttributesMap` | 
| --- | --- | --- | 
| Dapatkan nilai atribut kunci untuk kunci yang ada | Obyek (berisi nilai) atau nol |  **get**(keyAttribute)  | 
| Isi nilai satu atribut kunci  | Nilai sebelumnya terkait dengan atribut kunci, atau nol jika tidak ada pemetaan untuk atribut kunci |  **put**(keyAttribute, value)  | 
| Isi nilai untuk beberapa atribut kunci | N/A |  **putAll** () keyAttributesMap  | 
| Hapus pasangan nilai kunci dari peta atribut |  Nilai sebelumnya terkait dengan atribut kunci, atau *nol* jika tidak ada pemetaan untuk atribut kunci  |  **remove**(keyAttribute)  | 

**catatan**  
Setiap atribut yang tidak secara eksplisit Anda tentukan diatur ke default yang tercantum dalam tabel sebelumnya di [Atribut yang didukung](#java-attributes_5). 

### Menetapkan atribut untuk key pair
<a name="java-setting-attributes-key-pair"></a>

Gunakan kelas Java `KeyPairAttributesMap` untuk menangani atribut kunci untuk pasangan kunci. `KeyPairAttributesMap` merangkum dua objek `KeyAttributesMap`; satu untuk kunci publik dan satu untuk kunci privat.

Untuk mengatur atribut individu untuk kunci publik dan kunci privat secara terpisah, Anda dapat menggunakan metode `put()` pada objek peta `KeyAttributes` yang terkait untuk kunci itu. Gunakan metode `getPublic()` untuk mengambil peta atribut untuk kunci publik, dan gunakan `getPrivate()` untuk mengambil peta atribut untuk kunci privat. Isi nilai dari beberapa atribut kunci bersama-sama untuk kedua pasangan kunci publik dan privat menggunakan `putAll()` dengan peta atribut pasangan kunci sebagai argumen.

# Contoh kode untuk pustaka AWS CloudHSM perangkat lunak untuk Java untuk Klien SDK 5
<a name="java-samples"></a>

Topik ini menyediakan sumber daya dan informasi tentang contoh kode Java untuk AWS CloudHSM Client SDK 5.

## Prasyarat
<a name="java-samples-prereqs_5"></a>

 Sebelum menjalankan sampel, Anda harus mengatur lingkungan Anda:
+ Instal dan konfigurasikan penyedia [Java Cryptographic Extension (JCE)](java-library-install_5.md#install-java-library_5). 
+ Siapkan [nama pengguna HSM dan kata sandi](manage-hsm-users.md) yang valid. Izin pengguna kriptografi (CU) cukup untuk tugas-tugas ini. Aplikasi Anda menggunakan kredensial ini untuk login ke HSM di setiap contoh.
+ Tentukan cara memberikan kredensial ke [penyedia JCE](java-library-install_5.md#java-library-credentials_5).

## Sampel Kode
<a name="java-samples-code_5"></a>

Sampel kode berikut menunjukkan cara menggunakan [penyedia JCE AWS CloudHSM](java-library.md) untuk melakukan tugas dasar. Lebih banyak contoh kode tersedia di [GitHub](https://github.com/aws-samples/aws-cloudhsm-jce-examples/tree/sdk5).
+ [Masuk ke HSM](https://github.com/aws-samples/aws-cloudhsm-jce-examples/blob/sdk5/src/main/java/com/amazonaws/cloudhsm/examples/LoginRunner.java)
+ [Kelola kunci](https://github.com/aws-samples/aws-cloudhsm-jce-examples/blob/sdk5/src/main/java/com/amazonaws/cloudhsm/examples/KeyUtilitiesRunner.java)
+ [Hasilkan Kunci Simetris](https://github.com/aws-samples/aws-cloudhsm-jce-examples/blob/sdk5/src/main/java/com/amazonaws/cloudhsm/examples/SymmetricKeys.java)
+ [Hasilkan Kunci Asimetris](https://github.com/aws-samples/aws-cloudhsm-jce-examples/blob/sdk5/src/main/java/com/amazonaws/cloudhsm/examples/AsymmetricKeys.java)
+ [Enkripsi dan dekripsi dengan AES-GCM](https://github.com/aws-samples/aws-cloudhsm-jce-examples/blob/sdk5/src/main/java/com/amazonaws/cloudhsm/examples/AESGCMEncryptDecryptRunner.java)
+ [Enkripsi dan dekripsi dengan AES-CTR](https://github.com/aws-samples/aws-cloudhsm-jce-examples/blob/sdk5/src/main/java/com/amazonaws/cloudhsm/examples/AESCTREncryptDecryptRunner.java)
+ [Enkripsi dan dekripsi dengan DESede](https://github.com/aws-samples/aws-cloudhsm-jce-examples/blob/sdk5/src/main/java/com/amazonaws/cloudhsm/examples/DESedeECBEncryptDecryptRunner.java) -ECB lihat catatan [1](#java-samples-code-5-note-1)
+ [Masuk dan Verifikasi dengan Kunci RSA](https://github.com/aws-samples/aws-cloudhsm-jce-examples/blob/sdk5/src/main/java/com/amazonaws/cloudhsm/examples/RSAOperationsRunner.java)
+ [Masuk dan Verifikasi dengan Kunci EC](https://github.com/aws-samples/aws-cloudhsm-jce-examples/blob/sdk5/src/main/java/com/amazonaws/cloudhsm/examples/ECOperationsRunner.java)
+ [Gunakan atribut kunci yang didukung](https://github.com/aws-samples/aws-cloudhsm-jce-examples/blob/sdk5/src/main/java/com/amazonaws/cloudhsm/examples/KeyAttributesRunner.java)
+ [Gunakan toko kunci CloudHSM](https://github.com/aws-samples/aws-cloudhsm-jce-examples/blob/sdk5/src/main/java/com/amazonaws/cloudhsm/examples/KeyStoreExampleRunner.java)

[1] Sesuai dengan panduan NIST, ini tidak diizinkan untuk cluster dalam mode FIPS setelah 2023. Untuk cluster dalam mode non-FIPS, masih diperbolehkan setelah 2023. Lihat [Kepatuhan FIPS 140: Penutupan Mekanisme 2024](compliance-dep-notif.md#compliance-dep-notif-1) untuk rincian selengkapnya.

# AWS CloudHSM JCE penyedia Javadocs
<a name="java-javadocs_5"></a>

Gunakan penyedia JCE Javadocs untuk mendapatkan informasi penggunaan tentang jenis dan metode Java yang ditentukan dalam AWS CloudHSM JCE SDK. Untuk mengunduh Javadocs terbaru AWS CloudHSM, lihat [AWS CloudHSM rilis SDK Klien terbaru](latest-releases.md) bagian di halaman Unduhan.

Anda dapat mengimpor Javadocs ke lingkungan pengembangan terintegrasi (IDE) atau melihatnya di browser web.

# AWS CloudHSM KeyStore Kelas Java untuk Client SDK 5
<a name="alternative-keystore_5"></a>

 AWS CloudHSM `KeyStore`Kelas ini menyediakan toko PKCS12 kunci tujuan khusus. Penyimpanan kunci ini dapat menyimpan sertifikat bersama dengan data kunci Anda dan menghubungkannya dengan data kunci yang disimpan di AWS CloudHSM. AWS CloudHSM `KeyStore`Kelas mengimplementasikan `KeyStore` Service Provider Interface (SPI) dari Java Cryptography Extension (JCE). Untuk informasi selengkapnya tentang penggunaan`KeyStore`, lihat [Kelas KeyStore](https://devdocs.io/openjdk~8/java/security/keystore).

**catatan**  
Karena sertifikat adalah informasi publik, dan untuk memaksimalkan kapasitas penyimpanan untuk kunci kriptografi, AWS CloudHSM tidak mendukung penyimpanan sertifikat. HSMs

## Pilih penyimpanan kunci yang sesuai untuk AWS CloudHSM Client SDK 5
<a name="choosing_keystore_5"></a>

Penyedia AWS CloudHSM Java Cryptographic Extension (JCE) menawarkan AWS CloudHSM tujuan khusus. KeyStore AWS CloudHSM `KeyStore`Kelas ini mendukung pembongkaran operasi kunci ke HSM, penyimpanan lokal sertifikat dan operasi berbasis sertifikat.

Muat CloudHSM tujuan khusus sebagai berikut: KeyStore 

```
KeyStore ks = KeyStore.getInstance("CloudHSM")
```

## Inisialisasi SDK AWS CloudHSM KeyStore Klien 5
<a name="initialize_cloudhsm_keystore_5"></a>

Masuk ke cara AWS CloudHSM KeyStore yang sama seperti Anda masuk ke penyedia JCE. Anda dapat menggunakan variabel lingkungan atau file properti sistem, dan Anda harus masuk sebelum mulai menggunakan CloudHSM KeyStore. Untuk contoh masuk ke HSM menggunakan penyedia JCE, lihat [Masuk ke HSM](https://github.com/aws-samples/aws-cloudhsm-jce-examples/blob/sdk5/src/main/java/com/amazonaws/cloudhsm/examples/LoginRunner.java).

Jika diinginkan, Anda dapat menentukan kata sandi untuk mengenkripsi PKCS12 file lokal yang menyimpan data penyimpanan kunci. Saat Anda membuat AWS CloudHSM Keystore, Anda mengatur kata sandi dan memberikannya saat menggunakan metode pemuatan, atur, dan dapatkan.

Buat instance objek CloudHSM baru sebagai berikut: KeyStore 

```
ks.load(null, null);
```

Tulis data penyimpanan kunci ke file menggunakan metode `store`. Sejak saat itu, Anda dapat memuat penyimpanan kunci yang ada menggunakan metode `load` dengan file sumber dan kata sandi sebagai berikut: 

```
ks.load(inputStream, password);
```

## Gunakan AWS CloudHSM KeyStore atau AWS CloudHSM Klien SDK 5
<a name="using_cloudhsm_keystore_5"></a>

AWS CloudHSM KeyStore sesuai dengan KeyStore spesifikasi JCE [Class](https://devdocs.io/openjdk~8/java/security/keystore) dan menyediakan fungsi-fungsi berikut.
+ `load`

  Memuat penyimpanan kunci dari pengaliran input yang diberikan. Jika kata sandi ditetapkan saat menyimpan penyimpanan kunci, kata sandi yang sama ini harus disediakan agar pemuatan berhasil. Atur kedua parameter ke null untuk menginisialisasi sebuah penyimpanan kunci kosong baru.

  ```
  KeyStore ks = KeyStore.getInstance("CloudHSM");
  ks.load(inputStream, password);
  ```
+ `aliases`

  Mengembalikan penghitungan nama alias dari semua entri dalam contoh instans penyimpanan kunci yang diberikan. Hasil termasuk objek yang disimpan secara lokal dalam PKCS12 file dan objek yang tinggal di HSM. 

  **Contoh kode:**

  ```
  KeyStore ks = KeyStore.getInstance("CloudHSM");
  for(Enumeration<String> entry = ks.aliases(); entry.hasMoreElements();) {    
      String label = entry.nextElement();    
      System.out.println(label);
  }
  ```
+ `containsalias`

  Mengembalikan nilai true jika penyimpanan kunci memiliki akses ke setidaknya satu objek dengan alias yang ditentukan. Toko kunci memeriksa objek yang disimpan secara lokal dalam PKCS12 file dan objek yang tinggal di HSM.
+ `deleteEntry`

  Menghapus entri sertifikat dari PKCS12 file lokal. Menghapus data kunci yang disimpan dalam HSM tidak didukung menggunakan file. AWS CloudHSM KeyStore Anda dapat menghapus kunci menggunakan `destroy` metode antarmuka [Destroyable](https://devdocs.io/openjdk~8/javax/security/auth/destroyable#destroy--).

  ```
  ((Destroyable) key).destroy();
  ```
+ `getCertificate`

  Mengembalikan sertifikat yang terkait dengan alias jika tersedia. Jika alias tidak ada atau mereferensikan objek yang bukan sertifikat, fungsi mengembalikan NULL. 

  ```
  KeyStore ks = KeyStore.getInstance("CloudHSM");
  Certificate cert = ks.getCertificate(alias);
  ```
+ `getCertificateAlias`

  Mengembalikan nama (alias) dari entri penyimpanan kunci pertama yang datanya cocok dengan sertifikat yang diberikan. 

  ```
  KeyStore ks = KeyStore.getInstance("CloudHSM");
  String alias = ks.getCertificateAlias(cert);
  ```
+ `getCertificateChain`

  Mengembalikan rantai sertifikat yang terkait dengan alias yang diberikan. Jika alias tidak ada atau mereferensikan objek yang bukan sertifikat, fungsi mengembalikan NULL. 
+ `getCreationDate`

  Mengembalikan tanggal pembuatan entri yang diidentifikasi oleh alias yang diberikan. Jika tanggal pembuatan tidak tersedia, fungsi mengembalikan tanggal saat sertifikat menjadi valid.
+ `getKey`

  GetKey diteruskan ke HSM dan mengembalikan objek kunci yang sesuai dengan label yang diberikan. Seperti yang `getKey` secara langsung menanyakan HSM, itu dapat digunakan untuk kunci apa pun pada HSM terlepas dari apakah itu dihasilkan oleh. KeyStore 

  ```
  Key key = ks.getKey(keyLabel, null);
  ```
+ `isCertificateEntry`

  Memeriksa apakah entri dengan alias yang diberikan merupakan entri sertifikat. 
+ `isKeyEntry`

  Memeriksa apakah entri dengan alias yang diberikan merupakan entri kunci. Tindakan mencari PKCS12 file dan HSM untuk alias. 
+ `setCertificateEntry`

  Menetapkan sertifikat yang diberikan untuk alias yang diberikan. Jika alias yang diberikan sudah digunakan untuk me ngidentifikasi kunci atau sertifikat,`KeyStoreException`dikeluarkan. Anda dapat menggunakan kode JCE untuk mendapatkan objek kunci dan kemudian menggunakan KeyStore `SetKeyEntry` metode untuk mengaitkan sertifikat ke kunci.
+ `setKeyEntry` dengan `byte[]` kunci

  **API ini saat ini tidak didukung dengan Client SDK 5.**
+ `setKeyEntry` dengan objek `Key`

  Menetapkan kunci yang diberikan untuk alias yang diberikan dan menyimpannya di dalam HSM. Jika kunci belum ada di dalam HSM, itu akan diimpor ke HSM sebagai kunci sesi yang dapat diekstraksi.

  Jika objek `Key` adalah tipe `PrivateKey`, objek harus disertai dengan rantai sertifikat yang sesuai. 

  Jika alias sudah ada, panggilan `SetKeyEntry` mengeluarkan `KeyStoreException` dan mencegah kunci ditimpa. Jika kunci harus ditimpa, gunakan KMU atau JCE untuk tujuan itu. 
+ `engineSize`

  Mengembalikan jumlah entri dalam penyimpanan kunci.
+ `store`

  Menyimpan penyimpanan kunci ke aliran output yang diberikan sebagai PKCS12 file dan mengamankannya dengan kata sandi yang diberikan. Selain itu, semua kunci dimuat tetap ada (yang ditetapkan menggunakan panggilan`setKey`).

# Konfigurasi lanjutan untuk AWS CloudHSM JCE untuk Client SDK 5
<a name="java-lib-configs"></a>

Penyedia AWS CloudHSM JCE menyertakan konfigurasi lanjutan berikut, yang bukan merupakan bagian dari konfigurasi umum yang digunakan sebagian besar pelanggan.
+ [Menghubungkan ke beberapa cluster](java-lib-configs-multi.md)
+ [Ekstraksi kunci menggunakan JCE](java-lib-configs-getencoded.md)
+ [Coba lagi konfigurasi untuk JCE](java-lib-configs-retry.md)

# Menghubungkan ke beberapa AWS CloudHSM cluster dengan penyedia JCE
<a name="java-lib-configs-multi"></a>

Konfigurasi ini memungkinkan instance klien tunggal untuk berkomunikasi ke beberapa AWS CloudHSM cluster. Dibandingkan dengan memiliki satu instance yang hanya berkomunikasi dengan satu cluster, ini bisa menjadi fitur penghematan biaya untuk beberapa kasus penggunaan. `CloudHsmProvider`Kelas ini adalah AWS CloudHSM implementasi dari [kelas Provider Java Security](https://docs.oracle.com/javase/8/docs/api/java/security/Provider.html). 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());
}
```

`CloudHsmProvider`dapat dikonfigurasi dengan dua cara:

1. Konfigurasikan dengan file (konfigurasi default)

1. Konfigurasikan menggunakan kode

Topik berikut menjelaskan konfigurasi ini, dan cara menghubungkan ke beberapa cluster.

**Topics**
+ [Konfigurasikan AWS CloudHSM `CloudHsmProvider` kelas dengan file (Konfigurasi default)](java-lib-configs-default.md)
+ [Konfigurasikan AWS CloudHSM `CloudHsmProvider` kelas menggunakan kode](java-lib-configs-using-code.md)
+ [Connect ke beberapa AWS CloudHSM cluster](java-lib-connecting-to-multiclusters.md)

# Konfigurasikan AWS CloudHSM `CloudHsmProvider` kelas dengan file (Konfigurasi default)
<a name="java-lib-configs-default"></a>

Cara default untuk mengkonfigurasi AWS CloudHSM `CloudHsmProvider` kelas adalah dengan file.

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 file`configure-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 AWS CloudHSM `CloudHsmProvider` kelas menggunakan kode
<a name="java-lib-configs-using-code"></a>

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

`CloudHsmProvider`memiliki konstruktor lain yang mengambil `CloudHsmProviderConfig` objek, seperti contoh berikut menunjukkan.

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

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

**Example**  

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

# Connect ke beberapa AWS CloudHSM cluster
<a name="java-lib-connecting-to-multiclusters"></a>

Masing-masing `CloudHsmProvider` mewakili koneksi ke AWS 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.

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

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 berbicara`cluster1`, Anda dapat menggunakan sampel berikut untuk AES/GCM/NoPadding operasi:

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

# Ekstraksi kunci menggunakan JCE untuk AWS CloudHSM
<a name="java-lib-configs-getencoded"></a>

Java Cryptography Extension (JCE) menggunakan arsitektur yang memungkinkan implementasi kriptografi yang berbeda untuk dicolokkan. AWS CloudHSM mengirimkan salah satu penyedia JCE yang menurunkan operasi kriptografi ke HSM. Agar sebagian besar penyedia JCE lainnya dapat bekerja dengan kunci yang disimpan di AWS CloudHSM, mereka harus mengekstrak byte kunci HSMs dari teks bening Anda ke dalam memori mesin Anda untuk digunakan. HSMs biasanya hanya mengizinkan kunci untuk diekstraksi sebagai objek yang dibungkus, bukan teks yang jelas. Namun, untuk mendukung kasus penggunaan integrasi antar-penyedia, AWS CloudHSM memungkinkan opsi konfigurasi opt-in untuk mengaktifkan ekstraksi byte kunci secara jelas.

**penting**  
JCE membongkar operasi ke AWS CloudHSM setiap kali penyedia AWS CloudHSM ditentukan atau AWS CloudHSM objek kunci digunakan. Anda tidak perlu mengekstrak kunci dengan jelas jika Anda mengharapkan operasi Anda terjadi di dalam HSM. Ekstraksi kunci dalam teks yang jelas hanya diperlukan ketika aplikasi Anda tidak dapat menggunakan mekanisme aman seperti membungkus dan membuka kunci karena pembatasan dari perpustakaan pihak ketiga atau penyedia JCE. 

Penyedia AWS CloudHSM JCE memungkinkan ekstraksi **kunci publik** untuk bekerja dengan penyedia JCE eksternal secara default. Metode berikut selalu diperbolehkan:


| Kelas | Metode | Format (GetEncoded) | 
| --- | --- | --- | 
| EcPublicKey | getEncoded () | X.509 | 
|  | GetW () | N/A | 
| RSAPublicKunci | getEncoded () | X.509 | 
|  | getPublicExponent() | N/A | 
| CloudHsmRsaPrivateCrtKey | getPublicExponent() | N/A | 

Penyedia AWS CloudHSM JCE tidak mengizinkan ekstraksi byte kunci secara jelas untuk kunci **pribadi** atau **rahasia secara** default. Jika kasus penggunaan Anda memerlukannya, Anda dapat mengaktifkan ekstraksi byte kunci secara jelas untuk kunci **pribadi** atau **rahasia** dalam kondisi berikut:

1. `EXTRACTABLE`Atribut untuk kunci pribadi dan rahasia diatur ke **true**.
   + Secara default, `EXTRACTABLE` atribut untuk kunci pribadi dan rahasia diatur ke **true**. `EXTRACTABLE`kunci adalah kunci yang diizinkan untuk diekspor keluar dari HSM. Untuk informasi selengkapnya, lihat Atribut Java yang didukung untuk [SDK Klien 5](java-lib-attributes_5.md).

1. `WRAP_WITH_TRUSTED`Atribut untuk kunci pribadi dan rahasia diatur ke **false**.
   + `getEncoded`,`getPrivateExponent`, dan `getS` tidak dapat digunakan dengan kunci pribadi yang tidak dapat diekspor dengan jelas. `WRAP_WITH_TRUSTED`tidak mengizinkan kunci pribadi Anda untuk diekspor keluar dari HSM dengan jelas. Untuk informasi selengkapnya, lihat [Menggunakan kunci tepercaya untuk mengontrol pembukaan kunci.](manage-keys-using-trusted-keys.md)

# Izinkan penyedia JCE untuk mengekstrak rahasia kunci pribadi dari AWS CloudHSM
<a name="get-encoded-take-out-private-keys"></a>

Gunakan langkah-langkah berikut untuk memungkinkan penyedia AWS CloudHSM JCE mengekstrak rahasia kunci pribadi Anda.

**penting**  
Perubahan konfigurasi ini memungkinkan ekstraksi semua byte `EXTRACTABLE` kunci secara jelas dari cluster HSM Anda. Untuk keamanan yang lebih baik, Anda harus mempertimbangkan untuk menggunakan [metode pembungkus kunci](java-lib-supported_5.md) untuk mengekstrak kunci dari HSM dengan aman. Ini mencegah ekstraksi byte kunci Anda yang tidak disengaja dari HSM. 

1. Gunakan perintah berikut untuk mengaktifkan kunci **pribadi** atau **rahasia** Anda untuk diekstraksi di JCE:

------
#### [ Linux ]

   ```
   $ /opt/cloudhsm/bin/configure-jce --enable-clear-key-extraction-in-software
   ```

------
#### [ Windows ]

   ```
   PS C:\> & "C:\Program Files\Amazon\CloudHSM\bin\configure-jce.exe" --enable-clear-key-extraction-in-software
   ```

------

1. Setelah Anda mengaktifkan ekstraksi kunci yang jelas, metode berikut diaktifkan untuk mengekstrak kunci pribadi ke dalam memori.    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/cloudhsm/latest/userguide/get-encoded-take-out-private-keys.html)

Jika Anda ingin mengembalikan perilaku default dan tidak mengizinkan JCE untuk mengekspor kunci dengan jelas, jalankan perintah berikut:

------
#### [ Linux ]

```
$ /opt/cloudhsm/bin/configure-jce --disable-clear-key-extraction-in-software
```

------
#### [ Windows ]

```
PS C:\> & "C:\Program Files\Amazon\CloudHSM\bin\configure-jce.exe" --disable-clear-key-extraction-in-software
```

------

# Coba lagi perintah untuk JCE untuk AWS CloudHSM
<a name="java-lib-configs-retry"></a>

AWS CloudHSM Client SDK 5.8.0 dan yang lebih baru memiliki strategi coba ulang otomatis bawaan yang akan mencoba kembali operasi HSM-throttled dari sisi klien. Ketika HSM membatasi operasi karena terlalu sibuk melakukan operasi sebelumnya dan tidak dapat menerima lebih banyak permintaan, klien SDKs akan mencoba kembali operasi yang dibatasi hingga 3 kali sementara mundur secara eksponensial. Strategi coba ulang otomatis ini dapat diatur ke salah satu dari dua mode: **off** dan **standar**.
+ **off**: SDK Klien tidak akan melakukan strategi coba ulang apa pun untuk operasi yang dibatasi oleh HSM.
+ **standard**: Ini adalah mode default untuk Client SDK 5.8.0 dan yang lebih baru. Dalam mode ini, klien SDKs akan secara otomatis mencoba kembali operasi yang dibatasi dengan mundur secara eksponensial.

Untuk informasi selengkapnya, lihat [Pelambatan HSM](troubleshoot-hsm-throttling.md).

## Setel perintah coba lagi ke mode mati
<a name="w2aac25c21c25c25c15b9"></a>

------
#### [ Linux ]

**Untuk mengatur perintah coba lagi **off** untuk Client SDK 5 di Linux**
+ Anda dapat menggunakan perintah berikut untuk mengatur konfigurasi coba lagi ke **off** mode:

  ```
  $ sudo /opt/cloudhsm/bin/configure-jce --default-retry-mode off
  ```

------
#### [ Windows ]

**Untuk mengatur perintah coba lagi **off** untuk Client SDK 5 pada Windows**
+ Anda dapat menggunakan perintah berikut untuk mengatur konfigurasi coba lagi ke **off** mode:

  ```
  PS C:\> & "C:\Program Files\Amazon\CloudHSM\bin\configure-jce.exe" --default-retry-mode off
  ```

------

