

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

# Migrazione da AWS CloudHSM Client SDK 3 a Client SDK 5
<a name="client-sdk-migration"></a>

Nel AWS CloudHSM, le applicazioni del cliente eseguono operazioni crittografiche utilizzando il AWS CloudHSM Client Software Development Kit (SDK). Client SDK 5 è l'SDK principale che continua ad avere nuove funzionalità e supporto per la piattaforma.

Client SDK 3 include due strumenti a riga di comando separati: la CMU per la gestione degli utenti e la KMU per la gestione delle chiavi e l'esecuzione di operazioni con le chiavi. Client SDK 5 consolida le funzioni di CMU e KMU (strumenti offerti con Client SDK 3) in un unico strumento, il. [AWS CloudHSM Interfaccia a riga di comando (CLI)](cloudhsm_cli.md) Le operazioni di gestione degli utenti sono disponibili nei sottocomandi e. [La categoria di utenti nella CLI di CloudHSM](cloudhsm_cli-user.md) [La categoria quorum nella CLI di CloudhSM](cloudhsm_cli-qm.md) [Le operazioni di gestione delle chiavi sono disponibili nel [sottocomando key](cloudhsm_cli-key.md), mentre le operazioni di crittografia sono disponibili nel sottocomando crypto.](cloudhsm_cli-crypto.md) [Riferimento per i comandi della CLI di CloudHSM](cloudhsm_cli-reference.md)Per un elenco completo dei comandi, vedere.

Per i vantaggi della migrazione, consulta[Vantaggi di AWS CloudHSM Client SDK 5](client-sdk-5-benefits.md).

Consultate i seguenti argomenti per istruzioni dettagliate sulla migrazione da Client SDK 3 a Client SDK 5. L'ultima versione di AWS CloudHSM Client SDK è la 5.16.
+ [Migra la tua libreria AWS CloudHSM PKCS \$111 da Client SDK 3 a Client SDK 5](pkcs11-migrate-to-sdk-5.md)
+ [Migra il tuo OpenSSL Dynamic Engine AWS CloudHSM da Client SDK 3 a Client SDK 5](openssl-migrate-to-sdk-5.md)
+ [Esegui la migrazione del tuo Key Storage Provider (KSP) da AWS CloudHSM Client SDK 3 a Client SDK 5](ksp-migrate-to-sdk-5.md)
+ [Esegui la migrazione del tuo provider JCE da AWS CloudHSM Client SDK 3 a Client SDK 5](java-lib-migrate_to_sdk5.md)

Per funzionalità o casi d'uso non supportati dalla CLI di CloudHSM, contatta. [Supporto AWS](https://support.console.aws.amazon.com/support/home#/)

# Migra la tua libreria AWS CloudHSM PKCS \$111 da Client SDK 3 a Client SDK 5
<a name="pkcs11-migrate-to-sdk-5"></a>

Utilizzate questo argomento per migrare la [libreria AWS CloudHSM PKCS \$111](pkcs11-library.md) da Client SDK 3 a Client SDK 5. Per i vantaggi della migrazione, consulta. [Vantaggi di AWS CloudHSM Client SDK 5](client-sdk-5-benefits.md)

Nel AWS CloudHSM, le applicazioni dei clienti eseguono operazioni crittografiche utilizzando il AWS CloudHSM Client Software Development Kit (SDK). Client SDK 5 è l'SDK principale che continua ad avere nuove funzionalità e supporto per la piattaforma.

Per consultare le istruzioni di migrazione per tutti i provider, consulta. [Migrazione da AWS CloudHSM Client SDK 3 a Client SDK 5](client-sdk-migration.md)

## Preparati affrontando le modifiche più importanti
<a name="w2aac25c19c15b9"></a>

Rivedi queste modifiche sostanziali e aggiorna di conseguenza l'applicazione nel tuo ambiente di sviluppo.

### I meccanismi di avvolgimento sono cambiati
<a name="w2aac25c19c15b9b5"></a>


****  

