

 **Questa pagina è riservata ai clienti esistenti del servizio Amazon Glacier che utilizzano Vaults e l'API REST originale del 2012.**

Se stai cercando soluzioni di archiviazione, ti consigliamo di utilizzare le classi di storage Amazon Glacier in Amazon S3, S3 Glacier Instant Retrieval, S3 Glacier Flexible Retrieval e S3 Glacier Deep Archive. Per ulteriori informazioni su queste opzioni di storage, consulta le classi di storage di [Amazon Glacier](https://aws.amazon.com/s3/storage-classes/glacier/).

Amazon Glacier (servizio autonomo originale basato su vault) non accetta più nuovi clienti. Amazon Glacier è un servizio APIs autonomo che archivia i dati in vault ed è distinto dalle classi di storage Amazon S3 e Amazon S3 Glacier. I dati esistenti rimarranno sicuri e accessibili in Amazon Glacier a tempo indeterminato. Non è richiesta alcuna migrazione. Per uno storage di archiviazione a lungo termine a basso costo, AWS consiglia le classi di storage [Amazon S3 Glacier](https://aws.amazon.com/s3/storage-classes/glacier/), che offrono un'esperienza cliente superiore con disponibilità Regione AWS completa, costi inferiori e integrazione dei servizi APIs basata su bucket S3. AWS Se desideri funzionalità avanzate, prendi in considerazione la migrazione alle classi di storage Amazon S3 Glacier utilizzando la [AWS nostra Solutions Guidance per il trasferimento di dati dai vault Amazon Glacier alle classi di storage Amazon S3 Glacier](https://aws.amazon.com/solutions/guidance/data-transfer-from-amazon-s3-glacier-vaults-to-amazon-s3/).

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

# Firmare le richieste
<a name="amazon-glacier-signing-requests"></a>

Amazon Glacier richiede l'autenticazione di ogni richiesta inviata firmando la richiesta. Per firmare una richiesta, è necessario calcolare una firma digitale utilizzando una funzione hash crittografica. Una funzione hash crittografica è una funzione che restituisce un valore hash univoco basato sull'input. L'input alla funzione hash include il testo della richiesta e la tua chiave di accesso segreta. La funzione hash restituisce un valore hash che includi nella richiesta come firma. La firma è parte dell'intestazione `Authorization` della richiesta. 

Dopo aver ricevuto la richiesta, Amazon Glacier ricalcola la firma utilizzando la stessa funzione di hash e lo stesso input utilizzati per firmare la richiesta. Se la firma risultante corrisponde alla firma nella richiesta, Amazon Glacier elabora la richiesta. In caso contrario, la richiesta viene respinta. 

Amazon Glacier supporta l'autenticazione [AWS tramite](https://docs.aws.amazon.com/general/latest/gr/signature-version-4.html) Signature versione 4. La procedura per il calcolo di una firma può essere suddivisa in tre fasi:

 
+   [Fase 1. Creazione di una richiesta canonica](https://docs.aws.amazon.com/general/latest/gr/sigv4-create-canonical-request.html)

  Riorganizza la richiesta HTTP in un formato canonico. L'utilizzo di un modulo canonico è necessario perché Amazon Glacier utilizza la stessa forma canonica quando ricalcola una firma per confrontarla con quella che hai inviato. 
+   [Fase 2. Creazione di una stringa di firma](https://docs.aws.amazon.com/general/latest/gr/sigv4-create-string-to-sign.html)

  Crea una stringa che utilizzerai come uno dei valori di input per la funzione hash crittografica. La stringa, denominata *stringa di firma*, è una concatenazione del nome dell'algoritmo hash, della data della richiesta, di una stringa di *ambito credenziali* e della richiesta in formato canonico creata nella fase precedente. La stringa dell'*ambito delle credenziali* è di per sé una concatenazione di informazioni su data, regione e servizio. AWS 
+   [Fase 3. Creazione di una firma](https://docs.aws.amazon.com/general/latest/gr/sigv4-calculate-signature.html)

  Crea una firma per la tua richiesta utilizzando una funzione hash crittografica che accetta due stringhe di input: la tua *stringa di firma* e una *chiave derivata*. La *chiave derivata* viene calcolata partendo dalla chiave di accesso segreta e utilizzando la stringa di *ambito delle credenziali* per creare una serie di codici di autenticazione dei messaggi basati su hash (). HMACs Tieni presente che la funzione hash utilizzata in questa fase di firma non è l'algoritmo tree-hash utilizzato in Amazon Glacier per caricare i dati. APIs

**Topics**
+ [Esempio di calcolo di firma](#example-signature-calculation)
+ [Calcolo di firme per le operazioni di streaming](#signature-calculation-streaming)

## Esempio di calcolo di firma
<a name="example-signature-calculation"></a>

L'esempio in questa sezione mostra come creare una firma per [Create Vault (PUT vault)](api-vault-put.md). L'esempio può essere utilizzato come riferimento per verificare il metodo di calcolo della firma. *Per ulteriori informazioni, consulta [Signing AWS API request](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_aws-signing.html) nella IAM User Guide.* 

L'esempio presuppone quanto segue:
+ Il time stamp della richiesta è `Fri, 25 May 2012 00:24:53 GMT`.
+ L'endpoint è la regione Stati Uniti orientali (Virginia settentrionale), ` us-east-1`. 

La sintassi generale della richiesta (incluso il corpo JSON) è: 

```
PUT /-/vaults/examplevault HTTP/1.1
Host: glacier.us-east-1.amazonaws.com
Date: Fri, 25 May 2012 00:24:53 GMT
Authorization: SignatureToBeCalculated
x-amz-glacier-version: 2012-06-01
```

Il formato canonico della richiesta calcolata per [Fase 1: creazione di una richiesta canonica](#SignatureCalculationTask1) è:

 

```
PUT
/-/vaults/examplevault

host:glacier.us-east-1.amazonaws.com
x-amz-date:20120525T002453Z
x-amz-glacier-version:2012-06-01

host;x-amz-date;x-amz-glacier-version
e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855
```

L'ultima riga della richiesta canonica è l'hash del corpo della richiesta. Nota inoltre la terza riga vuota nella richiesta canonica. Ciò è dovuto alla mancanza di parametri di query per questa API. 

La *stringa di firma* per [Fase 2. Creazione di una stringa di firma](#SignatureCalculationTask2) è:

 

```
AWS4-HMAC-SHA256
20120525T002453Z
20120525/us-east-1/glacier/aws4_request
5f1da1a2d0feb614dd03d71e87928b8e449ac87614479332aced3a701f916743
```

 

La prima riga della *stringa di firma* è l'algoritmo, la seconda è il timestamp, la terza è l'*ambito credenziali* e l'ultima è un hash del formato della richiesta canonica in [Fase 1: creazione di una richiesta canonica](#SignatureCalculationTask1). Il nome del servizio da utilizzare nell'ambito credenziali è `glacier`.

In [Fase 3. Creazione di una firma](#SignatureCalculationTask3), la *chiave derivata* può essere rappresentata come segue:

 

```
derived key = HMAC(HMAC(HMAC(HMAC("AWS4" + YourSecretAccessKey,"20120525"),"us-east-1"),"glacier"),"aws4_request")
```

Se viene utilizzata la chiave di accesso segreta `wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY`, la firma calcolata è:

 

```
3ce5b2f2fffac9262b4da9256f8d086b4aaf42eba5f111c21681a65a127b7c2a
```

 

La fase finale consiste nel creare l'intestazione `Authorization`. Per la chiave di accesso `AKIAIOSFODNN7EXAMPLE`, l'intestazione (con interruzioni di riga aggiunte per facilitare la lettura) è:

 

```
Authorization: AWS4-HMAC-SHA256 Credential=AKIAIOSFODNN7EXAMPLE/20120525/us-east-1/glacier/aws4_request, 
SignedHeaders=host;x-amz-date;x-amz-glacier-version, 
Signature=3ce5b2f2fffac9262b4da9256f8d086b4aaf42eba5f111c21681a65a127b7c2a
```

 

## Calcolo di firme per le operazioni di streaming
<a name="signature-calculation-streaming"></a>

[Upload Archive (POST archive)](api-archive-post.md) e [Upload Part (PUT uploadID)](api-upload-part.md) sono operazioni di streaming che richiedono l'inclusione di un'ulteriore intestazione `x-amz-content-sha256` per la firma e l'invio della richiesta. Le fasi relative alla firma per le operazioni di streaming sono esattamente le stesse delle altre operazioni, con l'aggiunta dell'intestazione di streaming.

Il calcolo dell'intestazione dello streaming si `x-amz-content-sha256` basa sull'SHA256 hash dell'intero contenuto (payload) da caricare. Nota che questo calcolo è diverso dal SHA256 tree hash (). [Calcolo di checksum](checksum-calculations.md) Oltre ai casi banali, il valore hash SHA 256 dei dati del payload sarà diverso dall'hash ad SHA256 albero dei dati del payload. 

Se i dati del payload sono specificati come array di byte, è possibile utilizzare il seguente frammento di codice Java per calcolare l'hash. SHA256 

 

```
public static byte[] computePayloadSHA256Hash2(byte[] payload) throws NoSuchAlgorithmException, IOException {
    BufferedInputStream bis = 
       new BufferedInputStream(new ByteArrayInputStream(payload));
    MessageDigest messageDigest = MessageDigest.getInstance("SHA-256");
    byte[] buffer = new byte[4096];
    int bytesRead = -1;
    while ( (bytesRead = bis.read(buffer, 0, buffer.length)) != -1 ) {
        messageDigest.update(buffer, 0, bytesRead);
    }
    return messageDigest.digest();
}
```

Allo stesso modo, in C\$1 è possibile calcolare l' SHA256 hash dei dati del payload come mostrato nel seguente frammento di codice. 

 

```
public static byte[] CalculateSHA256Hash(byte[] payload)
{
    SHA256 sha256 = System.Security.Cryptography.SHA256.Create();
    byte[] hash = sha256.ComputeHash(payload);

    return hash;
}
```

### Esempio di calcolo di firma per l'API di streaming
<a name="example-signature-calculation-streaming"></a>

L'esempio seguente illustra i dettagli della creazione di una firma per[Upload Archive (POST archive)](api-archive-post.md), uno dei due streaming APIs in Amazon Glacier. L'esempio presuppone quanto segue:
+ Il time stamp della richiesta è `Mon, 07 May 2012 00:00:00 GMT`.
+ L'endpoint è la regione Stati Uniti orientali (Virginia settentrionale), us-east-1.
+ Il payload del contenuto è una stringa «Benvenuto in Amazon Glacier». 

La sintassi generale della richiesta (incluso il corpo JSON) è illustrata nell'esempio seguente. Nota che è inclusa l'intestazione ` x-amz-content-sha256`. In questo esempio semplificato, `x-amz-sha256-tree-hash` e `x-amz-content-sha256` hanno lo stesso valore, ma nel caso di caricamenti di archivi superiori a 1 MB sono differenti.

```
POST /-/vaults/examplevault HTTP/1.1
Host: glacier.us-east-1.amazonaws.com
Date: Mon, 07 May 2012 00:00:00 GMT
x-amz-archive-description: my archive
x-amz-sha256-tree-hash: SHA256 tree hash
x-amz-content-sha256: SHA256 payload hash  
Authorization: SignatureToBeCalculated
x-amz-glacier-version: 2012-06-01
```

Il formato canonico della richiesta calcolata per [Fase 1. Creazione di una richiesta canonica](#SignatureCalculationTask1) è riportato di seguito. Nota che l'intestazione di streaming `x-amz-content-sha256` è inclusa con il relativo valore. Ciò significa che devi prima leggere il payload e calcolare l' SHA256 hash, quindi calcolare la firma.

 

```
POST
/-/vaults/examplevault

host:glacier.us-east-1.amazonaws.com
x-amz-content-sha256:726e392cb4d09924dbad1cc0ba3b00c3643d03d14cb4b823e2f041cff612a628
x-amz-date:20120507T000000Z
x-amz-glacier-version:2012-06-01

host;x-amz-content-sha256;x-amz-date;x-amz-glacier-version
726e392cb4d09924dbad1cc0ba3b00c3643d03d14cb4b823e2f041cff612a628
```

Il resto della procedura di calcolo della firma segue le fasi descritte in [Esempio di calcolo di firma](#example-signature-calculation). L'intestazione `Authorization` che utilizza la Secret Access Key `wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY` e la chiave di accesso `AKIAIOSFODNN7EXAMPLE` è esposta di seguito (con interruzioni di riga aggiunte per facilitare la lettura):

 

```
Authorization=AWS4-HMAC-SHA256 
Credential=AKIAIOSFODNN7EXAMPLE/20120507/us-east-1/glacier/aws4_request, 
SignedHeaders=host;x-amz-content-sha256;x-amz-date;x-amz-glacier-version, 
Signature=b092397439375d59119072764a1e9a144677c43d9906fd98a5742c57a2855de6
```

 