

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

# AWS CloudHSM KeyStore Classe Java per Client SDK 3
<a name="alternative-keystore"></a>

**La AWS CloudHSM `KeyStore` classe fornisce un archivio di PKCS12 chiavi per scopi speciali che consente l'accesso alle AWS CloudHSM chiavi tramite applicazioni come **keytool** e jarsigner.** Questo archivio chiavi può archiviare i certificati insieme ai dati della chiave e correlarli ai dati della chiave memorizzati su AWS CloudHSM. 

**Nota**  
Poiché i certificati sono informazioni pubbliche e, per massimizzare la capacità di archiviazione delle chiavi crittografiche, AWS CloudHSM non supporta l'archiviazione dei certificati su. HSMs

La AWS CloudHSM `KeyStore` classe implementa la `KeyStore` Service Provider Interface (SPI) della Java Cryptography Extension (JCE). [Per ulteriori informazioni sull'utilizzo`KeyStore`, vedete Class. KeyStore](https://docs.oracle.com/javase/8/docs/api/java/security/KeyStore.html)

## Scegli l'archivio di chiavi appropriato per AWS CloudHSM Client SDK 3
<a name="choosing_keystore"></a>

Il provider AWS CloudHSM Java Cryptographic Extension (JCE) è dotato di un key store pass-through predefinito di sola lettura che trasferisce tutte le transazioni all'HSM. Questo archivio di chiavi predefinito è distinto da quello per scopi speciali. AWS CloudHSM KeyStore Nella maggior parte delle situazioni, è possibile ottenere prestazioni di runtime e velocità effettiva migliori utilizzando l'impostazione predefinita. È consigliabile utilizzarlo solo AWS CloudHSM KeyStore per le applicazioni in cui è necessario il supporto per i certificati e le operazioni basate sui certificati oltre a trasferire le operazioni chiave sull'HSM.

Sebbene entrambi gli archivi di chiavi utilizzino il provider JCE per le operazioni, sono entità indipendenti e non scambiano informazioni tra loro. 

Carica l'archivio chiavi predefinito per l'applicazione Java come segue:

```
KeyStore ks = KeyStore.getInstance("Cavium");
```

Caricate il CloudHSM per scopi speciali come segue: KeyStore 

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

## Inizializza for Client SDK 3 AWS CloudHSM KeyStore
<a name="initialize_cloudhsm_keystore"></a>

Effettua AWS CloudHSM KeyStore l'accesso nello stesso modo in cui accedi al provider JCE. È possibile utilizzare le variabili di ambiente o il file delle proprietà del sistema ed è necessario effettuare il login prima di iniziare a utilizzare CloudHSM KeyStore. Per un esempio di accesso a un HSM utilizzando JCE, vedi [Accedi a un HSM](https://github.com/aws-samples/aws-cloudhsm-jce-examples/blob/master/src/main/java/com/amazonaws/cloudhsm/examples/LoginRunner.java).

Se lo desideri, puoi specificare una password per crittografare il PKCS12 file locale che contiene i dati dell'archivio delle chiavi. Quando si crea il AWS CloudHSM Keystore, si imposta la password e la si fornisce quando si utilizzano i metodi load, set e get.

Crea un'istanza di un nuovo oggetto CloudHSM come segue KeyStore :

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

Scrivi i dati dell'archivio chiavi in un file utilizzando il metodo `store`. Da quel momento in poi, puoi caricare l'archivio chiavi esistente utilizzando il metodo `load` con il file sorgente e la password come segue: 

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

## Usa for Client SDK 3 AWS CloudHSM KeyStore AWS CloudHSM
<a name="using_cloudhsm_keystore"></a>

[Un oggetto KeyStore CloudHSM viene generalmente utilizzato tramite un'applicazione di terze parti [come](https://docs.oracle.com/javase/8/docs/technotes/tools/windows/jarsigner.html) jarsigner o keytool.](https://docs.oracle.com/javase/8/docs/technotes/tools/unix/keytool.html) Puoi anche accedere direttamente all'oggetto con il codice. 

AWS CloudHSM KeyStore è conforme alle specifiche della [classe KeyStore](https://docs.oracle.com/javase/8/docs/api/java/security/KeyStore.html) JCE e fornisce le seguenti funzioni.
+ `load`

  Carica l'archivio chiavi dal flusso di input specificato. Se durante il salvataggio dell'archivio chiavi è stata impostata una password, è necessario fornire questa stessa password affinché il caricamento abbia esito positivo. Impostare entrambi i parametri su nulla per inizializzare un nuovo archivio di chiavi vuoto.

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

  Restituisce un'enumerazione dei nomi alias di tutte le voci nell'istanza dell'archivio chiavi considerato. I risultati includono oggetti archiviati localmente nel PKCS12 file e oggetti residenti nell'HSM. 

  **Esempio di codice:**

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

  Restituisce vero se l'archivio chiavi ha accesso ad almeno un oggetto con l'alias specificato. L'archivio delle chiavi controlla gli oggetti archiviati localmente nel PKCS12 file e gli oggetti che risiedono sull'HSM.
+ `DeleteEntry`

  Elimina una voce di certificato dal file locale PKCS12 . L'eliminazione dei dati chiave archiviati in un HSM non è supportata utilizzando. AWS CloudHSM KeyStore È possibile eliminare le chiavi con lo strumento [key\$1mgmt\$1util](https://docs.aws.amazon.com/cloudhsm/latest/userguide/key_mgmt_util.html) di CloudHSM.
+ `GetCertificate`

  Restituisce il certificato associato a un alias, se disponibile. Se l'alias non esiste o fa riferimento a un oggetto che non è un certificato, la funzione restituisce NULLA. 

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

  Restituisce il nome (alias) della prima voce dell'archivio chiavi i cui dati corrispondono al certificato specificato. 

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

  Restituisce la catena di certificati associata all'alias specificato. Se l'alias non esiste o fa riferimento a un oggetto che non è un certificato, la funzione restituisce NULLA. 
+ `GetCreationDate`

  Restituisce la data di creazione della voce identificata dall'alias specificato. Se una data di creazione non è disponibile, la funzione restituisce la data in cui il certificato è diventato valido.
+ `GetKey`

  GetKey viene passato all'HSM e restituisce un oggetto chiave corrispondente all'etichetta specificata. Poiché interroga `getKey` direttamente l'HSM, può essere utilizzato per qualsiasi chiave sull'HSM indipendentemente dal fatto che sia stata generata da. KeyStore 

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

  Controlla se la voce con l'alias specificato rappresenta una voce di certificato. 
+ `IsKeyEntry`

  Controlla se la voce con l'alias specificato rappresenta una voce chiave. L'azione cerca l'alias sia nel PKCS12 file che nell'HSM. 
+ `SetCertificateEntry`

  Assegna il certificato dato all'alias specificato. Se l'alias specificato è già in uso per identificare una chiave o un certificato, viene generata una `KeyStoreException`. È possibile utilizzare il codice JCE per ottenere l'oggetto chiave e quindi utilizzare il KeyStore `SetKeyEntry` metodo per associare il certificato alla chiave.
+ `SetKeyEntry` con chiave `byte[]`

  **Questa API non è attualmente supportata con Client SDK 3.**
+ `SetKeyEntry` con oggetto `Key`

  Assegna la chiave considerata all'alias specificato e la memorizza all'interno dell'HSM. Se l'oggetto `Key` non è di tipo `CaviumKey`, la chiave viene importata nell'HSM come chiave di sessione estraibile. 

  Se l'oggetto `Key` è di tipo `PrivateKey`, deve essere accompagnato da una catena di certificati corrispondente. 

  Se l'alias esiste già, la chiamata `SetKeyEntry` genera un `KeyStoreException` e impedisce la sovrascrittura della chiave. Se la chiave deve essere sovrascritta, utilizza KMU o JCE a tale scopo. 
+ `EngineSize`

  Restituisce il numero di voci nell'archivio chiavi.
+ `Store`

  Memorizza l'archivio delle chiavi nel flusso di output specificato come PKCS12 file e lo protegge con la password specificata. Inoltre, persiste tutte le chiavi caricate (che sono impostate usando le chiamate `setKey`).