

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

# Migrasi dari SDK AWS CloudHSM Klien 3 ke SDK Klien 5
<a name="client-sdk-migration"></a>

Pada tahun AWS CloudHSM, aplikasi pelanggan melakukan operasi kriptografi menggunakan AWS CloudHSM Client Software Development Kit (SDK). Client SDK 5 adalah SDK utama yang terus memiliki fitur baru dan dukungan platform yang ditambahkan ke dalamnya.

Client SDK 3 mencakup dua alat baris perintah terpisah: CMU untuk mengelola pengguna dan KMU untuk mengelola kunci dan melakukan operasi dengan kunci. Klien SDK 5 mengkonsolidasikan fungsi CMU dan KMU (alat yang ditawarkan dengan Client SDK 3) ke dalam satu alat, yaitu. [AWS CloudHSM Antarmuka Baris Perintah (CLI)](cloudhsm_cli.md) Operasi manajemen pengguna dapat ditemukan di bawah subperintah [Kategori pengguna di CloudHSM CLI](cloudhsm_cli-user.md) dan[Kategori kuorum di CloudHSM CLI](cloudhsm_cli-qm.md). Operasi manajemen kunci dapat ditemukan di bawah [subperintah kunci](cloudhsm_cli-key.md), dan operasi kriptografi dapat ditemukan di bawah subperintah [crypto](cloudhsm_cli-crypto.md). Lihat [Referensi untuk perintah CloudHSM CLI](cloudhsm_cli-reference.md) daftar lengkap perintah.

Untuk manfaat migrasi, lihat[Manfaat SDK AWS CloudHSM Klien 5](client-sdk-5-benefits.md).

Lihat topik berikut untuk petunjuk terperinci tentang migrasi dari SDK Klien 3 ke SDK Klien 5. Versi terbaru AWS CloudHSM Client SDK adalah 5.16.
+ [Migrasi pustaka AWS CloudHSM PKCS \$111 Anda dari Client SDK 3 ke Client SDK 5](pkcs11-migrate-to-sdk-5.md)
+ [Migrasikan OpenSSL Dynamic Engine Anda AWS CloudHSM dari Client SDK 3 ke Client SDK 5](openssl-migrate-to-sdk-5.md)
+ [Migrasikan Penyedia Penyimpanan Kunci (KSP) Anda dari SDK AWS CloudHSM Klien 3 ke SDK Klien 5](ksp-migrate-to-sdk-5.md)
+ [Migrasikan penyedia JCE Anda dari AWS CloudHSM Client SDK 3 ke Client SDK 5](java-lib-migrate_to_sdk5.md)