| Meccanismo Client SDK 3 | Meccanismo Client SDK 5 equivalente | 
| --- | --- | 
| `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>

In Client SDK 3, è possibile utilizzare ECDH e specificare un KDF. Questa funzionalità non è attualmente disponibile in Client SDK 5. Se la tua applicazione necessita di questa funzionalità, contatta l'[assistenza](https://support.console.aws.amazon.com/support/home#/).

### Gli handle dei tasti ora sono specifici della sessione
<a name="w2aac25c19c15b9b9"></a>

Per utilizzare correttamente gli handle delle chiavi in Client SDK 5, è necessario ottenere gli handle delle chiavi ogni volta che si esegue un'applicazione. Se disponi di applicazioni esistenti che utilizzeranno gli stessi key handle in sessioni diverse, devi modificare il codice per ottenere l'handle di chiave ogni volta che esegui l'applicazione. Per informazioni sul recupero degli handle dei tasti, vedete [questo esempio AWS CloudHSM PKCS \$111](https://github.com/aws-samples/aws-cloudhsm-pkcs11-examples/blob/master/src/find_objects/find_objects.c). Questa modifica è conforme alla specifica [PKCS \$111 2.40](http://docs.oasis-open.org/pkcs11/pkcs11-base/v2.40/os/pkcs11-base-v2.40-os.html#_Toc416959689).

## Esegui la migrazione a Client SDK 5
<a name="w2aac25c19c15c11"></a>

Segui le istruzioni in questa sezione per migrare da Client SDK 3 a Client SDK 5.

**Nota**  
Amazon Linux, Ubuntu 16.04, Ubuntu 18.04, CentOS 6, CentOS 8 e RHEL 6 non sono attualmente supportati con Client SDK 5. Se attualmente utilizzi una di queste piattaforme con Client SDK 3, dovrai scegliere una piattaforma diversa durante la migrazione a Client SDK 5.

1. Disinstalla la libreria PKCS \$111 per 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. Arresta il Client Daemon per Client SDK 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. Disinstalla il Client Daemon per Client SDK 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
   ```

------
**Nota**  
Le configurazioni personalizzate devono essere nuovamente abilitate.

1. Installa la libreria Client SDK PKCS \$111 seguendo la procedura riportata di seguito. [Installa la libreria PKCS \$111 per AWS CloudHSM Client SDK 5](pkcs11-library-install.md)

1. Client SDK 5 introduce un nuovo formato di file di configurazione e uno strumento di avvio da riga di comando. Per avviare la libreria Client SDK 5 PKCS \$111, segui le istruzioni elencate nella guida per l'utente riportata di seguito. [Esegui il bootstrap di Client SDK](cluster-connect.md#connect-how-to)

1. Nel tuo ambiente di sviluppo, prova la tua applicazione. Aggiorna il codice esistente per risolvere le modifiche sostanziali prima della migrazione finale. 

## Argomenti correlati
<a name="pkcs11-migrate-to-sdk-5-seealso"></a>
+ [Le migliori pratiche per AWS CloudHSM](best-practices.md)

# Migra il tuo OpenSSL Dynamic Engine AWS CloudHSM da Client SDK 3 a Client SDK 5
<a name="openssl-migrate-to-sdk-5"></a>

Usa questo argomento per migrare il tuo [OpenSSL Dynamic Engine](openssl-library.md) AWS CloudHSM da Client SDK 3 a Client SDK 5. Per i vantaggi della migrazione, consulta. [Vantaggi di AWS CloudHSM Client SDK 5](client-sdk-5-benefits.md)

Nel AWS CloudHSM, le applicazioni dei clienti eseguono operazioni crittografiche utilizzando il AWS CloudHSM Client Software Development Kit (SDK). Client SDK 5 è l'SDK principale che continua ad avere nuove funzionalità e supporto per la piattaforma.

**Nota**  
La generazione di numeri casuali non è attualmente supportata in Client SDK 5 con OpenSSL Dynamic Engine.

Per consultare le istruzioni di migrazione per tutti i provider, consulta. [Migrazione da AWS CloudHSM Client SDK 3 a Client SDK 5](client-sdk-migration.md)

## Esegui la migrazione a Client SDK 5
<a name="w2aac25c19c17c11"></a>

