

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

# Generazione e configurazione di un certificato SSL per l'autenticazione backend in Gateway API
<a name="getting-started-client-side-ssl-authentication"></a>

 Puoi usare API Gateway per generare un certificato SSL e quindi usare la relativa chiave pubblica nel back-end per verificare che le richieste HTTP al sistema back-end provengano da API Gateway. Ciò consente al back-end HTTP di controllare e accettare solo le richieste che provengono da Amazon API Gateway, anche se il back-end è accessibile pubblicamente. 

**Nota**  
 Alcuni server back-end potrebbero non supportare l'autenticazione client SSL come fa API Gateway e potrebbero restituire un errore di certificato SSL. Per un elenco di server back-end non compatibili, consulta [Note importanti Amazon API Gateway](api-gateway-known-issues.md). 

 I certificati SSL generati da API Gateway sono autofirmati e solo la chiave pubblica di un certificato è visibile nella console API Gateway o tramite. APIs 

**Topics**
+ [Generazione di un certificato client tramite la console API Gateway](#generate-client-certificate)
+ [Configurazione di un'API per usare i certificati SSL](#configure-api)
+ [Test della chiamata per verificare la configurazione del certificato del client](#test-invoke)
+ [Configurazione di un server di back-end HTTPS per verificare il certificato del client](#certificate-validation)
+ [Rotazione di un certificato client in scadenza](#certificate-rotation)
+ [Autorità di certificazione supportate da Gateway API per le integrazioni HTTP e proxy HTTP in Gateway API](api-gateway-supported-certificate-authorities-for-http-endpoints.md)

## Generazione di un certificato client tramite la console API Gateway
<a name="generate-client-certificate"></a>

1. Apri la console API Gateway all'indirizzo [https://console.aws.amazon.com/apigateway/](https://console.aws.amazon.com/apigateway/). 

1. Scegli un REST o WebSocket un'API.

1. Nel riquadro di navigazione principale scegli **Certificati client**.

1. Nel riquadro **Certificati client** scegli **Genera certificato client**.

1.  (Facoltativo) In **Descrizione**, immetti una descrizione. 

1. Scegli **Genera certificato** per generare il certificato. API Gateway genera un nuovo certificato e restituisce il GUID del nuovo certificato con la chiave pubblica con codifica PEM. 

A questo punto, puoi configurare un'API per usare il certificato.

## Configurazione di un'API per usare i certificati SSL
<a name="configure-api"></a>

Queste istruzioni presuppongono che la procedura in sia già stata completat [Generazione di un certificato client tramite la console API Gateway](#generate-client-certificate).

1.  Nella console API Gateway, crea o apri un WebSocket REST o un'API per cui desideri utilizzare il certificato client. Assicurati che l'API sia stata distribuita in una fase. 

1. Nel riquadro di navigazione principale scegli **Fasi**.

1. Nella sezione **Dettagli fase** scegli **Modifica**.

1. Per **Certificato client** seleziona un certificato.

1. Scegli **Save changes** (Salva modifiche).

Dopo aver selezionato un certificato per l'API e avere eseguito il salvataggio, API Gateway usa il certificato per tutte le chiamate alle integrazioni HTTP nell'API. 

## Test della chiamata per verificare la configurazione del certificato del client
<a name="test-invoke"></a>

1. Scegli un metodo REST API. Seleziona la scheda **Test**. Potrebbe essere necessario scegliere il pulsante freccia destra per visualizzare la scheda **Test**.

1. Per **Certificato client** seleziona un certificato. 

1. Scegli **Test (Esegui test)**. 

 API Gateway presenta il certificato SSL scelto per il back-end HTTP per l'autenticazione dell'API. 

## Configurazione di un server di back-end HTTPS per verificare il certificato del client
<a name="certificate-validation"></a>

Queste istruzioni presuppongono che [Generazione di un certificato client tramite la console API Gateway](#generate-client-certificate) sia già stata completata e che sia stata scaricata una copia del certificato client. Per scaricare un certificato client, chiama [https://docs.aws.amazon.com/apigateway/latest/api/API_GetClientCertificate.html](https://docs.aws.amazon.com/apigateway/latest/api/API_GetClientCertificate.html) dell'API REST di API Gateway o [https://docs.aws.amazon.com/cli/latest/reference/apigateway/get-client-certificate.html](https://docs.aws.amazon.com/cli/latest/reference/apigateway/get-client-certificate.html) della AWS CLI. 

 Prima di configurare un server di back-end HTTPS per verificare il certificato client SSL di API Gateway devi aver ottenuto la chiave privata con codifica PEM e un certificato lato server che viene fornito da un'autorità di certificazione attendibile. 

Se il nome di dominio del server è `myserver.mydomain.com`, il valore CNAME del certificato del server deve essere `myserver.mydomain.com` o `*.mydomain.com`. 

Tra le autorità di certificazione supportate figurano [Let's Encrypt](https://letsencrypt.org/) o una delle [Autorità di certificazione supportate da Gateway API per le integrazioni HTTP e proxy HTTP in Gateway API](api-gateway-supported-certificate-authorities-for-http-endpoints.md). 

Ad esempio, supponiamo che il file del certificato client sia `apig-cert.pem` e che la chiave privata del server e i file di certificato siano, rispettivamente, `server-key.pem` e `server-cert.pem`. Per un server Node.js nel back-end, è possibile configurare il server in modo simile al seguente:

```
var fs = require('fs'); 
var https = require('https');
var options = { 
    key: fs.readFileSync('server-key.pem'), 
    cert: fs.readFileSync('server-cert.pem'), 
    ca: fs.readFileSync('apig-cert.pem'), 
    requestCert: true, 
    rejectUnauthorized: true
};
https.createServer(options, function (req, res) { 
    res.writeHead(200); 
    res.end("hello world\n"); 
}).listen(443);
```



Per un'app [node-express](http://expressjs.com/), puoi utilizzare i [client-certificate-auth](https://www.npmjs.com/package/client-certificate-auth)moduli per autenticare le richieste dei client con certificati con codifica PEM. 

Per gli altri server HTTPS, consulta la documentazione per il server.

## Rotazione di un certificato client in scadenza
<a name="certificate-rotation"></a>

Il certificato client generato da API Gateway è valido per 365 giorni. È necessario ruotare il certificato prima che un certificato client in una fase API scada per evitare tempi di inattività per l'API.

### Ruota un certificato client in scadenza utilizzando il Console di gestione AWS
<a name="certification-rotation-console"></a>

La seguente procedura mostra come ruotare un certificato client nella console per un’API implementata in precedenza.

1. Nel riquadro di navigazione principale scegli **Certificati client**.

1. Nel riquadro **Certificati client** scegli **Genera certificato**.

1.  Aprire l'API per cui si desidera usare il certificato client. 

1. Scegliere **Stages (Fasi)** per l'API selezionata e quindi scegliere una fase.

1. Nella sezione **Dettagli fase** scegli **Modifica**.

1. Per **Certificato client** seleziona il nuovo certificato.

1. Per salvare le impostazioni, scegli **Salva modifiche**.

### Ruota un certificato client in scadenza utilizzando il AWS CLI
<a name="certificate-rotation-cli"></a>

 [Puoi controllare la data di scadenza del certificato chiamando [ClientCertificate:by-ID dell'API REST di API Gateway o il](https://docs.aws.amazon.com/apigateway/latest/api/API_GetClientCertificate.html)AWS CLI comando e [get-client-certificate](https://docs.aws.amazon.com/cli/latest/reference/apigateway/get-client-certificate.html)controllando la proprietà ExpirationDate restituita.](https://docs.aws.amazon.com/apigateway/latest/api/API_ClientCertificate.html#expirationDate)

Per ruotare un certificato client, procedere come indicato di seguito:

1. Genera un nuovo certificato client chiamando [clientcertificate:generate](https://docs.aws.amazon.com/apigateway/latest/api/API_GenerateClientCertificate.html) dell'API Gateway REST API o il comando di. AWS CLI [generate-client-certificate](https://docs.aws.amazon.com/cli/latest/reference/apigateway/generate-client-certificate.html) In questo tutorial si presuppone che l'ID del nuovo certificato client sia `ndiqef`.

1.  Aggiorna il server di back-end per includere il nuovo certificato client. Non rimuovere il certificato client esistente.

   Alcuni server potrebbero richiedere un riavvio per completare l'aggiornamento. Per ulteriori informazioni, consulta la documentazione del server per vedere se è necessario riavviare il server durante l'aggiornamento.

1.  Aggiornare la fase API per utilizzare il nuovo certificato client chiamando [stage:update](https://docs.aws.amazon.com/apigateway/latest/api/API_UpdateStage.html) dell'API REST di API Gateway, con il nuovo ID del certificato client (`ndiqef`):

   ```
   PATCH /restapis/{restapi-id}/stages/stage1 HTTP/1.1
   Content-Type: application/json
   Host: apigateway.us-east-1.amazonaws.com
   X-Amz-Date: 20170603T200400Z
   Authorization: AWS4-HMAC-SHA256 Credential=...
   
   {
     "patchOperations" : [
       {
           "op" : "replace",
           "path" : "/clientCertificateId",
           "value" : "ndiqef"
       }
     ]
   }
   ```

   È anche possibile utilizzare il comando [update-stage](https://docs.aws.amazon.com/cli/latest/reference/apigateway/update-stage.html).

   [Se utilizzi un' WebSocket API, usa il comando update-stage. `apigatewayv2`](https://docs.aws.amazon.com/cli/latest/reference/apigatewayv2/update-stage.html)

1.  Aggiorna il server di back-end per eliminare il vecchio certificato.

1.  Elimina il vecchio certificato da API Gateway chiamando il [clientcertificate:delete](https://docs.aws.amazon.com/apigateway/latest/api/API_DeleteClientCertificate.html) dell'API REST di API Gateway, specificando il clientCertificateId (`a1b2c3`) del vecchio certificato:

   ```
   DELETE /clientcertificates/a1b2c3 
   ```

   Puoi anche chiamare il comando: [delete-client-certificate](https://docs.aws.amazon.com/cli/latest/reference/apigateway/delete-client-certificate.html)

   ```
   aws apigateway delete-client-certificate --client-certificate-id a1b2c3
   ```