Untuk fungsionalitas atau kasus penggunaan yang tidak didukung oleh CloudHSM CLI, hubungi. [AWS Dukungan](https://support.console.aws.amazon.com/support/home#/)

# Migrasi pustaka AWS CloudHSM PKCS \$111 Anda dari Client SDK 3 ke Client SDK 5
<a name="pkcs11-migrate-to-sdk-5"></a>

Gunakan topik ini untuk memigrasikan [pustaka AWS CloudHSM PKCS \$111](pkcs11-library.md) Anda dari SDK Klien 3 ke SDK Klien 5. Untuk manfaat migrasi, lihat[Manfaat SDK AWS CloudHSM Klien 5](client-sdk-5-benefits.md).

Pada tahun AWS CloudHSM, aplikasi pelanggan melakukan operasi kriptografi menggunakan AWS CloudHSM Client Software Development Kit (SDK). Client SDK 5 adalah SDK utama yang terus memiliki fitur baru dan dukungan platform yang ditambahkan ke dalamnya.

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

## Bersiaplah dengan mengatasi perubahan yang melanggar
<a name="w2aac25c19c15b9"></a>

Tinjau perubahan yang melanggar ini dan perbarui aplikasi Anda di lingkungan pengembangan yang sesuai.

### Mekanisme pembungkus telah berubah
<a name="w2aac25c19c15b9b5"></a>


****  

| Mekanisme SDK 3 klien | Mekanisme SDK 5 Klien Setara | 
| --- | --- | 
| `CKM_AES_KEY_WRAP` | `CKM_CLOUDHSM_AES_KEY_WRAP_PKCS5_PAD` | 
| `CKM_AES_KEY_WRAP_PAD` | `CKM_CLOUDHSM_AES_KEY_WRAP_ZERO_PAD` | 
| `CKM_CLOUDHSM_AES_KEY_WRAP_PKCS5_PAD` | `CKM_CLOUDHSM_AES_KEY_WRAP_PKCS5_PAD` | 
| `CKM_CLOUDHSM_AES_KEY_WRAP_NO_PAD` | `CKM_CLOUDHSM_AES_KEY_WRAP_NO_PAD` | 
| `CKM_CLOUDHSM_AES_KEY_WRAP_ZERO_PAD` | `CKM_CLOUDHSM_AES_KEY_WRAP_ZERO_PAD` | 

### ECDH
<a name="w2aac25c19c15b9b7"></a>

Di Client SDK 3, Anda dapat menggunakan ECDH dan menentukan KDF. Fungsionalitas ini saat ini tidak tersedia di Client SDK 5. Jika aplikasi Anda membutuhkan fungsi ini, silakan hubungi [dukungan](https://support.console.aws.amazon.com/support/home#/).

### Pegangan kunci sekarang khusus untuk sesi
<a name="w2aac25c19c15b9b9"></a>

Untuk berhasil menggunakan handel kunci di SDK Klien 5, Anda harus mendapatkan handel kunci setiap kali Anda menjalankan aplikasi. Jika Anda memiliki aplikasi yang ada yang akan menggunakan pegangan kunci yang sama di sesi yang berbeda, Anda harus memodifikasi kode Anda untuk mendapatkan pegangan kunci setiap kali Anda menjalankan aplikasi. Untuk informasi tentang mengambil pegangan kunci, lihat contoh [AWS CloudHSM PKCS \$111 ini](https://github.com/aws-samples/aws-cloudhsm-pkcs11-examples/blob/master/src/find_objects/find_objects.c). Perubahan ini sesuai dengan [spesifikasi PKCS \$111 2.40](http://docs.oasis-open.org/pkcs11/pkcs11-base/v2.40/os/pkcs11-base-v2.40-os.html#_Toc416959689).

## Migrasi ke SDK Klien 5
<a name="w2aac25c19c15c11"></a>

Ikuti petunjuk di bagian ini untuk bermigrasi dari Client SDK 3 ke Client SDK 5.

**catatan**  
Amazon Linux, Ubuntu 16.04, Ubuntu 18.04, CentOS 6, CentOS 8, dan RHEL 6 saat ini tidak didukung dengan Client SDK 5. Jika saat ini Anda menggunakan salah satu platform ini dengan Client SDK 3, Anda harus memilih platform yang berbeda saat bermigrasi ke Client SDK 5.

1. Copot pemasangan pustaka PKCS \$111 untuk Client SDK 3.

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

   ```
   $ sudo yum remove cloudhsm-client-pkcs11
   ```

------
#### [ CentOS 7 ]

   ```
   $ sudo yum remove cloudhsm-client-pkcs11
   ```

------
#### [ RHEL 7 ]

   ```
   $ sudo yum remove cloudhsm-client-pkcs11
   ```

------
#### [ RHEL 8 ]

   ```
   $ sudo yum remove cloudhsm-client-pkcs11
   ```

------
#### [ Ubuntu 16.04 LTS ]

   ```
   $ sudo apt remove cloudhsm-client-pkcs11
   ```

------
#### [ Ubuntu 18.04 LTS ]

   ```
   $ sudo apt remove cloudhsm-client-pkcs11
   ```

------

1. Hentikan Daemon Klien untuk SDK Klien 3.

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

   ```
   $ sudo service cloudhsm-client stop
   ```

------
#### [ CentOS 7 ]

   ```
   $ sudo service cloudhsm-client stop
   ```

------
#### [ RHEL 7 ]

   ```
   $ sudo service cloudhsm-client stop
   ```

------
#### [ RHEL 8 ]

   ```
   $ sudo service cloudhsm-client stop
   ```

------
#### [ Ubuntu 16.04 LTS ]

   ```
   $ sudo systemctl stop cloudhsm-client
   ```

------
#### [ Ubuntu 18.04 LTS ]

   ```
   $ sudo systemctl stop cloudhsm-client
   ```

------

1. Copot pemasangan Daemon Klien untuk SDK Klien 3.

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

   ```
   $ sudo yum remove cloudhsm-client
   ```

------
#### [ CentOS 7 ]

   ```
   $ sudo yum remove cloudhsm-client
   ```

------
#### [ RHEL 7 ]

   ```
   $ sudo yum remove cloudhsm-client
   ```

------
#### [ RHEL 8 ]

   ```
   $ sudo yum remove cloudhsm-client
   ```

------
#### [ Ubuntu 16.04 LTS ]

   ```
   $ sudo apt remove cloudhsm-client
   ```

------
#### [ Ubuntu 18.04 LTS ]

   ```
   $ sudo apt remove cloudhsm-client
   ```

------
**catatan**  
Konfigurasi khusus perlu diaktifkan lagi.

1. Instal pustaka PKCS \$111 Client SDK dengan mengikuti langkah-langkahnya. [Instal pustaka PKCS \$111 untuk AWS CloudHSM Client SDK 5](pkcs11-library-install.md)

1. Client SDK 5 memperkenalkan format file konfigurasi baru dan alat bootstrap baris perintah. Untuk mem-bootstrap pustaka Client SDK 5 PKCS \$111 Anda, ikuti petunjuk yang tercantum dalam panduan pengguna di bawah. [Bootstrap Klien SDK](cluster-connect.md#connect-how-to)

1. Di lingkungan pengembangan Anda, uji aplikasi Anda. Lakukan pembaruan pada kode yang ada untuk menyelesaikan perubahan yang melanggar sebelum migrasi terakhir Anda. 

## Topik terkait
<a name="pkcs11-migrate-to-sdk-5-seealso"></a>
+ [Praktik terbaik untuk AWS CloudHSM](best-practices.md)

# Migrasikan OpenSSL Dynamic Engine Anda AWS CloudHSM dari Client SDK 3 ke Client SDK 5
<a name="openssl-migrate-to-sdk-5"></a>

Gunakan topik ini untuk memigrasikan [OpenSSL Dynamic](openssl-library.md) Engine Anda AWS CloudHSM dari Client SDK 3 ke Client SDK 5. Untuk manfaat migrasi, lihat[Manfaat SDK AWS CloudHSM Klien 5](client-sdk-5-benefits.md).

Pada tahun AWS CloudHSM, aplikasi pelanggan melakukan operasi kriptografi menggunakan AWS CloudHSM Client Software Development Kit (SDK). Client SDK 5 adalah SDK utama yang terus memiliki fitur baru dan dukungan platform yang ditambahkan ke dalamnya.

**catatan**  
Pembuatan angka acak saat ini tidak didukung di Client SDK 5 dengan OpenSSL Dynamic Engine.

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

## Migrasi ke SDK Klien 5
<a name="w2aac25c19c17c11"></a>

Ikuti petunjuk di bagian ini untuk bermigrasi dari Client SDK 3 ke Client SDK 5.

**catatan**  
Amazon Linux, Ubuntu 16.04, Ubuntu 18.04, CentOS 6, CentOS 8, dan RHEL 6 saat ini tidak didukung dengan Client SDK 5. Jika saat ini Anda menggunakan salah satu platform ini dengan Client SDK 3, Anda harus memilih platform yang berbeda saat bermigrasi ke Client SDK 5.

1. Copot pemasangan OpenSSL Dynamic Engine untuk Client SDK 3.

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

   ```
   $ sudo yum remove cloudhsm-client-dyn
   ```

------
#### [ CentOS 7 ]

   ```
   $ sudo yum remove cloudhsm-client-dyn
   ```

------
#### [ RHEL 7 ]

   ```
   $ sudo yum remove cloudhsm-client-dyn
   ```

------
#### [ RHEL 8 ]

   ```
   $ sudo yum remove cloudhsm-client-dyn
   ```

------
#### [ Ubuntu 16.04 LTS ]

   ```
   $ sudo apt remove cloudhsm-client-dyn
   ```

------
#### [ Ubuntu 18.04 LTS ]

   ```
   $ sudo apt remove cloudhsm-client-dyn
   ```

------

1. Hentikan Daemon Klien untuk SDK Klien 3.

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

   ```
   $ sudo service cloudhsm-client stop
   ```

------
#### [ CentOS 7 ]

   ```
   $ sudo service cloudhsm-client stop
   ```

------
#### [ RHEL 7 ]

   ```
   $ sudo service cloudhsm-client stop
   ```

------
#### [ RHEL 8 ]

   ```
   $ sudo service cloudhsm-client stop
   ```

------
#### [ Ubuntu 16.04 LTS ]

   ```
   $ sudo systemctl stop cloudhsm-client
   ```

------
#### [ Ubuntu 18.04 LTS ]

   ```
   $ sudo systemctl stop cloudhsm-client
   ```

------

1. Copot pemasangan Daemon Klien untuk SDK Klien 3.

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

   ```
   $ sudo yum remove cloudhsm-client
   ```

------
#### [ CentOS 7 ]

   ```
   $ sudo yum remove cloudhsm-client
   ```

------
#### [ RHEL 7 ]

   ```
   $ sudo yum remove cloudhsm-client
   ```

------
#### [ RHEL 8 ]

   ```
   $ sudo yum remove cloudhsm-client
   ```

------
#### [ Ubuntu 16.04 LTS ]

   ```
   $ sudo apt remove cloudhsm-client
   ```

------
#### [ Ubuntu 18.04 LTS ]

   ```
   $ sudo apt remove cloudhsm-client
   ```

------
**catatan**  
Konfigurasi khusus perlu diaktifkan lagi.

1. Instal Client SDK OpenSSL Dynamic Engine dengan mengikuti langkah-langkahnya. [Instal OpenSSL Dynamic Engine AWS CloudHSM untuk Client SDK 5](openssl5-install.md)

1. Client SDK 5 memperkenalkan format file konfigurasi baru dan alat bootstrap baris perintah. Untuk bootstrap Client SDK 5 OpenSSL Dynamic Engine Anda, ikuti petunjuk yang tercantum dalam panduan pengguna di bawah. [Bootstrap Klien SDK](cluster-connect.md#connect-how-to)

1. Di lingkungan pengembangan Anda, uji aplikasi Anda. Lakukan pembaruan pada kode yang ada untuk menyelesaikan perubahan yang melanggar sebelum migrasi terakhir Anda. 

## Topik terkait
<a name="openssl-migrate-to-sdk-5-seealso"></a>
+ [Praktik terbaik untuk AWS CloudHSM](best-practices.md)

# Migrasikan Penyedia Penyimpanan Kunci (KSP) Anda dari SDK AWS CloudHSM Klien 3 ke SDK Klien 5
<a name="ksp-migrate-to-sdk-5"></a>

Topik ini menjelaskan cara memigrasikan [Penyedia Penyimpanan Kunci (KSP)](ksp-library.md) Anda dari SDK AWS CloudHSM Klien 3 ke SDK Klien 5. Versi terbaru AWS CloudHSM Client SDK adalah 5.16. Untuk informasi tentang manfaat migrasi, lihat[Manfaat SDK AWS CloudHSM Klien 5](client-sdk-5-benefits.md).

Di AWS CloudHSM, Anda menggunakan AWS CloudHSM Client Software Development Kit (SDK) untuk melakukan operasi kriptografi. Client SDK 5 adalah SDK utama yang menerima fitur baru dan pembaruan dukungan platform.

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

## Migrasi ke SDK Klien 5
<a name="ksp-migrate-steps"></a>

1. Hentikan Daemon Klien untuk SDK Klien 3.

   ```
   PS C:\> Stop-Service "AWS CloudHSM Client"
   ```

1. Instal Client SDK 5 Key Storage Provider (KSP) pada instance Windows Server Anda. Untuk petunjuk, lihat [Instal penyedia penyimpanan kunci (KSP) untuk AWS CloudHSM Client SDK 5](ksp-library-install.md).

1. Konfigurasikan Client SDK 5 Key Storage Provider (KSP) Anda menggunakan format file konfigurasi baru dan alat bootstrap baris perintah. Untuk petunjuk, lihat [Bootstrap Klien SDK](cluster-connect.md#connect-how-to).

1. Penyedia Penyimpanan Kunci (KSP) untuk AWS CloudHSM Klien SDK 5 menyertakan mode SDK3 kompatibilitas untuk mendukung file referensi utama yang dihasilkan di. SDK3 Untuk informasi selengkapnya, lihat [SDK3 mode kompatibilitas untuk Penyedia Penyimpanan Kunci (KSP) untuk AWS CloudHSM](ksp-library-configs-sdk3-compatibility-mode.md).
**catatan**  
Anda harus mengaktifkan mode SDK3 kompatibilitas saat menggunakan Client SDK 3 yang dihasilkan file referensi kunci dengan Client SDK 5.

## Migrasi ke instance Windows Server baru
<a name="ksp-migrate-new-windows"></a>

1. Selesaikan semua langkah di [Migrate to Client SDK 5](#ksp-migrate-steps) pada instance Windows Server baru Anda.

1. 

**Periksa file referensi kunci yang ada**  
Pada instance Windows Server asli Anda, periksa file referensi kunci di`C:\Users\Default\AppData\Roaming\Microsoft\Crypto\CaviumKSP\GlobalPartition`.
   + Jika file referensi kunci ada, salin semua konten di bawah `C:\Users\Default\AppData\Roaming\Microsoft\Crypto\CaviumKSP` termasuk `GlobalPartition` ke jalur direktori yang sama pada instance Windows Server baru Anda. Buat direktori jika tidak ada.
   + Jika file referensi kunci tidak ada, gunakan `cloudhsm-cli key generate-file --encoding ksp-key-reference` pada instance Windows Server baru Anda untuk membuatnya. Untuk petunjuk, lihat [Menghasilkan referensi kunci KSP (Windows)](cloudhsm_cli-key-generate-file.md#key-generate-ksp-key-reference).

1. 

**Verifikasi sertifikat root**  
Periksa sertifikat root Anda di otoritas sertifikasi root tepercaya:

   ```
   PS C:\Users\Administrator\Desktop> certutil -store Root
   
   Root "Trusted Root Certification Authorities"
   ================ Certificate 0 ================
   Serial Number: certificate-serial-number
   Issuer: CN=MYRootCA
    NotBefore: 2/5/2020 1:38 PM
    NotAfter: 2/5/2021 1:48 PM
    Issuer: CN=MYRootCA
   Signature matches Public Key
   Root Certificate: Subject matches Issuer
   Cert Hash(sha1): cert-hash
   No key provider information
   Cannot find the certificate and private key for decryption.
   CertUtil: -store command completed successfully.
   ```
**catatan**  
Perhatikan nomor seri sertifikat untuk digunakan pada langkah berikutnya.

1. 

**Ekspor sertifikat root**  
Ekspor sertifikat root ke file:

   ```
   certutil -store Root certificate-serial-number root-certificate-name.cer
   ```

1. 

**Verifikasi sertifikat HSM-backend**  
Periksa sertifikat HSM-backend Anda di toko sertifikat Pribadi:

   ```
   PS C:\Users\Administrator\Desktop> certutil -store My
   
   my "Personal"
   ================ Certificate 0 ================
   Serial Number: certificate-serial-number
   Issuer: CN=MYRootCA
    NotBefore: 2/5/2020 1:38 PM
    NotAfter: 2/5/2021 1:48 PM
   Subject: CN=www.mydomain.com, OU=Certificate Management, O=Information Technology, L=Houston, S=Texas, C=US
   Non-root Certificate
   Cert Hash(sha1): cert-hash
     Key Container = key-container-name
     Provider = Cavium Key Storage Provider
   Private key is NOT exportable
   Encryption test passed
   CertUtil: -store command completed successfully.
   ```
**catatan**  
Perhatikan nomor seri sertifikat untuk digunakan pada langkah berikutnya.

1. 

**Ekspor sertifikat HSM-backend**  
Ekspor sertifikat HSM-backend ke file:

   ```
   certutil -store My certificate-serial-number signed-certificate-name.cer
   ```

1. 

**Impor sertifikat root**  
Pada instance Windows baru Anda:

   1. Salin file CA root ke instance Windows baru Anda

   1. Impor sertifikat:

      ```
      certutil -addstore Root root-certificate-name.cer
      ```

1. 

**Verifikasi instalasi sertifikat root**  
Konfirmasikan sertifikat root diinstal dengan benar:

   ```
   PS C:\Users\Administrator\Desktop> certutil -store Root
   
   Root "Trusted Root Certification Authorities"
   ================ Certificate 0 ================
   Serial Number: certificate-serial-number
   Issuer: CN=MYRootCA
    NotBefore: 2/5/2020 1:38 PM
    NotAfter: 2/5/2021 1:48 PM
    Issuer: CN=MYRootCA
   Signature matches Public Key
   Root Certificate: Subject matches Issuer
   Cert Hash(sha1): cert-hash
   No key provider information
   Cannot find the certificate and private key for decryption.
   CertUtil: -store command completed successfully.
   ```

1. 

**Impor sertifikat HSM-backend**  
Pada instance Windows baru Anda:

   1. Salin sertifikat HSM-backend ke instance Windows baru Anda

   1. Impor sertifikat:

      ```
      certutil -addstore My signed-certificate-name.cer
      ```

1. 

**Verifikasi instalasi sertifikat HSM-backend**  
Konfirmasikan sertifikat HSM-backend diinstal dengan benar:

   ```
   PS C:\Users\Administrator\Desktop> certutil -store My
   
   my "Personal"
   ================ Certificate 0 ================
   Serial Number: certificate-serial-number
   Issuer: CN=MYRootCA
    NotBefore: 2/5/2020 1:38 PM
    NotAfter: 2/5/2021 1:48 PM
   Subject: CN=www.mydomain.com, OU=Certificate Management, O=Information Technology, L=Houston, S=Texas, C=US
   Non-root Certificate
   Cert Hash(sha1): cert-hash
   No key provider information
   Cannot find the certificate and private key for decryption.
   CertUtil: -store command completed successfully.
   ```
**catatan**  
Perhatikan nomor seri sertifikat untuk digunakan pada langkah selanjutnya.

1. 

**Buat file referensi kunci (opsional)**  
Selesaikan langkah ini hanya jika Anda perlu membuat file referensi kunci baru. Jika tidak, lanjutkan ke langkah berikutnya.
**catatan**  
Fitur ini hanya ada di SDK versi 5.16.0 dan yang lebih baru.

   1. Instal [OpenSSL](https://slproweb.com/products/Win32OpenSSL.html) dan ekstrak modulus:

      ```
      openssl x509 -in signed-certificate-name.cer -modulus -noout
      ```
**catatan**  
Perintah OpenSSL menampilkan modulus dalam format:. `Modulus=modulus-value` Perhatikan *modulus-value* untuk digunakan dalam perintah berikutnya.

   1. Buat file referensi kunci dengan CloudHSM CLI, lihat: [Menghasilkan referensi kunci KSP (Windows)](cloudhsm_cli-key-generate-file.md#key-generate-ksp-key-reference)

      ```
      & "C:\Program Files\Amazon\CloudHSM\bin\cloudhsm-cli.exe" key generate-file --encoding ksp-key-reference --filter attr.class=private-key attr.modulus=0xmodulus-value
      ```
**catatan**  
Argumen perintah *modulus-value* in CloudHSM CLI harus `0x` diawali dengan untuk menunjukkan format heksadesimal.  
File referensi utama dibuat di`C:\Users\Default\AppData\Roaming\Microsoft\Crypto\CaviumKSP\GlobalPartition`.

1. 

**Buat konfigurasi perbaikan**  
Buat file bernama `repair.txt` dengan konten berikut:

   ```
   [Properties]
   11 = "" ; Add friendly name property
   2 = "{text}" ; Add Key Provider Information property
   _continue_="Container=key-container-name&"
   _continue_="Provider=Cavium Key Storage Provider&"
   _continue_="Flags=0&"
   _continue_="KeySpec=2"
   ```
**catatan**  
Ganti *key-container-name* dengan nama file referensi kunci dari. `C:\Users\Default\AppData\Roaming\Microsoft\Crypto\CaviumKSP\GlobalPartition`

1. 

**Toko sertifikat perbaikan**  
Jalankan perintah perbaikan:

   ```
   certutil -repairstore My certificate-serial-number repair.txt
   ```
**catatan**  
Nomor seri sertifikat diperoleh dari langkah-langkah sebelumnya saat memverifikasi instalasi sertifikat HSM-backend.

1. 

**Verifikasi asosiasi sertifikat**  
Konfirmasikan sertifikat terkait dengan benar:

   ```
   PS C:\Users\Administrator\Desktop> certutil -store My
   
   my "Personal"
   ================ Certificate 0 ================
   Serial Number: certificate-serial-number
   Issuer: CN=MYRootCA
    NotBefore: 2/5/2020 1:38 PM
    NotAfter: 2/5/2021 1:48 PM
   Subject: CN=www.mydomain.com, OU=Certificate Management, O=Information Technology, L=Houston, S=Texas, C=US
   Non-root Certificate
   Cert Hash(sha1): cert-hash
     Key Container = key-container-name
     Provider = Cavium Key Storage Provider
   Private key is NOT exportable
   ERROR: Could not verify certificate public key against private key
   CertUtil: -store command completed successfully.
   ```

   Verifikasi output menunjukkan:
   + Nama kontainer kunci yang benar
   + Penyedia Penyimpanan Kunci Cavium
   + `ERROR: Could not verify certificate public key against private key`Ini adalah masalah yang diketahui, lihat [Masalah: Verifikasi penyimpanan sertifikat gagal](ki-ksp-sdk.md#ki-ksp-1)

1. 

**Uji aplikasi Anda**  
Sebelum menyelesaikan migrasi:

   1. Uji aplikasi Anda di lingkungan pengembangan Anda

   1. Perbarui kode Anda untuk menyelesaikan setiap perubahan yang melanggar

   1. Untuk panduan khusus aplikasi, lihat [Mengintegrasikan aplikasi pihak ketiga dengan AWS CloudHSM](third-party-applications.md)

## Verifikasi migrasi
<a name="ksp-migrate-verification"></a>

Setelah menyelesaikan langkah-langkah migrasi, verifikasi bahwa:
+ Sertifikat Anda dipasang dengan benar di toko sertifikat yang benar
+ File referensi utama hadir di lokasi yang benar
+ Aplikasi Anda dapat melakukan operasi kriptografi menggunakan sertifikat yang dimigrasi

## Pemecahan masalah
<a name="ksp-migrate-troubleshooting"></a>

Jika Anda mengalami masalah selama migrasi, verifikasi:
+ Semua sertifikat diekspor dengan benar dari sistem sumber
+ Nomor seri sertifikat cocok antar sistem
+ Nama kontainer kunci dalam file repair.txt cocok dengan file referensi kunci Anda
+ SDK3 mode kompatibilitas diaktifkan jika menggunakan file referensi kunci SDK3 yang dihasilkan

## Topik terkait
<a name="ksp-migrate-to-sdk-5-seealso"></a>
+ [Praktik terbaik untuk AWS CloudHSM](best-practices.md)

# Migrasikan penyedia JCE Anda dari AWS CloudHSM Client SDK 3 ke Client SDK 5
<a name="java-lib-migrate_to_sdk5"></a>

Gunakan topik ini untuk memigrasikan [penyedia JCE](java-library.md) Anda dari AWS CloudHSM Client SDK 3 ke Client SDK 5. Untuk manfaat migrasi, lihat[Manfaat SDK AWS CloudHSM Klien 5](client-sdk-5-benefits.md).

Pada tahun AWS CloudHSM, aplikasi pelanggan melakukan operasi kriptografi menggunakan AWS CloudHSM Client Software Development Kit (SDK). Client SDK 5 adalah SDK utama yang terus memiliki fitur baru dan dukungan platform yang ditambahkan ke dalamnya.

Penyedia Client SDK 3 JCE menggunakan kelas khusus dan APIs itu bukan bagian dari spesifikasi JCE standar. Client SDK 5 untuk penyedia JCE adalah keluhan dengan spesifikasi JCE dan tidak kompatibel dengan Client SDK 3 di area tertentu. Aplikasi pelanggan mungkin memerlukan perubahan sebagai bagian dari migrasi ke SDK Klien 5. Bagian ini menguraikan perubahan yang diperlukan untuk migrasi yang berhasil.

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

**Topics**
+ [Bersiaplah dengan mengatasi perubahan yang melanggar](#jce-migration-preparation-sdk5)
+ [Migrasi ke SDK Klien 5](#w2aac25c19c21c15)
+ [Topik terkait](#java-lib-migrate_to_sdk5-seealso)

## Bersiaplah dengan mengatasi perubahan yang melanggar
<a name="jce-migration-preparation-sdk5"></a>

Tinjau perubahan yang melanggar ini dan perbarui aplikasi Anda di lingkungan pengembangan yang sesuai.

### Kelas dan nama Provider telah berubah
<a name="w2aac25c19c21c13b5"></a>


****  

| Apa yang telah berubah | Apa itu di Client SDK 3 | Apa itu di Client SDK 5 | Contoh | 
| --- | --- | --- | --- | 
| Kelas dan nama penyedia | Kelas penyedia JCE di Client SDK 3 dipanggil `CaviumProvider` dan memiliki nama Provider. `Cavium` | Di Client SDK 5, kelas Provider dipanggil `CloudHsmProvider` dan memiliki nama `CloudHSM` Provider. | Contoh cara menginisialisasi `CloudHsmProvider` objek tersedia di [repositori AWS CloudHSM GitHub sampel](https://github.com/aws-samples/aws-cloudhsm-jce-examples/blob/sdk5/src/main/java/com/amazonaws/cloudhsm/examples/AESGCMEncryptDecryptRunner.java#L43-L50). | 

### Login eksplisit telah berubah, implisit belum
<a name="w2aac25c19c21c13b7"></a>


****  

| Apa yang telah berubah | Apa itu di Client SDK 3 | Apa itu di Client SDK 5 | Contoh | 
| --- | --- | --- | --- | 
| Login eksplisit | Klien SDK 3 menggunakan `LoginManager` kelas untuk login eksplisit. [1](#explicit_login_sdk3_note) | Di Client SDK 5, `CloudHSM` penyedia mengimplementasikan `AuthProvider` untuk login eksplisit. `AuthProvider`adalah kelas Java standar dan mengikuti cara idiomatik Java untuk masuk ke Provider. Dengan manajemen status login yang ditingkatkan di Client SDK 5, aplikasi tidak perlu lagi memantau dan melakukan login selama [2](#explicit_login_sdk5_note)rekoneksi. | Untuk contoh tentang cara menggunakan login eksplisit dengan Client SDK 5, lihat LoginRunner contoh di repositori sampel [AWS GitHub CloudHSM](https://github.com/aws-samples/aws-cloudhsm-jce-examples/blob/sdk5/src/main/java/com/amazonaws/cloudhsm/examples/LoginRunner.java#L109C5-L141). | 
| Login implisit | Tidak ada perubahan yang diperlukan untuk login implisit. File properti yang sama dan semua variabel lingkungan akan terus berfungsi untuk login implisit saat bermigrasi dari Client SDK 3 ke Client SDK 5. | Untuk contoh tentang cara menggunakan login implisit dengan Client SDK 5, lihat [LoginRunner sampel di repositori](https://github.com/aws-samples/aws-cloudhsm-jce-examples/blob/sdk5/src/main/java/com/amazonaws/cloudhsm/examples/LoginRunner.java#L143-L202) AWS CloudHSM GitHub sampel. | 
+ [1] Cuplikan kode SDK 3 klien:

  ```
  LoginManager lm = LoginManager.getInstance();
                         
  lm.login(partition, user, pass);
  ```
+ [2] Cuplikan kode SDK 5 klien:

  ```
  // Construct or get the existing provider object 
  AuthProvider provider = new CloudHsmProvider();
                         
  // Call login method on the CloudHsmProvider object
  // Here loginHandler is a CallbackHandler
  provider.login(null, loginHandler);
  ```

  Untuk contoh tentang cara menggunakan login eksplisit dengan Client SDK 5, lihat [LoginRunner sampel di repositori](https://github.com/aws-samples/aws-cloudhsm-jce-examples/blob/sdk5/src/main/java/com/amazonaws/cloudhsm/examples/LoginRunner.java#L109C5-L141) AWS CloudHSM GitHub sampel.

### Generasi kunci telah berubah
<a name="w2aac25c19c21c13b9"></a>


****  

| Apa yang telah berubah | Apa itu di Client SDK 3 | Apa itu di Client SDK 5 | Contoh | 
| --- | --- | --- | --- | 
| Pembuatan kunci | Di Client SDK 3, `Cavium[Key-type]AlgorithmParameterSpec` digunakan untuk menentukan parameter pembuatan kunci. Untuk cuplikan kode, lihat catatan kaki. [1](#key_generation_sdk3_note) | Di Client SDK 5, `KeyAttributesMap` digunakan untuk menentukan atribut pembuatan kunci. Untuk cuplikan kode, lihat catatan kaki. [2](#key_generation_sdk5_note) | Untuk contoh tentang cara menggunakan `KeyAttributesMap` untuk menghasilkan kunci simetris, lihat [SymmetricKeys sampel di repositori sampel](https://github.com/aws-samples/aws-cloudhsm-jce-examples/blob/sdk5/src/main/java/com/amazonaws/cloudhsm/examples/SymmetricKeys.java) AWS CloudHSM GitHub . | 
| Generasi pasangan kunci | Di Client SDK 3, `Cavium[Key-type]AlgorithmparameterSpec` digunakan untuk menentukan parameter pembuatan key pair. Untuk cuplikan kode, lihat catatan kaki. [3](#key_pair_generation_sdk3_note) | Di Client SDK 5, `KeyPairAttributesMap` digunakan untuk menentukan parameter ini. Untuk cuplikan kode, lihat catatan kaki. [4](#key_pair_generation_sdk5_note) | Untuk contoh tentang cara menggunakan `KeyAttributesMap` untuk menghasilkan kunci asimetris, lihat [AsymmetricKeys sampel](https://github.com/aws-samples/aws-cloudhsm-jce-examples/blob/sdk5/src/main/java/com/amazonaws/cloudhsm/examples/AsymmetricKeys.java) di repositori AWS CloudHSM GitHub sampel. | 
+ [1] Cuplikan kode pembuatan kunci SDK 3 klien:

  ```
  KeyGenerator keyGen = KeyGenerator.getInstance("AES", "Cavium");
  CaviumAESKeyGenParameterSpec aesSpec = new CaviumAESKeyGenParameterSpec(
  keySizeInBits,
  keyLabel,
  isExtractable,
  isPersistent);
  keyGen.init(aesSpec);
  SecretKey aesKey = keyGen.generateKey();
  ```
+ [2] Cuplikan kode pembuatan kunci SDK 5 klien:

  ```
  KeyGenerator keyGen = KeyGenerator.getInstance("AES",
  CloudHsmProvider.PROVIDER_NAME);
                      
  final KeyAttributesMap aesSpec = new KeyAttributesMap();
  aesSpec.put(KeyAttribute.LABEL, keyLabel);
  aesSpec.put(KeyAttribute.SIZE, keySizeInBits);
  aesSpec.put(KeyAttribute.EXTRACTABLE, isExtractable);
  aesSpec.put(KeyAttribute.TOKEN, isPersistent);
                      
  keyGen.init(aesSpec);
  SecretKey aesKey = keyGen.generateKey();
  ```
+ [3] Cuplikan kode pembuatan key pair SDK 3 klien::

  ```
  KeyPairGenerator keyPairGen = KeyPairGenerator.getInstance("rsa", "Cavium");
  CaviumRSAKeyGenParameterSpec spec = new CaviumRSAKeyGenParameterSpec(
  keySizeInBits,
  new BigInteger("65537"),
  label + ":public",
  label + ":private",
  isExtractable,
  isPersistent);
                      
  keyPairGen.initialize(spec);
                      
  keyPairGen.generateKeyPair();
  ```
+ [4] Cuplikan kode pembuatan key pair SDK 5 klien:

  ```
  KeyPairGenerator keyPairGen =
  KeyPairGenerator.getInstance("RSA", providerName);
                      
  // Set attributes for RSA public key
  final KeyAttributesMap publicKeyAttrsMap = new KeyAttributesMap();
  publicKeyAttrsMap.putAll(additionalPublicKeyAttributes);
  publicKeyAttrsMap.put(KeyAttribute.LABEL, label + ":Public");
  publicKeyAttrsMap.put(KeyAttribute.MODULUS_BITS, keySizeInBits);
  publicKeyAttrsMap.put(KeyAttribute.PUBLIC_EXPONENT,
  new BigInteger("65537").toByteArray());
                      
  // Set attributes for RSA private key
  final KeyAttributesMap privateKeyAttrsMap = new KeyAttributesMap();
  privateKeyAttrsMap.putAll(additionalPrivateKeyAttributes);
  privateKeyAttrsMap.put(KeyAttribute.LABEL, label + ":Private");
                      
  // Create KeyPairAttributesMap and use that to initialize the 
  // keyPair generator
  KeyPairAttributesMap keyPairSpec =
  new KeyPairAttributesMapBuilder()
  .withPublic(publicKeyAttrsMap)
  .withPrivate(privateKeyAttrsMap)
  .build();
                      
  keyPairGen.initialize(keyPairSpec);
  keyPairGen.generateKeyPair();
  ```

### Menemukan, menghapus, dan mereferensikan kunci telah berubah
<a name="w2aac25c19c21c13c11"></a>

Menemukan kunci yang sudah dihasilkan dengan AWS CloudHSM memerlukan penggunaan. KeyStore Klien SDK 3 memiliki dua KeyStore jenis: `Cavium` dan`CloudHSM`. Klien SDK 5 hanya memiliki satu KeyStore jenis:`CloudHSM`. 

Pindah dari `Cavium` KeyStore ke `CloudHSM` KeyStore membutuhkan perubahan KeyStore tipe. Selain itu, Client SDK 3 menggunakan pegangan kunci untuk referensi kunci, sedangkan Client SDK 5 menggunakan label kunci. Perubahan perilaku yang dihasilkan tercantum di bawah ini.


| Apa yang telah berubah | Apa itu di Client SDK 3 | Apa itu di Client SDK 5 | Contoh | 
| --- | --- | --- | --- | 
| Referensi utama | Dengan Client SDK 3, aplikasi menggunakan label kunci atau pegangan kunci untuk referensi kunci di HSM. Mereka menggunakan label dengan KeyStore untuk menemukan kunci, atau mereka menggunakan pegangan dan membuat `CaviumKey` objek. | Di Client SDK 5, aplikasi dapat menggunakan tombol [AWS CloudHSM KeyStore Kelas Java untuk Client SDK 5](alternative-keystore_5.md) untuk menemukan kunci berdasarkan label. Untuk menemukan kunci dengan pegangan, gunakan AWS CloudHSM `KeyStoreWithAttributes` dengan AWS CloudHSM `KeyReferenceSpec`. |  | 
| Menemukan beberapa entri | Saat mencari kunci menggunakan`getEntry`,`getKey`, atau `getCertificate` dalam skenario di mana beberapa item dengan kriteria yang sama ada di `Cavium` KeyStore, hanya entri pertama yang ditemukan yang akan dikembalikan. | Dengan AWS CloudHSM `KeyStore` dan`KeyStoreWithAttributes`, skenario yang sama ini akan menghasilkan pengecualian yang dilemparkan. Untuk memperbaiki masalah ini, disarankan untuk mengatur label unik untuk kunci menggunakan [Mengatur atribut kunci dengan CloudHSM CLI](cloudhsm_cli-key-set-attribute.md) perintah di CloudHSM CLI. Atau gunakan `KeyStoreWithAttributes#getKeys` untuk mengembalikan semua kunci yang sesuai dengan kriteria. |  | 
| Temukan semua kunci | Dimungkinkan di Client SDK 3 untuk menemukan semua kunci di HSM menggunakan. `Util.findAllKeys()` | Client SDK 5 membuat pencarian kunci lebih sederhana dan lebih efisien dengan menggunakan `KeyStoreWithAttributes` kelas. Jika memungkinkan, cache kunci Anda untuk meminimalkan latensi. Untuk informasi selengkapnya, lihat [Mengelola kunci secara efektif dalam aplikasi Anda](bp-application-integration.md#bp-manage-application). Bila Anda perlu mengambil semua kunci dari HSM, gunakan `KeyStoreWithAttributes#getKeys` dengan kosong. `KeyAttributesMap`  | Contoh yang menggunakan `KeyStoreWithAttributes` kelas untuk menemukan kunci tersedia di [repositori AWS CloudHSM GitHub sampel](https://github.com/aws-samples/aws-cloudhsm-jce-examples/blob/sdk5/src/main/java/com/amazonaws/cloudhsm/examples/KeyUtilitiesRunner.java#L205-L223) dan cuplikan kode ditampilkan di. [1](#using_keystore_att_note) | 
| Penghapusan kunci | Klien SDK 3 digunakan `Util.deleteKey()` untuk menghapus kunci.  | `Key`Objek di Client SDK 5 mengimplementasikan `Destroyable` antarmuka yang memungkinkan kunci dihapus menggunakan `destroy()` metode antarmuka ini. | Kode contoh yang menunjukkan fungsionalitas tombol hapus dapat ditemukan di repositori sampel [ GitHub CloudHSM](https://github.com/aws-samples/aws-cloudhsm-jce-examples/blob/sdk5/src/main/java/com/amazonaws/cloudhsm/examples/KeyUtilitiesRunner.java#L229-L234). Cuplikan sampel untuk setiap SDK ditampilkan di. [2](#delete_key_note) | 
+ [1] cuplikan ditunjukkan di bawah ini:

  ```
  KeyAttributesMap findSpec = new KeyAttributesMap();
  findSpec.put(KeyAttribute.LABEL, label);
  findSpec.put(KeyAttribute.KEY_TYPE, keyType);
  KeyStoreWithAttributes keyStore = KeyStoreWithAttributes.getInstance("CloudHSM");
                      
  keyStore.load(null, null);
  keyStore.getKey(findSpec);
  ```
+ [2] Menghapus kunci di Client SDK 3:

  ```
  Util.deleteKey(key);
  ```

  Menghapus kunci di Client SDK 5:

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

### Operasi membuka cipher telah berubah, operasi cipher lainnya belum
<a name="w2aac25c19c21c13c13"></a>

**catatan**  
Tidak ada perubahan yang diperlukan untuk operasi Cipher. encrypt/decrypt/wrap

Operasi buka bungkus memerlukan `CaviumUnwrapParameterSpec` kelas Client SDK 3 untuk diganti dengan salah satu kelas berikut khusus untuk operasi kriptografi yang terdaftar.
+ `GCMUnwrapKeySpec`untuk `AES/GCM/NoPadding` membuka bungkusnya
+ `IvUnwrapKeySpec`untuk `AESWrap unwrap` dan `AES/CBC/NoPadding unwrap`
+ `OAEPUnwrapKeySpec`untuk `RSA OAEP unwrap`

Contoh cuplikan untuk: `OAEPUnwrapkeySpec`

```
OAEPParameterSpec oaepParameterSpec =
new OAEPParameterSpec(
        "SHA-256",
        "MGF1",
        MGF1ParameterSpec.SHA256,
        PSpecified.DEFAULT);

KeyAttributesMap keyAttributesMap =
        new KeyAttributesMap(KeyAttributePermissiveProfile.KEY_CREATION);
keyAttributesMap.put(KeyAttribute.TOKEN, true);
keyAttributesMap.put(KeyAttribute.EXTRACTABLE, false);

OAEPUnwrapKeySpec spec = new OAEPUnwrapKeySpec(oaepParameterSpec,
        keyAttributesMap);

Cipher hsmCipher =
        Cipher.getInstance(
                "RSA/ECB/OAEPPadding",
                CloudHsmProvider.PROVIDER_NAME);
hsmCipher.init(Cipher.UNWRAP_MODE, key, spec);
```

### Operasi tanda tangan tidak berubah
<a name="w2aac25c19c21c13c15"></a>

Tidak ada perubahan yang diperlukan untuk operasi Tanda Tangan. 

## Migrasi ke SDK Klien 5
<a name="w2aac25c19c21c15"></a>

Ikuti petunjuk di bagian ini untuk bermigrasi dari Client SDK 3 ke Client SDK 5.

**catatan**  
Amazon Linux, Ubuntu 16.04, Ubuntu 18.04 CentOS 6, CentOS 8, dan RHEL 6 saat ini tidak didukung dengan Client SDK 5. Jika saat ini Anda menggunakan salah satu platform ini dengan Client SDK 3, Anda harus memilih platform yang berbeda saat bermigrasi ke Client SDK 5.

1. Copot pemasangan penyedia JCE untuk Client SDK 3.

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

   ```
   $ sudo yum remove cloudhsm-client-jce
   ```

------
#### [ CentOS 7 ]

   ```
   $ sudo yum remove cloudhsm-client-jce
   ```

------
#### [ RHEL 7 ]

   ```
   $ sudo yum remove cloudhsm-client-jce
   ```

------
#### [ RHEL 8 ]

   ```
   $ sudo yum remove cloudhsm-client-jce
   ```

------
#### [ Ubuntu 16.04 LTS ]

   ```
   $ sudo apt remove cloudhsm-client-jce
   ```

------
#### [ Ubuntu 18.04 LTS ]

   ```
   $ sudo apt remove cloudhsm-client-jce
   ```

------

1. Hentikan Daemon Klien untuk SDK Klien 3.

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

   ```
   $ sudo service cloudhsm-client stop
   ```

------
#### [ CentOS 7 ]

   ```
   $ sudo service cloudhsm-client stop
   ```

------
#### [ RHEL 7 ]

   ```
   $ sudo service cloudhsm-client stop
   ```

------
#### [ RHEL 8 ]

   ```
   $ sudo service cloudhsm-client stop
   ```

------
#### [ Ubuntu 16.04 LTS ]

   ```
   $ sudo systemctl stop cloudhsm-client
   ```

------
#### [ Ubuntu 18.04 LTS ]

   ```
   $ sudo systemctl stop cloudhsm-client
   ```

------

1. Copot pemasangan Daemon Klien untuk SDK Klien 3.

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

   ```
   $ sudo yum remove cloudhsm-client
   ```

------
#### [ CentOS 7 ]

   ```
   $ sudo yum remove cloudhsm-client
   ```

------
#### [ RHEL 7 ]

   ```
   $ sudo yum remove cloudhsm-client
   ```

------
#### [ RHEL 8 ]

   ```
   $ sudo yum remove cloudhsm-client
   ```

------
#### [ Ubuntu 16.04 LTS ]

   ```
   $ sudo apt remove cloudhsm-client
   ```

------
#### [ Ubuntu 18.04 LTS ]

   ```
   $ sudo apt remove cloudhsm-client
   ```

------
**catatan**  
Konfigurasi khusus perlu diaktifkan lagi.

1. Instal penyedia Client SDK JCE dengan mengikuti langkah-langkahnya. [Instal penyedia JCE untuk AWS CloudHSM Client SDK 5](java-library-install_5.md)

1. Client SDK 5 memperkenalkan format file konfigurasi baru dan alat bootstrap baris perintah. Untuk mem-bootstrap penyedia Client SDK 5 JCE Anda, ikuti petunjuk yang tercantum dalam panduan pengguna di bawah. [Bootstrap Klien SDK](cluster-connect.md#connect-how-to)

1. Di lingkungan pengembangan Anda, uji aplikasi Anda. Lakukan pembaruan pada kode yang ada untuk menyelesaikan perubahan yang melanggar sebelum migrasi terakhir Anda. 

## Topik terkait
<a name="java-lib-migrate_to_sdk5-seealso"></a>
+ [Praktik terbaik untuk AWS CloudHSM](best-practices.md)