Segui le istruzioni in questa sezione per migrare da Client SDK 3 a Client SDK 5.

**Nota**  
Amazon Linux, Ubuntu 16.04, Ubuntu 18.04, CentOS 6, CentOS 8 e RHEL 6 non sono attualmente supportati con Client SDK 5. Se attualmente utilizzi una di queste piattaforme con Client SDK 3, dovrai scegliere una piattaforma diversa durante la migrazione a Client SDK 5.

1. Disinstalla OpenSSL Dynamic Engine for 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. Arresta il Client Daemon per Client SDK 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. Disinstalla il Client Daemon per Client SDK 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
   ```

------
**Nota**  
Le configurazioni personalizzate devono essere nuovamente abilitate.

1. Installa il Client SDK OpenSSL Dynamic Engine seguendo i passaggi riportati di seguito. [Installa il motore AWS CloudHSM dinamico OpenSSL per Client SDK 5](openssl5-install.md)

1. Client SDK 5 introduce un nuovo formato di file di configurazione e uno strumento di avvio da riga di comando. Per avviare il tuo Client SDK 5 OpenSSL Dynamic Engine, segui le istruzioni elencate nella guida per l'utente riportata di seguito. [Esegui il bootstrap di Client SDK](cluster-connect.md#connect-how-to)

1. Nel tuo ambiente di sviluppo, prova la tua applicazione. Aggiorna il codice esistente per risolvere le modifiche sostanziali prima della migrazione finale. 

## Argomenti correlati
<a name="openssl-migrate-to-sdk-5-seealso"></a>
+ [Le migliori pratiche per AWS CloudHSM](best-practices.md)

# Esegui la migrazione del tuo Key Storage Provider (KSP) da AWS CloudHSM Client SDK 3 a Client SDK 5
<a name="ksp-migrate-to-sdk-5"></a>

Questo argomento spiega come migrare il [Key Storage Provider (KSP)](ksp-library.md) da AWS CloudHSM Client SDK 3 a Client SDK 5. L'ultima versione di AWS CloudHSM Client SDK è la 5.16. Per informazioni sui vantaggi della migrazione, consulta. [Vantaggi di AWS CloudHSM Client SDK 5](client-sdk-5-benefits.md)

In AWS CloudHSM, si utilizza il AWS CloudHSM Client Software Development Kit (SDK) per eseguire operazioni crittografiche. Client SDK 5 è l'SDK principale che riceve nuove funzionalità e aggiornamenti del supporto della piattaforma.

Per le istruzioni sulla migrazione per tutti i provider, consulta. [Migrazione da AWS CloudHSM Client SDK 3 a Client SDK 5](client-sdk-migration.md)

## Esegui la migrazione a Client SDK 5
<a name="ksp-migrate-steps"></a>

1. Arresta il Client Daemon per Client SDK 3.

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

1. Installa Client SDK 5 Key Storage Provider (KSP) sulla tua istanza di Windows Server. Per istruzioni, consulta [Installa il Key Storage Provider (KSP) per AWS CloudHSM Client SDK 5](ksp-library-install.md).

1. Configura il tuo Client SDK 5 Key Storage Provider (KSP) utilizzando il nuovo formato di file di configurazione e lo strumento di avvio da riga di comando. Per istruzioni, consulta [Esegui il bootstrap di Client SDK](cluster-connect.md#connect-how-to).

1. Key Storage Provider (KSP) per AWS CloudHSM Client SDK 5 include la modalità di SDK3 compatibilità per supportare i file di riferimento chiave generati in. SDK3 Per ulteriori informazioni, consulta [SDK3 modalità di compatibilità per Key Storage Provider (KSP) per AWS CloudHSM](ksp-library-configs-sdk3-compatibility-mode.md).
**Nota**  
È necessario abilitare la modalità di SDK3 compatibilità quando si utilizzano i file di riferimento chiave generati da Client SDK 3 con Client SDK 5.

## Esegui la migrazione a nuove istanze di Windows Server
<a name="ksp-migrate-new-windows"></a>

1. Completa tutti i passaggi descritti in [Migrazione a Client SDK 5](#ksp-migrate-steps) sulle tue nuove istanze di Windows Server.

1. 

**Verifica la presenza di file di riferimento chiave esistenti**  
Nell'istanza originale di Windows Server, verifica la presenza di file di riferimento chiave in`C:\Users\Default\AppData\Roaming\Microsoft\Crypto\CaviumKSP\GlobalPartition`.
   + Se esistono file di riferimento chiave, copia tutti i contenuti in `C:\Users\Default\AppData\Roaming\Microsoft\Crypto\CaviumKSP` `GlobalPartition` Includi nello stesso percorso di directory sulla nuova istanza di Windows Server. Crea la directory se non esiste.
   + Se i file di riferimento chiave non esistono, utilizzali `cloudhsm-cli key generate-file --encoding ksp-key-reference` sulla nuova istanza di Windows Server per crearli. Per istruzioni, consulta [Generazione di riferimenti chiave KSP (Windows)](cloudhsm_cli-key-generate-file.md#key-generate-ksp-key-reference).

1. 

**Verifica il certificato principale**  
Controlla il tuo certificato principale presso le autorità di certificazione root affidabili:

   ```
   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.
   ```
**Nota**  
Annota il numero di serie del certificato da utilizzare nel passaggio successivo.

1. 

**Esporta il certificato principale**  
Esporta il certificato principale in un file:

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

1. 

**Verifica il certificato HSM-backend**  
Controlla il tuo certificato HSM-Backend nel Personal Certificate Store:

   ```
   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.
   ```
**Nota**  
Annota il numero di serie del certificato da utilizzare nel passaggio successivo.

1. 

**Esporta il certificato HSM-Backend**  
Esporta il certificato HSM-Backend in un file:

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

1. 

**Importa il certificato principale**  
Sulla tua nuova istanza di Windows:

   1. Copia il file CA principale nella tua nuova istanza di Windows

   1. Importa il certificato:

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

1. 

**Verifica l'installazione del certificato principale**  
Conferma che il certificato principale sia installato correttamente:

   ```
   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. 

