

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

# Validation des certificats client personnalisés
<a name="customize-client-auth"></a>

AWS IoT Core prend en charge la validation personnalisée des certificats client pour les certificats client X.509, ce qui améliore la gestion de l'authentification des clients. Cette méthode de validation des certificats est également connue sous le nom de vérifications de certificats de pré-authentification, dans lesquelles vous évaluez les certificats clients en fonction de vos propres critères (définis dans une fonction Lambda) et révoquez les certificats clients ou le certificat d'autorité de signature (CA) des certificats pour empêcher les clients de se connecter à. AWS IoT Core Par exemple, vous pouvez créer vos propres contrôles de révocation des certificats qui valident le statut des certificats par rapport aux autorités de validation qui prennent [en charge les points de terminaison du protocole OCSP (Online Certificate Status Protocol)](https://en.wikipedia.org/wiki/Online_Certificate_Status_Protocol) ou des [listes de révocation de certificats (CRL)](https://en.wikipedia.org/wiki/Certificate_revocation_list), et qui empêchent les clients dont les certificats ont été révoqués de se connecter. Les critères utilisés pour évaluer les certificats clients sont définis dans une fonction Lambda (également appelée Lambda de pré-authentification). Vous devez utiliser les points de terminaison définis dans les configurations de domaine et le [type d'authentification](protocols.md#connection-protocol-auth-mode) doit être le certificat X.509. En outre, les clients doivent fournir l'extension [SNI (Server Name Indication)](https://www.rfc-editor.org/rfc/rfc3546#section-3.1) lorsqu'ils se connectent à AWS IoT Core.

**Note**  
Cette fonctionnalité n'est pas prise en charge dans les AWS GovCloud (US) régions.

**Topics**
+ [Étape 1 : enregistrez vos certificats clients X.509 auprès de AWS IoT Core](#client-auth-cert-verification)
+ [Étape 2 : création d’une fonction Lambda](#customize-client-auth-lambda)
+ [Étape 3 : Autoriser AWS IoT l'appel de votre fonction Lambda](#customize-client-configuration-grant-permission)
+ [Étape 4 : définir la configuration de l'authentification pour un domaine](#customize-client-configuration)

## Étape 1 : enregistrez vos certificats clients X.509 auprès de AWS IoT Core
<a name="client-auth-cert-verification"></a>

Si ce n'est pas déjà fait, enregistrez et activez vos [certificats clients X.509](https://docs.aws.amazon.com//iot/latest/developerguide/x509-client-certs.html) avec AWS IoT Core. Sinon, passez à l’étape suivante.

Pour enregistrer et activer vos certificats clients auprès de AWS IoT Core, procédez comme suit :

1. Si vous [créez des certificats clients directement avec AWS IoT](https://docs.aws.amazon.com//iot/latest/developerguide/device-certs-create.html). Ces certificats clients seront automatiquement enregistrés auprès de AWS IoT Core.

1. Si vous [créez vos propres certificats clients](https://docs.aws.amazon.com//iot/latest/developerguide/device-certs-your-own.html), suivez [ces instructions pour les enregistrer auprès](https://docs.aws.amazon.com//iot/latest/developerguide/register-device-cert.html) de AWS IoT Core.

1. Pour activer vos certificats clients, suivez [ces instructions](https://docs.aws.amazon.com//iot/latest/developerguide/activate-or-deactivate-device-cert.html).

## Étape 2 : création d’une fonction Lambda
<a name="customize-client-auth-lambda"></a>

Vous devez créer une fonction Lambda qui effectuera la vérification des certificats et sera appelée à chaque tentative de connexion client pour le point de terminaison configuré. Lorsque vous créez cette fonction Lambda, suivez les instructions générales de la section [Créez votre première fonction Lambda](https://docs.aws.amazon.com//lambda/latest/dg/getting-started.html). En outre, assurez-vous que la fonction Lambda respecte les formats de demande et de réponse attendus, comme suit :

**Exemple d'événement lié à une fonction Lambda**

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

`connectionMetadata`  
Métadonnées ou informations supplémentaires relatives à la connexion du client à AWS IoT Core.

`principalId`  
Identifiant principal associé au client dans la connexion TLS.

`serverName`  
Chaîne de [nom d'hôte SNI (Server Name Indication)](https://www.rfc-editor.org/rfc/rfc3546#section-3.1). AWS IoT Core exige que les appareils envoient l'[extension SNI](https://www.rfc-editor.org/rfc/rfc3546#section-3.1) au protocole TLS (Transport Layer Security) et fournissent l'adresse complète du point de terminaison sur le `host_name` terrain.

`clientCertificateChain`  
Le tableau de chaînes qui représente la chaîne de certificats X.509 du client. 

**Exemple de réponse de la fonction Lambda**

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

`isAuthenticated`  
Valeur booléenne qui indique si la demande est authentifiée.

**Note**  
Dans la réponse Lambda, `isAuthenticated` il faut procéder `true` à une authentification et à une autorisation supplémentaires. Sinon, le certificat client IoT peut être désactivé et l'authentification personnalisée avec les certificats client X.509 peut être bloquée pour une authentification et une autorisation supplémentaires.

## Étape 3 : Autoriser AWS IoT l'appel de votre fonction Lambda
<a name="customize-client-configuration-grant-permission"></a>

Après avoir créé la fonction Lambda, vous devez autoriser son appel AWS IoT à l'aide de la commande CLI add [permission](https://docs.aws.amazon.com//cli/latest/reference/lambda/add-permission.html). Notez que cette fonction Lambda sera invoquée à chaque tentative de connexion à votre point de terminaison configuré. Pour plus d'informations, consultez [Autoriser l'appel AWS IoT de votre fonction Lambda](custom-auth-authorize.md).

## Étape 4 : définir la configuration de l'authentification pour un domaine
<a name="customize-client-configuration"></a>

La section suivante décrit comment définir la configuration de l'authentification pour un domaine personnalisé à l'aide du AWS CLI.

### Définir la configuration du certificat client pour un domaine (CLI)
<a name="customize-client-auth-cli"></a>

Si vous n'avez pas de configuration de domaine, utilisez la commande [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 pour en créer une. Si vous avez déjà une configuration de domaine, utilisez la commande [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 pour mettre à jour la configuration du certificat client pour un domaine. Vous devez ajouter l'ARN de la fonction Lambda que vous avez créée à l'étape précédente.

```
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`  
Nom de la configuration de domaine.

`authentication-type`  
Type d'authentification de la configuration du domaine. Pour plus d'informations, consultez la section [Choix d'un type d'authentification](protocols.md#connection-protocol-auth-mode).

`application-protocol`  
Protocole d'application avec lequel les appareils communiquent AWS IoT Core. Pour plus d'informations, consultez la section [Choix d'un protocole d'application](protocols.md#protocol-selection).

`client-certificate-config`  
Objet qui spécifie la configuration de l'authentification client pour un domaine.

`clientCertificateCallbackArn`  
Le nom de ressource Amazon (ARN) de la fonction Lambda qui AWS IoT invoque une couche TLS lors de l'établissement d'une nouvelle connexion. Pour personnaliser l'authentification client afin de valider un certificat client personnalisé, vous devez ajouter l'ARN de la fonction Lambda que vous avez créée à l'étape précédente.

Pour plus d'informations, consultez [CreateDomainConfiguration](https://docs.aws.amazon.com//iot/latest/apireference/API_CreateDomainConfiguration.html)et consultez le [UpdateDomainConfiguration](https://docs.aws.amazon.com//iot/latest/apireference/API_UpdateDomainConfiguration.html)Guide de *référence des AWS IoT API*. Pour plus d'informations sur les configurations de domaine, consultez la section [Configurations de domaine](https://docs.aws.amazon.com//iot/latest/developerguide/iot-custom-endpoints-configurable.html).