

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

# Convalida personalizzata del certificato del cliente
<a name="customize-client-auth"></a>

AWS IoT Core supporta la convalida personalizzata dei certificati client per i certificati client X.509, che migliora la gestione dell'autenticazione dei client. Questo metodo di convalida dei certificati è noto anche come controllo dei certificati di preautenticazione, in cui si valutano i certificati client in base a criteri personalizzati (definiti in una funzione Lambda) e si revocano i certificati client o il certificato dell'autorità di certificazione (CA) di firma dei certificati per impedire ai client di connettersi. AWS IoT Core Ad esempio, è possibile creare controlli di revoca dei certificati personalizzati che convalidano lo stato dei certificati rispetto alle autorità di convalida che supportano gli endpoint [OCSP (Online Certificate Status Protocol)](https://en.wikipedia.org/wiki/Online_Certificate_Status_Protocol) o [Certificate Revocation Lists (CRL)](https://en.wikipedia.org/wiki/Certificate_revocation_list) e impediscono le connessioni per i client con certificati revocati. I criteri utilizzati per valutare i certificati client sono definiti in una funzione Lambda (nota anche come Lambda di preautenticazione). È necessario utilizzare gli endpoint impostati nelle configurazioni di dominio e il [tipo di autenticazione](protocols.md#connection-protocol-auth-mode) deve essere un certificato X.509. Inoltre, i client devono fornire l'estensione [SNI (Server Name Indication)](https://www.rfc-editor.org/rfc/rfc3546#section-3.1) durante la connessione a. AWS IoT Core

**Nota**  
Questa funzionalità non è supportata nelle AWS GovCloud (US) regioni.

**Topics**
+ [Fase 1: Registrare i certificati client X.509 con AWS IoT Core](#client-auth-cert-verification)
+ [Passaggio 2: creazione di una funzione Lambda](#customize-client-auth-lambda)
+ [Fase 3: AWS IoT Autorizza a richiamare la funzione Lambda](#customize-client-configuration-grant-permission)
+ [Fase 4: Impostare la configurazione di autenticazione per un dominio](#customize-client-configuration)

## Fase 1: Registrare i certificati client X.509 con AWS IoT Core
<a name="client-auth-cert-verification"></a>

Se non l'hai già fatto, registra e attiva i certificati client [X.509](https://docs.aws.amazon.com//iot/latest/developerguide/x509-client-certs.html) con. AWS IoT Core Altrimenti, passare alla fase successiva.

Per registrare e attivare i certificati client con AWS IoT Core, procedi nel seguente modo:

1. Se [crei certificati client direttamente con AWS IoT](https://docs.aws.amazon.com//iot/latest/developerguide/device-certs-create.html). Questi certificati client verranno registrati automaticamente con AWS IoT Core.

1. Se [crei i tuoi certificati client](https://docs.aws.amazon.com//iot/latest/developerguide/device-certs-your-own.html), segui [queste istruzioni per registrarli AWS IoT Core](https://docs.aws.amazon.com//iot/latest/developerguide/register-device-cert.html).

1. Per attivare i certificati client, segui [queste istruzioni](https://docs.aws.amazon.com//iot/latest/developerguide/activate-or-deactivate-device-cert.html).

## Passaggio 2: creazione di una funzione Lambda
<a name="customize-client-auth-lambda"></a>

È necessario creare una funzione Lambda che esegua la verifica del certificato e venga chiamata per ogni tentativo di connessione del client per l'endpoint configurato. Quando crei questa funzione Lambda, segui le indicazioni generali di [Crea la tua prima funzione Lambda](https://docs.aws.amazon.com//lambda/latest/dg/getting-started.html). Inoltre, assicurati che la funzione Lambda aderisca ai formati di richiesta e risposta previsti come segue:

**Esempio di evento della funzione Lambda**

```
{
	"connectionMetadata": {
		"id": "string"
	},
	"principalId": "string",
	"serverName": "string",
	"clientCertificateChain": [
		"string",
		"string"
	]
}
```

`connectionMetadata`  
Metadati o informazioni aggiuntive relative alla connessione del client a. AWS IoT Core

`principalId`  
L'identificatore principale associato al client nella connessione TLS.

`serverName`  
La stringa del [nome host SNI (Server Name Indication).](https://www.rfc-editor.org/rfc/rfc3546#section-3.1) AWS IoT Core richiede che i dispositivi inviino l'[estensione SNI](https://www.rfc-editor.org/rfc/rfc3546#section-3.1) al protocollo Transport Layer Security (TLS) e forniscano l'indirizzo completo dell'endpoint sul campo. `host_name`

`clientCertificateChain`  
L'array di stringhe che rappresenta la catena di certificati X.509 del client. 

**Esempio di risposta alla funzione Lambda**

```
{
	"isAuthenticated": "boolean"
}
```

`isAuthenticated`  
Un valore booleano che indica se la richiesta è autenticata.

**Nota**  
Nella risposta Lambda, `isAuthenticated` deve essere necessario procedere `true` all'ulteriore autenticazione e autorizzazione. In caso contrario, il certificato client IoT può essere disabilitato e l'autenticazione personalizzata con certificati client X.509 può essere bloccata per ulteriori autenticazioni e autorizzazioni.

## Fase 3: AWS IoT Autorizza a richiamare la funzione Lambda
<a name="customize-client-configuration-grant-permission"></a>

[Dopo aver creato la funzione Lambda, è necessario concedere l'autorizzazione AWS IoT per richiamarla utilizzando il comando CLI add-permission.](https://docs.aws.amazon.com//cli/latest/reference/lambda/add-permission.html) Nota che questa funzione Lambda verrà richiamata per ogni tentativo di connessione all'endpoint configurato. Per ulteriori informazioni, consulta [Autorizzazione AWS IoT a richiamare la funzione Lambda](custom-auth-authorize.md).

## Fase 4: Impostare la configurazione di autenticazione per un dominio
<a name="customize-client-configuration"></a>

La sezione seguente descrive come impostare la configurazione di autenticazione per un dominio personalizzato utilizzando AWS CLI.

### Imposta la configurazione del certificato client per un dominio (CLI)
<a name="customize-client-auth-cli"></a>

Se non disponi di una configurazione di dominio, usa il comando [https://docs.aws.amazon.com//cli/latest/reference/iot/create-domain-configuration.html](https://docs.aws.amazon.com//cli/latest/reference/iot/create-domain-configuration.html)CLI per crearne una. Se disponi già di una configurazione di dominio, utilizza il comando [https://docs.aws.amazon.com//cli/latest/reference/iot/update-domain-configuration.html](https://docs.aws.amazon.com//cli/latest/reference/iot/update-domain-configuration.html)CLI per aggiornare la configurazione del certificato client per un dominio. È necessario aggiungere l'ARN della funzione Lambda creata nel passaggio precedente.

```
aws iot create-domain-configuration \
    --domain-configuration-name domainConfigurationName \
    --authentication-type AWS_X509|CUSTOM_AUTH_X509 \
    --application-protocol SECURE_MQTT|HTTPS \
    --client-certificate-config 'clientCertificateCallbackArn":"arn:aws:lambda:us-east-2:123456789012:function:my-function:1"}'
```

```
aws iot update-domain-configuration \
    --domain-configuration-name domainConfigurationName \
    --authentication-type AWS_X509|CUSTOM_AUTH_X509 \
    --application-protocol SECURE_MQTT|HTTPS \
    --client-certificate-config '{"clientCertificateCallbackArn":"arn:aws:lambda:us-east-2:123456789012:function:my-function:1"}'
```

`domain-configuration-name`  
Il nome della configurazione di dominio.

`authentication-type`  
Il tipo di autenticazione della configurazione del dominio. Per ulteriori informazioni, vedi [Scelta del tipo di autenticazione](protocols.md#connection-protocol-auth-mode).

`application-protocol`  
Il protocollo applicativo con cui i dispositivi comunicano AWS IoT Core. Per ulteriori informazioni, vedere [Scelta di un protocollo applicativo](protocols.md#protocol-selection).

`client-certificate-config`  
Un oggetto che specifica la configurazione di autenticazione del client per un dominio.

`clientCertificateCallbackArn`  
L'Amazon Resource Name (ARN) della funzione Lambda che AWS IoT richiama il livello TLS quando viene stabilita una nuova connessione. Per personalizzare l'autenticazione client per eseguire la convalida personalizzata del certificato client, devi aggiungere l'ARN della funzione Lambda che hai creato nel passaggio precedente.

*Per ulteriori informazioni, consulta [CreateDomainConfiguration](https://docs.aws.amazon.com//iot/latest/apireference/API_CreateDomainConfiguration.html)e utilizza l'AWS IoT API [UpdateDomainConfiguration](https://docs.aws.amazon.com//iot/latest/apireference/API_UpdateDomainConfiguration.html)Reference.* Per ulteriori informazioni sulle configurazioni dei domini, consulta Configurazioni dei [domini](https://docs.aws.amazon.com//iot/latest/developerguide/iot-custom-endpoints-configurable.html).