**Importa il certificato HSM-backend**  
Sulla tua nuova istanza di Windows:

   1. Copia il certificato HSM-Backend nella tua nuova istanza di Windows

   1. Importa il certificato:

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

1. 

**Verifica l'installazione del certificato HSM-backend**  
Conferma che il certificato HSM-Backend sia installato correttamente:

   ```
   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.
   ```
**Nota**  
Annota il numero di serie del certificato da utilizzare nei passaggi successivi.

1. 

**Crea un file di riferimento chiave (opzionale)**  
Completate questo passaggio solo se dovete creare un nuovo file di riferimento chiave. Altrimenti, passa alla fase successiva.
**Nota**  
Questa funzionalità è disponibile solo nella versione SDK 5.16.0 e successive.

   1. Installa [OpenSSL](https://slproweb.com/products/Win32OpenSSL.html) ed estrai il modulo:

      ```
      openssl x509 -in signed-certificate-name.cer -modulus -noout
      ```
**Nota**  
Il comando OpenSSL restituisce il modulo nel formato:. `Modulus=modulus-value` Nota che deve *modulus-value* essere utilizzato nel comando successivo.

   1. Crea un file di riferimento chiave con la CLI di CloudHSM, vedi: [Generazione di riferimenti chiave 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
      ```
**Nota**  
Gli *modulus-value* argomenti del comando CLI di CloudHSM devono avere il `0x` prefisso per indicare il formato esadecimale.  
I file di riferimento chiave vengono creati in. `C:\Users\Default\AppData\Roaming\Microsoft\Crypto\CaviumKSP\GlobalPartition`

1. 

**Crea una configurazione di riparazione**  
Crea un file denominato `repair.txt` con i seguenti contenuti:

   ```
   [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"
   ```
**Nota**  
Sostituisci *key-container-name* con il nome del file di riferimento della chiave da. `C:\Users\Default\AppData\Roaming\Microsoft\Crypto\CaviumKSP\GlobalPartition`

1. 

**Ripara l'archivio dei certificati**  
Esegui il comando di riparazione:

   ```
   certutil -repairstore My certificate-serial-number repair.txt
   ```
**Nota**  
Il numero di serie del certificato viene ottenuto dai passaggi precedenti durante la verifica dell'installazione del certificato HSM-Backend.

1. 

**Verifica l'associazione dei certificati**  
Conferma che il certificato sia associato correttamente:

   ```
   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.
   ```

   Verifica che l'output mostri:
   + Il nome corretto del contenitore delle chiavi
   + Il provider di archiviazione delle chiavi Cavium
   + `ERROR: Could not verify certificate public key against private key`È un problema noto, vedi [Problema: la verifica di un archivio di certificati non riesce](ki-ksp-sdk.md#ki-ksp-1)

1. 

**Testa la tua applicazione**  
Prima di completare la migrazione:

   1. Testa la tua applicazione nel tuo ambiente di sviluppo

   1. Aggiorna il codice per risolvere eventuali modifiche sostanziali

   1. Per indicazioni specifiche sull'applicazione, consulta [Integrazione di applicazioni di terze parti con AWS CloudHSM](third-party-applications.md)

## Verifica la migrazione
<a name="ksp-migrate-verification"></a>

Dopo aver completato i passaggi di migrazione, verifica che:
+ I certificati sono installati correttamente negli archivi di certificati corretti
+ I file di riferimento chiave sono presenti nella posizione corretta
+ L'applicazione può eseguire operazioni crittografiche utilizzando i certificati migrati

## Risoluzione dei problemi
<a name="ksp-migrate-troubleshooting"></a>

Se riscontri problemi durante la migrazione, verifica:
+ Tutti i certificati vengono esportati correttamente dal sistema di origine
+ I numeri di serie dei certificati corrispondono tra i sistemi
+ I nomi dei contenitori delle chiavi nel file repair.txt corrispondono ai file di riferimento delle chiavi
+ SDK3 la modalità di compatibilità è abilitata se si utilizzano SDK3 file di riferimento chiave generati

## Argomenti correlati
<a name="ksp-migrate-to-sdk-5-seealso"></a>
+ [Le migliori pratiche per AWS CloudHSM](best-practices.md)

# Esegui la migrazione del tuo provider JCE da AWS CloudHSM Client SDK 3 a Client SDK 5
<a name="java-lib-migrate_to_sdk5"></a>

Utilizzate questo argomento per migrare il vostro [provider JCE](java-library.md) da AWS CloudHSM Client SDK 3 a Client SDK 5. Per i vantaggi della migrazione, consulta. [Vantaggi di AWS CloudHSM Client SDK 5](client-sdk-5-benefits.md)

Nel AWS CloudHSM, le applicazioni dei clienti eseguono operazioni crittografiche utilizzando il AWS CloudHSM Client Software Development Kit (SDK). Client SDK 5 è l'SDK principale che continua ad avere nuove funzionalità e supporto per la piattaforma.

Il provider Client SDK 3 JCE utilizza classi personalizzate APIs che non fanno parte delle specifiche JCE standard. Client SDK 5 per il provider JCE è conforme alla specifica JCE ed è retrocompatibile con Client SDK 3 in alcune aree. Le applicazioni del cliente potrebbero richiedere modifiche come parte della migrazione a Client SDK 5. Questa sezione descrive le modifiche necessarie per una migrazione corretta.

Per consultare le istruzioni di migrazione per tutti i provider, consulta[Migrazione da AWS CloudHSM Client SDK 3 a Client SDK 5](client-sdk-migration.md).

**Topics**
+ [

## Preparati affrontando le modifiche più importanti
](#jce-migration-preparation-sdk5)
+ [

## Esegui la migrazione a Client SDK 5
](#w2aac25c19c21c15)
+ [

## Argomenti correlati
](#java-lib-migrate_to_sdk5-seealso)

## Preparati affrontando le modifiche più importanti
<a name="jce-migration-preparation-sdk5"></a>

Rivedi queste modifiche sostanziali e aggiorna di conseguenza l'applicazione nel tuo ambiente di sviluppo.

### La classe e il nome del Provider sono cambiati
<a name="w2aac25c19c21c13b5"></a>


****  

| Cosa è cambiato | Cosa c'era in Client SDK 3 | Che cos'è in Client SDK 5 | Esempio | 
| --- | --- | --- | --- | 
| Classe e nome del provider | La classe del provider JCE in Client SDK 3 viene chiamata `CaviumProvider` e ha il nome Provider. `Cavium` | In Client SDK 5, la classe Provider viene chiamata `CloudHsmProvider` e ha il nome Provider. `CloudHSM` | Un esempio di come inizializzare l'`CloudHsmProvider`oggetto è disponibile nel repository di [AWS CloudHSM GitHub esempio](https://github.com/aws-samples/aws-cloudhsm-jce-examples/blob/sdk5/src/main/java/com/amazonaws/cloudhsm/examples/AESGCMEncryptDecryptRunner.java#L43-L50). | 

### L'accesso esplicito è cambiato, quello implicito no
<a name="w2aac25c19c21c13b7"></a>


****  

| Cosa è cambiato | Cosa c'era in Client SDK 3 | Che cos'è in Client SDK 5 | Esempio | 
| --- | --- | --- | --- | 
| Login esplicito | Client SDK 3 utilizza la `LoginManager` classe per l'accesso esplicito. [1](#explicit_login_sdk3_note) | In Client SDK 5, il `CloudHSM` provider implementa l'accesso `AuthProvider` esplicito. `AuthProvider`è una classe Java standard e segue il modo idiomatico di Java per accedere a un provider. Grazie alla migliore gestione dello stato di accesso in Client SDK 5, le applicazioni non devono più monitorare ed eseguire l'accesso durante le riconnessioni. [2](#explicit_login_sdk5_note) | Per un esempio su come utilizzare l'accesso esplicito con Client SDK 5, consulta l' LoginRunner esempio nel repository di esempio di [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). | 
| Accesso implicito | Non sono richieste modifiche per l'accesso implicito. Lo stesso file di proprietà e tutte le variabili di ambiente continueranno a funzionare per l'accesso implicito durante la migrazione da Client SDK 3 a Client SDK 5. | [Per un esempio su come utilizzare l'accesso implicito con Client SDK 5, consulta l'LoginRunner esempio nel repository di esempio.](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  | 
+ [1] Frammento di codice Client SDK 3:

  ```
  LoginManager lm = LoginManager.getInstance();
                         
  lm.login(partition, user, pass);
  ```
+ [2] Frammento di codice Client SDK 5:

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

  Per un esempio su come utilizzare l'accesso esplicito con Client SDK 5, consulta l'[LoginRunner esempio nel repository di esempio](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 

### La generazione delle chiavi è cambiata
<a name="w2aac25c19c21c13b9"></a>


****  

| Cosa è cambiato | Cosa c'era in Client SDK 3 | Che cos'è in Client SDK 5 | Esempio | 
| --- | --- | --- | --- | 
| Generazione delle chiavi | In Client SDK 3, `Cavium[Key-type]AlgorithmParameterSpec` viene utilizzato per specificare i parametri di generazione delle chiavi. Per un frammento di codice, consulta la nota a piè di pagina. [1](#key_generation_sdk3_note) | In Client SDK 5, `KeyAttributesMap` viene utilizzato per specificare gli attributi di generazione delle chiavi. Per un frammento di codice, consulta la nota a piè di pagina. [2](#key_generation_sdk5_note) | Per un esempio su come generare una chiave simmetrica, consulta l'`KeyAttributesMap`esempio nel repository di [SymmetricKeys esempio](https://github.com/aws-samples/aws-cloudhsm-jce-examples/blob/sdk5/src/main/java/com/amazonaws/cloudhsm/examples/SymmetricKeys.java) di AWS GitHub CloudHSM. | 
| Generazione di coppie di chiavi | In Client SDK 3, `Cavium[Key-type]AlgorithmparameterSpec` viene utilizzato per specificare i parametri di generazione delle key pair. Per un frammento di codice, consulta la nota a piè di pagina. [3](#key_pair_generation_sdk3_note) | In Client SDK 5, `KeyPairAttributesMap` viene utilizzato per specificare questi parametri. Per un frammento di codice, consulta la nota a piè di pagina. [4](#key_pair_generation_sdk5_note) | [Per un esempio su come `KeyAttributesMap` generare una chiave asimmetrica, consultate l'esempio nel AsymmetricKeys repository di esempio.](https://github.com/aws-samples/aws-cloudhsm-jce-examples/blob/sdk5/src/main/java/com/amazonaws/cloudhsm/examples/AsymmetricKeys.java) AWS CloudHSM GitHub  | 
+ [1] Frammento di codice per la generazione di chiavi Client SDK 3:

  ```
  KeyGenerator keyGen = KeyGenerator.getInstance("AES", "Cavium");
  CaviumAESKeyGenParameterSpec aesSpec = new CaviumAESKeyGenParameterSpec(
  keySizeInBits,
  keyLabel,
  isExtractable,
  isPersistent);
  keyGen.init(aesSpec);
  SecretKey aesKey = keyGen.generateKey();
  ```
+ [2] Frammento di codice per la generazione di chiavi Client SDK 5:

  ```
  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] Frammento di codice di generazione di key pair Client SDK 3:

  ```
  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] Frammento di codice di generazione di key pair Client SDK 5:

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

### La ricerca, l'eliminazione e il riferimento alle chiavi sono cambiati
<a name="w2aac25c19c21c13c11"></a>

La ricerca di una chiave già generata con AWS CloudHSM comporta l'utilizzo di. KeyStore Client SDK 3 è di due KeyStore tipi: `Cavium` e. `CloudHSM` Client SDK 5 ha solo un KeyStore tipo:. `CloudHSM` 

Il passaggio da `Cavium` KeyStore a `CloudHSM` KeyStore richiede un cambio di KeyStore tipo. Inoltre, Client SDK 3 utilizza le maniglie dei tasti per fare riferimento alle chiavi, mentre Client SDK 5 utilizza le etichette delle chiavi. Le modifiche comportamentali risultanti sono elencate di seguito.


| Cosa è cambiato | Cosa c'era in Client SDK 3 | Che cos'è in Client SDK 5 | Esempio | 
| --- | --- | --- | --- | 
| Riferimenti chiave | Con Client SDK 3, le applicazioni utilizzano etichette o maniglie di tasti per fare riferimento alle chiavi nell'HSM. Utilizzano etichette KeyStore per trovare una chiave oppure usano maniglie per creare `CaviumKey` oggetti. | In Client SDK 5, le applicazioni possono utilizzare il comando [AWS CloudHSM KeyStore Classe Java per Client SDK 5](alternative-keystore_5.md) per trovare le chiavi per etichetta. Per trovare le chiavi in base alla maniglia, usa il comando AWS CloudHSM `KeyStoreWithAttributes` with AWS CloudHSM `KeyReferenceSpec`. |  | 
| Ricerca di voci multiple | Quando si cerca una chiave utilizzando `getEntry` o `getCertificate` in scenari in cui sono presenti più elementi con gli stessi criteri in `Cavium` KeyStore, verrà restituita solo la prima voce trovata. `getKey` | Con AWS CloudHSM `KeyStore` and`KeyStoreWithAttributes`, questo stesso scenario comporterà la generazione di un'eccezione. Per risolvere questo problema, si consiglia di impostare etichette univoche per le chiavi utilizzando il [Imposta gli attributi delle chiavi con CloudhSM CLI](cloudhsm_cli-key-set-attribute.md) comando nella CLI di CloudHSM. Oppure usa `KeyStoreWithAttributes#getKeys` per restituire tutte le chiavi che corrispondono ai criteri. |  | 
| Trova tutte le chiavi | In Client SDK 3 è possibile trovare tutte le chiavi nell'HSM utilizzando. `Util.findAllKeys()` | Client SDK 5 rende la ricerca delle chiavi più semplice ed efficiente utilizzando la classe. `KeyStoreWithAttributes` Quando possibile, memorizza nella cache le chiavi per ridurre al minimo la latenza. Per ulteriori informazioni, consulta [Gestisci efficacemente le chiavi nella tua applicazione](bp-application-integration.md#bp-manage-application). Se devi recuperare tutte le chiavi dall'HSM, usale `KeyStoreWithAttributes#getKeys` con una chiave vuota. `KeyAttributesMap`  | Un esempio che utilizza la `KeyStoreWithAttributes` classe per trovare una chiave è disponibile nel [repository di AWS CloudHSM GitHub esempio](https://github.com/aws-samples/aws-cloudhsm-jce-examples/blob/sdk5/src/main/java/com/amazonaws/cloudhsm/examples/KeyUtilitiesRunner.java#L205-L223) e un frammento di codice è mostrato in. [1](#using_keystore_att_note) | 
| Eliminazione della chiave | Client SDK 3 utilizza `Util.deleteKey()` per eliminare una chiave.  | L'`Key`oggetto in Client SDK 5 implementa l'`Destroyable`interfaccia che consente di eliminare le chiavi utilizzando il `destroy()` metodo di questa interfaccia. | Un codice di esempio che mostra la funzionalità di eliminazione delle chiavi è disponibile nel repository di esempio [ GitHub CloudHSM](https://github.com/aws-samples/aws-cloudhsm-jce-examples/blob/sdk5/src/main/java/com/amazonaws/cloudhsm/examples/KeyUtilitiesRunner.java#L229-L234). Un frammento di esempio per ogni SDK è mostrato in. [2](#delete_key_note) | 
+ [1] uno snippet è mostrato di seguito:

  ```
  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] Eliminazione di una chiave in Client SDK 3:

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

  Eliminazione di una chiave in Client SDK 5:

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

### Le operazioni di cancellazione di cifratura sono cambiate, le altre operazioni di cifratura no
<a name="w2aac25c19c21c13c13"></a>

**Nota**  
Non sono necessarie modifiche per le operazioni di cifratura. encrypt/decrypt/wrap

Le operazioni Unwrap richiedono la sostituzione della `CaviumUnwrapParameterSpec` classe Client SDK 3 con una delle seguenti classi specifiche per le operazioni crittografiche elencate.
+ `GCMUnwrapKeySpec`per unwrap `AES/GCM/NoPadding`
+ `IvUnwrapKeySpec`per `AESWrap unwrap` e `AES/CBC/NoPadding unwrap`
+ `OAEPUnwrapKeySpec` per `RSA OAEP unwrap`

Frammento di esempio per: `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);
```

### Le operazioni di firma non sono cambiate
<a name="w2aac25c19c21c13c15"></a>

Non sono necessarie modifiche per le operazioni di firma. 

## Esegui la migrazione a Client SDK 5
<a name="w2aac25c19c21c15"></a>

Segui le istruzioni in questa sezione per migrare da Client SDK 3 a Client SDK 5.

**Nota**  
Amazon Linux, Ubuntu 16.04, Ubuntu 18.04 CentOS 6, CentOS 8 e RHEL 6 non sono attualmente supportati con Client SDK 5. Se attualmente utilizzi una di queste piattaforme con Client SDK 3, dovrai scegliere una piattaforma diversa durante la migrazione a Client SDK 5.

1. Disinstalla il provider JCE per 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. Arresta il Client Daemon per Client SDK 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. Disinstalla il Client Daemon per Client SDK 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
   ```

------
**Nota**  
Le configurazioni personalizzate devono essere nuovamente abilitate.

1. Installa il provider Client SDK JCE seguendo la procedura riportata di seguito. [Installare il provider JCE per AWS CloudHSM Client SDK 5](java-library-install_5.md)

1. Client SDK 5 introduce un nuovo formato di file di configurazione e uno strumento di avvio da riga di comando. Per avviare il provider Client SDK 5 JCE, segui le istruzioni elencate nella guida per l'utente riportata di seguito. [Esegui il bootstrap di Client SDK](cluster-connect.md#connect-how-to)

1. Nel tuo ambiente di sviluppo, prova la tua applicazione. Aggiorna il codice esistente per risolvere le modifiche sostanziali prima della migrazione finale. 

## Argomenti correlati
<a name="java-lib-migrate_to_sdk5-seealso"></a>
+ [Le migliori pratiche per AWS CloudHSM](best-practices.md)