

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.

# Authentification
<a name="authentication"></a>

L'authentification est un mécanisme permettant de vérifier l'identité d'un client ou d'un serveur. L'authentification du serveur est le processus par lequel les appareils ou autres clients s'assurent qu'ils communiquent avec un point de AWS IoT terminaison réel. L'authentification des clients est le processus par lequel les appareils ou d'autres clients s'authentifient. AWS IoT

## Présentation des certificats X.509
<a name="x509-certificate-overview"></a>

Les certificats X.509 sont des certificats numériques qui font appel à la [norme d'infrastructure de clé publique X.509](https://en.wikipedia.org/wiki/X.509) pour associer une clé publique à une identité contenue dans un certificat. Les certificats X.509 sont émis par une entité de confiance appelée autorité de certification (CA). Celle-ci gère un ou plusieurs certificats spéciaux appelés certificats d'autorité de certification, qu'elle utilise pour émettre des certificats X.509. Seule l'autorité de certification a accès aux certificats d'autorité de certification (CA). Les chaînes de certificats X.509 sont utilisées à la fois pour l'authentification du serveur par les clients et pour l'authentification du client par le serveur.

# Authentification du serveur
<a name="server-authentication"></a>

Lorsque votre appareil ou un autre client tente de se connecter AWS IoT Core, le AWS IoT Core serveur envoie un certificat X.509 que votre appareil utilise pour authentifier le serveur. L'authentification a lieu au niveau de la couche TLS par le biais de la validation de la chaîne du [certificat X.509](x509-client-certs.md). Il s'agit de la même méthode que celle utilisée par votre navigateur lorsque vous visitez une URL HTTPS. Si vous souhaitez utiliser des certificats de votre propre autorité de certification, veuillez consulter [Gestion de vos certificats d’autorité de certification](manage-your-CA-certs.md).

Lorsque vos appareils ou d'autres clients établissent une connexion TLS avec un point de AWS IoT Core terminaison, AWS IoT Core présente une chaîne de certificats que les appareils utilisent pour vérifier qu'ils communiquent avec eux AWS IoT Core et qu'aucun autre serveur ne se fait passer AWS IoT Core pour un autre serveur. La chaîne présentée dépend de la combinaison du type de point de terminaison auquel l'appareil se connecte et de la [suite de chiffrement](transport-security.md) AWS IoT Core négociée par le client lors de la prise de contact TLS.

## Types de point de terminaison
<a name="endpoint-types"></a>

AWS IoT Core soutient`iot:Data-ATS`. `iot:Data-ATS`les points de terminaison présentent un certificat de serveur signé par une autorité de certification [Amazon Trust Services](https://www.amazontrust.com/repository/).

Les certificats présentés par les points de terminaison ATS ont été signés par Starfield (signature croisée). Certaines mises en œuvre de client TLS nécessitent la validation de la racine de confiance et exigent que les certificats d'autorité de certification Starfield soient installés dans les magasins d'approbations du client.

**Avertissement**  
L'utilisation d'une méthode d'épinglage de certificat qui hache l'ensemble du certificat (y compris le nom de l'émetteur, etc.) n'est pas recommandée car cela entraînera l'échec de la vérification du certificat, étant donné que les certificats ATS que nous fournissons sont signés par Starfield (signature croisée) et ont un nom d'émetteur différent.

**Important**  
Utilisez des `iot:Data-ATS` points de terminaison. Les certificats Symantec et Verisign sont devenus obsolètes et ne sont plus pris en charge par. AWS IoT Core

Vous pouvez utiliser la commande `describe-endpoint` pour créer votre point de terminaison ATS.

```
aws iot describe-endpoint --endpoint-type iot:Data-ATS
```

Cette commande `describe-endpoint` renvoie un point de terminaison au format suivant.

```
account-specific-prefix.iot.your-region.amazonaws.com
```

**Note**  
La première fois que la commande `describe-endpoint` est appelée, un point de terminaison est créé. Tous les appels suivants de `describe-endpoint` renvoient le même point de terminaison.

**Note**  
Pour afficher votre `iot:Data-ATS` point de terminaison dans la AWS IoT Core console, choisissez **Paramètres**. La console affiche uniquement le point de terminaison `iot:Data-ATS`.

### Création d'un `IotDataPlaneClient` avec le AWS SDK pour Java
<a name="java-client"></a>

Pour créer une annonce `IotDataPlaneClient` utilisant un `iot:Data-ATS` point de terminaison, vous devez effectuer les opérations suivantes. 
+ Créez un `iot:Data-ATS` point de terminaison à l'aide de l'[DescribeEndpoint](https://docs.aws.amazon.com/iot/latest/apireference/API_DescribeEndpoint.html)API.
+ Spécifiez ce point de terminaison lorsque vous créez le `IotDataPlaneClient`.

L'exemple suivant exécute ces deux opérations.

```
public void setup() throws Exception {
        IotClient client = IotClient.builder().credentialsProvider(CREDENTIALS_PROVIDER_CHAIN).region(Region.US_EAST_1).build();
        String endpoint = client.describeEndpoint(r -> r.endpointType("iot:Data-ATS")).endpointAddress();
        iot = IotDataPlaneClient.builder()
                                .credentialsProvider(CREDENTIALS_PROVIDER_CHAIN)
                                .endpointOverride(URI.create("https://" + endpoint))
                                .region(Region.US_EAST_1)
                                .build();
}
```

## Certificats d'autorité de certification pour l'authentification du serveur
<a name="server-authentication-certs"></a>

Selon le type de point de terminaison de données que vous utilisez et la suite de chiffrement que vous avez négociée, les certificats d'authentification AWS IoT Core du serveur sont signés par l'un des certificats d'autorité de certification racine suivants :

**Points de terminaison Amazon Trust Services (préférés)**

**Note**  
Vous devrez peut-être faire un clic droit sur ces liens et sélectionner **Enregistrer le lien sous...** pour enregistrer ces certificats sous forme de fichiers.
+ Clé RSA 2048 bits : [https://www.amazontrust.com/repository/AmazonRootCA1.pem](https://www.amazontrust.com/repository/AmazonRootCA1.pem)
+ Clé RSA 4096 bits : Amazon Root CA 2 Réservé pour un usage futur.
+ Clé ECC 256 bits : [https://www.amazontrust.com/repository/AmazonRootCA3.pem](https://www.amazontrust.com/repository/AmazonRootCA3.pem)
+ Clé ECC 384 bits : Amazon Root CA 4 Réservé pour un usage futur.

Ces certificats sont tous signés (signature croisée) par le [certificat d'autorité de certification racine Starfield](https://www.amazontrust.com/repository/SFSRootCAG2.pem). Toutes les nouvelles AWS IoT Core régions, à compter du lancement de AWS IoT Core la région Asie-Pacifique (Mumbai) le 9 mai 2018, ne proposent que des certificats ATS.

**VeriSign Points de terminaison (anciens)**
+ Clé RSA 2048 bits : certificat CA [VeriSign racine G5 public principal de classe 3](https://www.digicert.com/kb/digicert-root-certificates.htm)

## Instructions d'authentification du serveur
<a name="server-authentication-guidelines"></a>

De nombreuses variables peuvent affecter la capacité d'un appareil à valider le certificat d'authentification du serveur AWS IoT Core . Par exemple, les appareils peuvent être trop limités en mémoire pour contenir tous les certificats d'autorité de certification racine possibles, ou les appareils peuvent mettre en œuvre une méthode non standard de validation de certificat. Pour ces raisons, nous suggérons de suivre les instructions suivantes :
+ Nous vous recommandons d'utiliser votre point de terminaison ATS et d'installer tous les certificats Amazon Root CA pris en charge.
+ Si vous ne pouvez pas stocker tous ces certificats sur votre appareil et si vos appareils n'utilisent pas la validation basée sur ECC, vous pouvez omettre les certificats [https://www.amazontrust.com/repository/AmazonRootCA3.pem](https://www.amazontrust.com/repository/AmazonRootCA3.pem) et [https://www.amazontrust.com/repository/AmazonRootCA4.pem](https://www.amazontrust.com/repository/AmazonRootCA4.pem) ECC. Si vos appareils ne mettent pas en œuvre la validation de certificats basée sur RSA, vous pouvez omettre les certificats RSA [https://www.amazontrust.com/repository/AmazonRootCA1.pem](https://www.amazontrust.com/repository/AmazonRootCA1.pem) et [https://www.amazontrust.com/repository/AmazonRootCA2.pem](https://www.amazontrust.com/repository/AmazonRootCA2.pem). Vous devrez peut-être faire un clic droit sur ces liens et sélectionner **Enregistrer le lien sous...** pour enregistrer ces certificats sous forme de fichiers.
+ Si vous rencontrez des problèmes de validation de certificat de serveur lorsque vous vous connectez à votre point de terminaison ATS, essayez d'ajouter le certificat d'autorité de certification racine Amazon à signature croisée pertinent à votre magasin d'approbations. Vous devrez peut-être faire un clic droit sur ces liens et sélectionner **Enregistrer le lien sous...** pour enregistrer ces certificats sous forme de fichiers.
  + [Dument Signé Amazon Root CA 1](https://www.amazontrust.com/repository/G2-RootCA1.pem)
  + [Dument Signé Amazon Root CA 2](https://www.amazontrust.com/repository/G2-RootCA2.pem) - Réservé pour une utilisation ultérieure.
  + [Dument Signé Amazon Root CA 3](https://www.amazontrust.com/repository/G2-RootCA3.pem)
  + [Dument Signé ](https://www.amazontrust.com/repository/G2-RootCA4.pem) - Réservé pour une utilisation ultérieure.
+ Si vous rencontrez des problèmes de validation de certificat de serveur, votre appareil devra peut-être explicitement approuver l'autorité de certification racine. Essayez d'ajouter [https://www.amazontrust.com/repository/SFSRootCAG2.pem](https://www.amazontrust.com/repository/SFSRootCAG2.pem) à votre boutique de confiance.
+ Si vous rencontrez toujours des problèmes après avoir exécuté les étapes ci-dessus, contactez [AWS l’assistance aux développeurs](https://aws.amazon.com/premiumsupport/plans/developers/). 

**Note**  
Les certificats CA ne peuvent pas être utilisés au-delà de leur date d'expiration pour valider un certificat de serveur. Les certificats CA peuvent devoir être remplacés avant leur date d'expiration. Vérifiez que vous pouvez mettre à jour les certificats d’autorité de certification racine sur tous vos appareils ou vos clients afin d'assurer une connectivité permanente et la conformité aux bonnes pratiques de sécurité du moment.

**Note**  
Lorsque vous vous connectez AWS IoT Core au code de votre appareil, transmettez le certificat à l'API que vous utilisez pour vous connecter. L'API que vous utilisez varie selon le kit SDK. Pour plus d'informations, consultez la section [AWS IoT Core Appareil SDKs](iot-sdks.md).

# Authentification client
<a name="client-authentication"></a>

AWS IoT prend en charge trois types de principes d'identité pour l'authentification des appareils ou des clients :
+ [Certificats client X.509](x509-client-certs.md)
+ [Utilisateurs, groupes et rôles IAM](iam-users-groups-roles.md)
+ [Identités Amazon Cognito](cognito-identities.md)

Ces identités peuvent être utilisées avec des appareils et des applications mobiles, Web ou de bureau. Ils peuvent même être utilisés par un utilisateur qui saisit des commandes d'interface de ligne de AWS IoT commande (CLI). Généralement, AWS IoT les appareils utilisent des certificats X.509, tandis que les applications mobiles utilisent les identités Amazon Cognito. Les applications Web et de bureau utilisent IAM ou des identités fédérées. Les commandes AWS CLI utilisent IAM. Pour plus d'informations sur les identités IAM, consultez [Gestion des identités et des accès pour AWS IoT](security-iam.md).

# Certificats client X.509
<a name="x509-client-certs"></a>

Les certificats X.509 permettent AWS IoT d'authentifier les connexions entre les clients et les appareils. Les certificats clients doivent être enregistrés pour AWS IoT qu'un client puisse communiquer avec lui AWS IoT. Un certificat client peut être enregistré en plusieurs Compte AWS exemplaires Région AWS pour faciliter le déplacement d'appareils entre vos appareils Compte AWS situés dans la même région. Pour plus d’informations, consultez [Utilisation de certificats client X.509 dans plusieurs Compte AWS s avec enregistrement multi-comptes](#multiple-account-cert). 

Nous vous recommandons d’attribuer à chaque appareil ou client un certificat unique de manière à permettre des actions de gestion des clients bien définies, y compris la révocation de certificats. Les appareils et les clients doivent également prendre en charge la rotation et le remplacement des certificats afin d'aider à assurer un bon fonctionnement à l'expiration de ces derniers.

Pour de plus amples informations sur l'utilisation des certificats X.509 pour la prise en charge d’un grand nombre d’appareils, veuillez consulter [Mise en service des appareils](iot-provision.md) pour prendre connaissance des différentes options de gestion des certificats et de mise en service prises en charge par AWS IoT .

**AWS IoT prend en charge les types de certificats clients X.509 suivants :**
+  Certificats X.509 générés par AWS IoT
+  Certificats X.509 signés par une autorité de certification enregistrée auprès AWS IoT de.
+  Certificats X.509 signés par une autorité de certification non enregistrée auprès d’ AWS IoT.

Cette section décrit comment gérer les certificats X.509 dans AWS IoT. Vous pouvez utiliser la AWS IoT console ou AWS CLI effectuer les opérations de certificat suivantes :
+ [Création de certificats AWS IoT clients](device-certs-create.md)
+ [Création de vos propres certificats clients](device-certs-your-own.md)
+ [Enregistrement d’un certificat client](register-device-cert.md)
+ [Activation ou désactivation d’un certificat client](activate-or-deactivate-device-cert.md)
+ [Révocation d’un certificat client](revoke-ca-cert.md)

Pour plus d'informations sur les AWS CLI commandes qui exécutent ces opérations, consultez la section [Référence de la AWS IoT CLI](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/index.html).

## Utilisation des certificats clients X.509
<a name="x509-client-cert-basics"></a>

Les certificats X.509 authentifient les connexions des clients et des appareils à. AWS IoT Les certificats X.509 offrent plusieurs avantages par rapport à d'autres mécanismes d'identification et d'authentification. Les certificats X.509 activent des clés asymétriques à utiliser avec les appareils. Par exemple, vous pouvez graver des clés privées dans un stockage sécurisé sur un appareil afin que le matériel cryptographique sensible ne quitte jamais l'appareil. Les certificats X.509 offrent une authentification du client plus fiable que d'autres méthodes, telles que le nom d'utilisateur et le mot de passe ou les jetons de porteur, car la clé privée ne quitte jamais l'appareil.

AWS IoT authentifie les certificats clients en utilisant le mode d'authentification client du protocole TLS. La prise en charge de TLS est disponible dans de nombreux langages de programmation et systèmes d'exploitation ; ce protocole est couramment utilisée pour le chiffrement des données. Dans le cadre de l'authentification client TLS, AWS IoT demande un certificat client X.509 et valide le statut du certificat par Compte AWS rapport à un registre de certificats. Il demande ensuite au client de prouver qu'il est propriétaire de la clé privée correspondant à la clé publique contenue dans le certificat. AWS IoT oblige les clients à envoyer l'[extension SNI (Server Name Indication)](https://tools.ietf.org/html/rfc3546#section-3.1) au protocole TLS (Transport Layer Security). Pour de plus amples informations sur la configuration de l'extension SNI, veuillez consulter [Sûreté des transports dans AWS IoT Core](transport-security.md).

Pour faciliter une connexion client sécurisée et cohérente au AWS IoT cœur, un certificat client X.509 doit posséder les éléments suivants :
+ Enregistré dans AWS IoT Core. Pour de plus amples informations, veuillez consulter [Enregistrement d’un certificat client](register-device-cert.md).
+ Avoir un état de statut de`ACTIVE`. Pour de plus amples informations, veuillez consulter [Activation ou désactivation d’un certificat client](activate-or-deactivate-device-cert.md).
+ Pas encore atteint la date d'expiration du certificat.

Vous pouvez créer des certificats clients qui utilisent Amazon Root CA et vous pouvez utiliser vos propres certificats clients signés par une autre autorité de certification (CA). Pour plus d'informations sur l'utilisation de la AWS IoT console pour créer des certificats utilisant l'autorité de certification Amazon Root, consultez[Création de certificats AWS IoT clients](device-certs-create.md). Pour plus d'informations sur l'utilisation de vos propres certificats X.509, consultez [Création de vos propres certificats clients](device-certs-your-own.md).

La date et l'heure d'expiration des certificats signés par un certificat d'autorité de certification sont définies au moment de la création du certificat. Les certificats X.509 générés par AWS IoT expirent à minuit UTC le 31 décembre 2049 (2049-12-31T 23:59:59 Z).

AWS IoT Device Defender peut effectuer des audits sur votre appareil Compte AWS et sur vos appareils conformément aux meilleures pratiques courantes en matière de sécurité de l'IoT. Cela inclut la gestion des dates d'expiration des certificats X.509 signés par votre autorité de certification ou par l'autorité Amazon Root CA. Pour plus d'informations sur la gestion de la date d'expiration d'un certificat, consultez les sections [Expiration du certificat de l'appareil et expiration](https://docs.aws.amazon.com/iot-device-defender/latest/devguide/audit-chk-device-cert-approaching-expiration.html) du [certificat CA](https://docs.aws.amazon.com/iot-device-defender/latest/devguide/audit-chk-ca-cert-approaching-expiration.html).

Sur le AWS IoT blog officiel, vous trouverez une analyse plus approfondie de la gestion de la rotation des certificats des appareils et des meilleures pratiques en matière de sécurité dans la section [Comment gérer la rotation des certificats des appareils IoT à l'aide](https://aws.amazon.com/blogs/iot/how-to-manage-iot-device-certificate-rotation-using-aws-iot/) de AWS IoT.

## Utilisation de certificats client X.509 dans plusieurs Compte AWS s avec enregistrement multi-comptes
<a name="multiple-account-cert"></a>

L'inscription à plusieurs comptes permet de déplacer des appareils entre vos Compte AWS dans la même région ou dans des régions différentes. Avec cela, vous pouvez enregistrer, tester et configurer un appareil dans un compte de préproduction, puis enregistrer et utiliser le même appareil et le même certificat d'appareil dans un compte de production. Vous pouvez également enregistrer le certificat client sur l'appareil ou les certificats de l'appareil sans qu'une autorité de certification soit enregistrée auprès de celle-ci AWS IoT. Pour plus d'informations, voir [Enregistrer un certificat client signé par une autorité de certification (CLI) non enregistrée](manual-cert-registration.md#manual-cert-registration-noca-cli).

**Note**  
Les certificats utilisés pour l'enregistrement de plusieurs comptes sont pris en charge sur `iot:Data-ATS` les types `iot:Data` (anciens), `iot:Jobs`, et de point de terminaison `iot:CredentialProvider`. Pour plus d'informations sur les points de terminaison des AWS IoT appareils, consultez[AWS IoT données de l'appareil et points de terminaison de service](iot-connect-devices.md#iot-connect-device-endpoints).

Les appareils qui utilisent l'enregistrement multi-comptes doivent envoyer l'[extension SNI (Server Name Indication)](https://tools.ietf.org/html/rfc3546#section-3.1) au protocole TLS (Transport Layer Security) et fournir l'adresse complète du point de terminaison `host_name` sur le terrain, lorsqu'ils se connectent à. AWS IoT AWS IoT utilise l'adresse du point de terminaison `host_name` pour acheminer la connexion vers le AWS IoT compte approprié. Les périphériques existants qui n'envoient pas d'adresse de point de terminaison valide dans `host_name` continueront de fonctionner, mais ils ne pourront pas utiliser les fonctionnalités qui nécessitent ces informations. Pour de plus amples informations sur l'extension SNI et pour savoir comment identifier l'adresse du point de terminaison pour le champ `host_name`, veuillez consulter [Sûreté des transports dans AWS IoT Core](transport-security.md). 

**Pour utiliser l'enregistrement de plusieurs comptes**

1. Vous pouvez enregistrer les certificats d’appareil auprès d'une autorité de certification. Vous pouvez enregistrer l'autorité de certification signataire dans plusieurs comptes en `SNI_ONLY` mode et utiliser cette autorité de certification pour enregistrer le même certificat client sur plusieurs comptes. Pour de plus amples informations, veuillez consulter [Enregistrer un certificat CA en mode SNI\$1ONLY (CLI) - Recommandé](manage-your-CA-certs.md#register-CA-cert-SNI-cli).

1. Vous pouvez enregistrer les certificats d’appareil sans autorité de certification. Consultez [Enregistrement d’un certificat client signé par une autorité de certification non enregistrée (CLI)​](manual-cert-registration.md#manual-cert-registration-noca-cli). L'enregistrement d'une autorité de certification est facultatif. Vous n'êtes pas obligé d'enregistrer l'autorité de certification auprès de laquelle les certificats de l'appareil ont été signés AWS IoT.

## Algorithmes de signature de certificats supportés par AWS IoT
<a name="x509-cert-algorithms"></a>

AWS IoT prend en charge les algorithmes de signature de certificats suivants :
+ SHA256AVEC RSA
+ SHA384AVEC RSA
+ SHA512AVEC RSA
+ SHA256WITHRSAANDMGF1 (RSASSA-PSS)
+ SHA384WITHRSAANDMGF1 (RSASSA-PSS)
+ SHA512WITHRSAANDMGF1 (RSASSA-PSS)
+ DSA\$1AVEC\$1 SHA256
+ ECDSA-AVEC- SHA256
+ ECDSA-AVEC- SHA384
+ ECDSA-AVEC- SHA512

Pour plus d'informations sur l'authentification et la sécurité des certificats, consultez la section [Qualité de la clé de certificat de l'appareil](https://docs.aws.amazon.com/iot-device-defender/latest/devguide/audit-chk-device-cert-key-quality.html).

**Note**  
La demande de signature de certificat (CSR) doit inclure une clé publique. La clé peut être soit une clé RSA d'une longueur d'au moins 2 048 bits, soit une clé ECC issue des courbes NIST P-256, NIST P-384 ou NIST P-521. Pour plus d'informations, consultez [CreateCertificateFromCsr](https://docs.aws.amazon.com/iot/latest/apireference/API_CreateCertificateFromCsr.html) dans le *Guide de référence des API AWS IoT *.

## Algorithmes clés pris en charge par AWS IoT
<a name="x509-cert-key-algorithms"></a>

Le tableau ci-dessous montre comment les algorithmes clés sont pris en charge :


****  

| Algorithme clé | Algorithme de signature de certificat | Version de TLS | Pris en charge ? Oui ou Non | 
| --- | --- | --- | --- | 
| RSA avec une taille de clé d'au moins 2 048 bits | Tous | TLS 1.2 TLS 1.3 | Oui | 
| ECC NIST P-256/P-384/P-521 | Tous | TLS 1.2 TLS 1.3 | Oui | 
| RSA-PSS avec une taille de clé d'au moins 2048 bits | Tous | TLS 1.2 | Non | 
| RSA-PSS avec une taille de clé d'au moins 2048 bits | Tous | TLS 1.3 | Oui | 

Pour créer un certificat à l'aide du [CreateCertificateFromCSR](https://docs.aws.amazon.com//iot/latest/apireference/API_CreateCertificateFromCsr.html), vous pouvez utiliser un algorithme de clé pris en charge pour générer une clé publique pour votre CSR. Pour enregistrer votre propre certificat à l'aide de [RegisterCertificate](https://docs.aws.amazon.com//iot/latest/apireference/API_RegisterCertificate.html)notre autorité de [RegisterCertificateWithoutcertification](https://docs.aws.amazon.com//iot/latest/apireference/API_RegisterCertificateWithoutCA.html), vous pouvez utiliser un algorithme de clé pris en charge afin de générer une clé publique pour le certificat.

Pour plus d'informations, consultez la section [Politiques de sécurité](https://docs.aws.amazon.com//iot/latest/developerguide/transport-security.html#tls-policy-table).

# Création de certificats AWS IoT clients
<a name="device-certs-create"></a>

AWS IoT fournit des certificats clients signés par l'autorité de certification Amazon Root (CA).

Cette rubrique décrit comment créer un certificat client signé par l'autorité de certification racine Amazon et télécharger les fichiers de certificat. Après avoir créé les fichiers de certificat client, vous devez les installer sur le client.

**Note**  
Chaque certificat client X.509 fourni par AWS IoT contient les attributs d'émetteur et de sujet que vous avez définis au moment de la création du certificat. Les attributs du certificat ne sont immuables qu'une fois le certificat créé.

Vous pouvez utiliser la AWS IoT console ou le AWS CLI pour créer un AWS IoT certificat signé par l'autorité de certification Amazon Root.

## Création d'un AWS IoT certificat (console)
<a name="device-certs-create-console"></a>

**Pour créer un AWS IoT certificat à l'aide de la AWS IoT console**

1. Connectez-vous à la [AWS IoT console AWS Management Console et ouvrez-la](https://console.aws.amazon.com/iot/home).

1. Dans le volet de navigation, choisissez successivement **Sécurité**, **Certificats** puis **Créer**.

1. Choisissez **Création d'un certificat en un clic (recommandé)** - **Créer un certificat**.

1. À partir de la page **Certificat créé**, téléchargez les fichiers du certificat client pour l’objet, la clé publique et privée sur un emplacement sécurisé. Ces certificats générés par ne AWS IoT sont disponibles que pour une utilisation avec AWS IoT les services.

   Si vous avez également besoin du fichier de certificat Amazon Root CA, cette page contient également le lien vers la page où vous pouvez le télécharger.

1. Un certificat client est désormais créé et enregistré auprès d’ AWS IoT. Vous devez activer le certificat avant de l'utiliser dans un client.

    Pour activer le certificat client maintenant, choisissez **Activer**. Si vous ne souhaitez pas activer le certificat maintenant, consultez [Activation d’un certificat client (console)](activate-or-deactivate-device-cert.md#activate-device-cert-console) la section pour savoir comment activer le certificat ultérieurement.

   

1. Si vous souhaitez attacher une politique au certificat, choisissez **Attacher une Politique**.

   Si vous ne souhaitez pas attacher de stratégie maintenant, choisissez **Terminé**. Vous pouvez attacher une stratégie ultérieurement.

Après avoir terminé la procédure, installez les fichiers de certificat sur le client.

## Création d'un AWS IoT certificat (CLI)
<a name="device-certs-create-cli"></a>

 AWS CLI Fournit la **[create-keys-and-certificate](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/create-keys-and-certificate.html)** commande permettant de créer des certificats clients signés par l'autorité de certification Amazon Root. Toutefois, cette commande ne télécharge pas le fichier de certificat de l’autorité de certification racine Amazon. Vous pouvez télécharger le fichier de certificat de l'autorité de certification racine Amazon à partir de [Certificats d'autorité de certification pour l'authentification du serveur](server-authentication.md#server-authentication-certs). 

Cette commande crée des fichiers de clé privée, de clé publique et de certificat X.509, enregistre et active le certificat avec AWS IoT.

```
aws iot create-keys-and-certificate \
    --set-as-active \
    --certificate-pem-outfile certificate_filename.pem \
    --public-key-outfile public_filename.key \
    --private-key-outfile private_filename.key
```

Si vous ne souhaitez pas activer le certificat lorsque vous le créez et l'enregistrez, cette commande crée les fichiers de clé privée, de clé publique et de certificat X.509, enregistre le certificat, mais ne l'active pas. [Activation d’un certificat client (CLI)](activate-or-deactivate-device-cert.md#activate-device-cert-cli) décrit comment activer le certificat ultérieurement.

```
aws iot create-keys-and-certificate \
    --no-set-as-active \
    --certificate-pem-outfile certificate_filename.pem \
    --public-key-outfile public_filename.key \
    --private-key-outfile private_filename.key
```



Installez les fichiers de certificat sur le client.

# Création de vos propres certificats clients
<a name="device-certs-your-own"></a>

AWS IoT prend en charge les certificats clients signés par n'importe quelle autorité de certification racine ou intermédiaire (CA). AWS IoT utilise des certificats CA pour vérifier la propriété des certificats. Pour utiliser des certificats d'appareil signés par une autorité de certification autre que l'autorité de certification d'Amazon, le certificat de l'autorité de certification doit être enregistré auprès de l'autorité de certification AWS IoT afin que nous puissions vérifier la propriété du certificat de l'appareil.

AWS IoT prend en charge plusieurs méthodes pour apporter vos propres certificats (BYOC) : 
+ Tout d’abord, enregistrez l’autorité de certification utilisée pour signer les certificats clients, puis enregistrez les certificats clients individuels. Si vous souhaitez enregistrer l'appareil ou le client sur son certificat client lors de sa première connexion AWS IoT (également appelé [provisionnement juste à temps), vous devez enregistrer l'autorité](https://docs.aws.amazon.com//iot/latest/developerguide/jit-provisioning.html) de certification signataire auprès AWS IoT de laquelle il se connecte et activer l'enregistrement automatique.
+ Si vous ne pouvez pas enregistrer l'autorité de certification signataire, vous pouvez choisir d'enregistrer les certificats clients sans l'autorité de certification. Pour les appareils enregistrés sans autorité de certification, vous devez présenter [une indication du nom du serveur (SNI)](https://www.rfc-editor.org/rfc/rfc3546#section-3.1) lorsque vous les AWS IoT connectez.

**Note**  
Pour enregistrer des certificats clients à l'aide de l'autorité de certification, vous devez enregistrer l'autorité de certification signataire AWS IoT, et non auprès d'une autre autorité de certification CAs dans la hiérarchie.

**Note**  
Un certificat d'autorité de certification peut être enregistré en mode `DEFAULT` que par un seul compte dans une région. Un certificat d'autorité de certification peut être enregistré en mode `SNI_ONLY` que par plusieurs comptes dans une région. 

Pour plus d'informations sur l'utilisation des certificats X.509 pour la prise en charge de plusieurs appareils, veuillez consulter [Mise en service des appareils](iot-provision.md) pour prendre connaissance des différentes options de gestion et de mise en service des certificats prises en charge par AWS IoT .

**Topics**
+ [

# Gestion de vos certificats d’autorité de certification
](manage-your-CA-certs.md)
+ [

# Création d’un certificat client à l'aide de votre certificat d’autorité de certification
](create-device-cert.md)

# Gestion de vos certificats d’autorité de certification
<a name="manage-your-CA-certs"></a>

Cette section décrit les tâches courantes de gestion de vos propres certificats d'autorité de certification.

Vous pouvez enregistrer votre autorité de certification (CA) auprès de laquelle AWS IoT vous utilisez des certificats clients signés par une autorité de AWS IoT certification non reconnue.

Si vous souhaitez que les clients enregistrent automatiquement leurs certificats clients AWS IoT lors de leur première connexion, l'autorité de certification qui a signé les certificats clients doit être enregistrée auprès de l'autorité de certification AWS IoT. Sinon, vous n'avez pas besoin d'enregistrer le certificat de l'autorité de certification qui a signé les certificats clients.

**Note**  
Un certificat d'autorité de certification peut être enregistré en mode `DEFAULT` que par un seul compte dans une région. Un certificat d'autorité de certification peut être enregistré en mode `SNI_ONLY` que par plusieurs comptes dans une région.

**Topics**
+ [

## Création d’un certificat d’autorité de certification
](#create-your-CA-cert)
+ [

## Enregistrement de votre certificat d’autorité de certification
](#register-CA-cert)
+ [

## Désactivation d'un certificat d'autorité de certification
](#deactivate-ca-cert)

## Création d’un certificat d’autorité de certification
<a name="create-your-CA-cert"></a>

Si vous ne disposez pas de certificat CA, vous pouvez utiliser les outils [OpenSSL v1.1.1i](https://www.openssl.org/) pour en créer un.

**Note**  
Vous ne pouvez pas exécuter cette procédure dans la AWS IoT console.

**Pour créer un certificat CA à l'aide des outils [OpenSSL v1.1.1i](https://www.openssl.org/)**

1. Générez une paire de clés.

   ```
   openssl genrsa -out root_CA_key_filename.key 2048
   ```

1. Utilisez la clé privée de la paire de clés pour générer un certificat CA.

   ```
   openssl req -x509 -new -nodes \
       -key root_CA_key_filename.key \
       -sha256 -days 1024 \
       -out root_CA_cert_filename.pem
   ```

## Enregistrement de votre certificat d’autorité de certification
<a name="register-CA-cert"></a>

Ces procédures décrivent comment enregistrer un certificat auprès d'une autorité de certification (CA) autre que l'autorité de certification d'Amazon. AWS IoT Core utilise des certificats CA pour vérifier la propriété des certificats. Pour utiliser des certificats d'appareil signés par une autorité de certification autre que celle d'Amazon, vous devez enregistrer le certificat auprès de l'autorité de certification AWS IoT Core afin qu'elle puisse vérifier la propriété du certificat de l'appareil.

### Enregistrement d’un certificat d'autorité de certification (console)
<a name="register-CA-cert-console"></a>

**Note**  
Pour enregistrer un certificat CA dans la console, commencez par [enregistrer le certificat CA](https://console.aws.amazon.com//iot/home#/create/cacertificate) dans la console. Vous pouvez enregistrer votre autorité de certification en mode multi-comptes, sans avoir à fournir de certificat de vérification ni d’accéder à la clé privée. Une autorité de certification peut être enregistrée en mode multi-comptes par plusieurs Comptes AWS dans un même Région AWS. Vous pouvez enregistrer votre autorité de certification en mode compte unique en fournissant un certificat de vérification et une preuve de propriété de la clé privée de l'autorité de certification.

### Enregistrement d’un certificat d'autorité de certification (CLI)
<a name="register-CA-cert-cli"></a>

Vous pouvez enregistrer un certificat CA en mode `DEFAULT` ou en mode `SNI_ONLY`. Une autorité de certification peut être enregistrée en `DEFAULT` mode une Compte AWS par une Région AWS. Une autorité de certification peut être enregistrée en `SNI_ONLY` mode par plusieurs Comptes AWS dans le même mode Région AWS. Pour en savoir plus sur les certificats CA, veuillez consulter [Modecertificat](https://docs.aws.amazon.com//iot/latest/apireference/API_CACertificateDescription.html#iot-Type-CACertificateDescription-certificateMode).

**Note**  
Nous vous recommandons d'enregistrer une autorité de certification en mode `SNI_ONLY`. Vous n'avez pas besoin de fournir de certificat de vérification ni d'accès à la clé privée, et vous pouvez enregistrer l'autorité de certification par plusieurs Comptes AWS fois Région AWS.

#### Enregistrer un certificat CA en mode SNI\$1ONLY (CLI) - Recommandé
<a name="register-CA-cert-SNI-cli"></a>

**Conditions préalables**

Vérifiez que les éléments suivants sont disponibles sur votre ordinateur avant de continuer :
+ Le fichier de certificat de l'autorité de certification racine (référencé dans l'exemple suivant sous le nom `root_CA_cert_filename.pem`)
+ [OpenSSL v1.1.1i](https://www.openssl.org/) ou version ultérieure

**Pour enregistrer un certificat CA en `SNI_ONLY` mode à l'aide du AWS CLI**

1. Enregistrez le certificat CA auprès de AWS IoT. À l'aide de la commande **register-ca-certificate**, entrez le nom du fichier du certificat CA. Pour plus d’informations, consultez [register-ca-certificate](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/register-ca-certificate.html) dans la *Référence des commandes de l’AWS CLI *.

   ```
   aws iot register-ca-certificate \
       --ca-certificate file://root_CA_cert_filename.pem \
       --certificate-mode SNI_ONLY
   ```

   En cas de succès, cette commande renvoie le*certificateId*.

1. À ce stade, le certificat CA a été enregistré AWS IoT mais il est inactif. Le certificat de l'autorité de certification doit être actif avant que vous puissiez enregistrer les certificats clients qu'il a signés.​

   Cette étape active le certificat de l'autorité de certification.

   Pour activer le certificat CA, utilisez la commande **update-certificate** comme suit. Pour plus d'informations, consultez [mettre à jour-le certificat](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/update-certificate.html) dans la *AWS CLI Référence des commandes*.

   ```
   aws iot update-ca-certificate \
       --certificate-id certificateId \
       --new-status ACTIVE
   ```

Utilisez la commande **describe-ca-certificate** pour voir le statut du certificat CA. Pour plus d’informations, consultez [describe-ca-certificate](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/describe-ca-certificate.html) dans la *Référence des commandes de l’AWS CLI *.

#### Enregistrement d’un certificat CA en `DEFAULT` mode (CLI)
<a name="register-CA-cert-default-cli"></a>

**Conditions préalables**

Vérifiez que les éléments suivants sont disponibles sur votre ordinateur avant de continuer :
+ Le fichier de certificat de l'autorité de certification racine (référencé dans l'exemple suivant sous le nom `root_CA_cert_filename.pem`)
+ Le fichier de certificat de l'autorité de certification racine (référencé dans l'exemple suivant sous `root_CA_key_filename.key`)
+ [OpenSSL v1.1.1i](https://www.openssl.org/) ou version ultérieure

**Pour enregistrer un certificat CA en `DEFAULT` mode à l'aide du AWS CLI**

1. Pour obtenir un code d'enregistrement auprès de AWS IoT, utilisez**get-registration-code**. Enregistrez le `registrationCode` renvoyé à utiliser en tant que `Common Name` du certificat de vérification de clé privée. Pour plus d’informations, consultez [get-registration-code](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/get-registration-code.html) dans la *Référence des commandes de l’AWS CLI *.

   ```
   aws iot get-registration-code
   ```

1. Générez une paire de clés pour le certificat de vérification de clé privée :

   ```
   openssl genrsa -out verification_cert_key_filename.key 2048
   ```

1. Créez une demande de signature de certificat (CSR) pour le certificat de vérification de clé privée. Dans le champ `Common Name` du certificat, indiquez la valeur `registrationCode` renvoyée par **get-registration-code**.

   ```
   openssl req -new \
       -key verification_cert_key_filename.key \
       -out verification_cert_csr_filename.csr
   ```

   Vous êtes invité à entrer certaines informations, notamment le `Common Name` du certificat.

   ```
   You are about to be asked to enter information that will be incorporated
   into your certificate request.
   What you are about to enter is what is called a Distinguished Name or a DN.
   There are quite a few fields but you can leave some blank
   For some fields there will be a default value,
   If you enter '.', the field will be left blank.
   -----
   Country Name (2 letter code) [AU]:
       State or Province Name (full name) []:
       Locality Name (for example, city) []:
       Organization Name (for example, company) []:
       Organizational Unit Name (for example, section) []:
       Common Name (e.g. server FQDN or YOUR name) []:your_registration_code
       Email Address []:
   
       Please enter the following 'extra' attributes
       to be sent with your certificate request
       A challenge password []:
       An optional company name []:
   ```

1. Utilisez la CSR pour créer un certificat de vérification de clé privée :

   ```
   openssl x509 -req \
       -in verification_cert_csr_filename.csr \
       -CA root_CA_cert_filename.pem \
       -CAkey root_CA_key_filename.key \
       -CAcreateserial \
       -out verification_cert_filename.pem \
       -days 500 -sha256
   ```

1. Enregistrez le certificat CA auprès de AWS IoT. Transmettez le nom de fichier de certificat CA et le nom du fichier de certificat de vérification de clé privée à la commande **register-ca-certificate**, comme suit. Pour plus d’informations, consultez [register-ca-certificate](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/register-ca-certificate.html) dans la *Référence des commandes de l’AWS CLI *.

   ```
   aws iot register-ca-certificate \
       --ca-certificate file://root_CA_cert_filename.pem \
       --verification-cert file://verification_cert_filename.pem
   ```

   Cette commande renvoie le*certificateId*, en cas de succès.

1. À ce stade, le certificat CA a été enregistré AWS IoT mais n'est pas actif. Le certificat CA doit être actif avant que vous puissiez enregistrer les certificats clients qu'il a signés.

   Cette étape active le certificat de l'autorité de certification.

   Pour activer le certificat CA, utilisez la commande **update-certificate** comme suit. Pour plus d'informations, consultez [mettre à jour-le certificat](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/update-certificate.html) dans la *AWS CLI Référence des commandes*.

   ```
   aws iot update-ca-certificate \
       --certificate-id certificateId \
       --new-status ACTIVE
   ```

Utilisez la commande **describe-ca-certificate** pour voir le statut du certificat CA. Pour plus d’informations, consultez [describe-ca-certificate](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/describe-ca-certificate.html) dans la *Référence des commandes de l’AWS CLI *.

### Créez un certificat de vérification CA pour enregistrer le certificat CA dans la console
<a name="create-CA-verification-cert"></a>

**Note**  
Cette procédure est uniquement destinée à être utilisée si vous enregistrez un certificat CA depuis la AWS IoT console.  
Si vous n'avez pas accédé à cette procédure depuis la AWS IoT console, lancez le processus d'enregistrement du certificat CA dans la console à l'adresse [Enregistrer le certificat CA](https://console.aws.amazon.com//iot/home#/create/cacertificate). 

Vérifiez que les éléments suivants sont disponibles sur le même ordinateur avant de continuer :
+ Le fichier de certificat de l'autorité de certification racine (référencé dans l'exemple suivant sous le nom `root_CA_cert_filename.pem`)
+ Le fichier de certificat de l'autorité de certification racine (référencé dans l'exemple suivant sous `root_CA_key_filename.key`)
+ [OpenSSL v1.1.1i](https://www.openssl.org/) ou version ultérieure

**Pour utiliser l'interface de ligne de commande pour créer un certificat de vérification CA afin d'enregistrer votre certificat CA dans la console**

1. `verification_cert_key_filename.key`Remplacez-le par le nom du fichier clé du certificat de vérification que vous souhaitez créer (par exemple,**verification\$1cert.key**). Exécutez ensuite cette commande pour générer une paire de clés pour le certificat de vérification de clé privée :

   ```
   openssl genrsa -out verification_cert_key_filename.key 2048
   ```

1. Remplacez `verification_cert_key_filename.key` par le nom du fichier de clé que vous avez créé à l'étape 1.​

   Remplacez `verification_cert_csr_filename.csr` par le nom du fichier de demande de signature du certificat (CSR) que vous souhaitez créer. Par exemple, **verification\$1cert.csr**.

   Exécutez cette commande pour créer le fichier CSR.

   ```
   openssl req -new \
       -key verification_cert_key_filename.key \
       -out verification_cert_csr_filename.csr
   ```

   La commande vous invite à saisir des informations supplémentaires qui seront expliquées plus loin.

1. Dans la AWS IoT console, dans le conteneur du **certificat de vérification**, copiez le code d'enregistrement.

1. Les informations que la commande **openssl** vous demande de saisir sont présentées dans l'exemple suivant. À l'exception du champ `Common Name`, vous pouvez saisir vos propres valeurs ou les laisser vides.

   Dans le champ `Common Name`, collez le code d'enregistrement que vous avez copié à l'étape précédente.

   ```
   You are about to be asked to enter information that will be incorporated
   into your certificate request.
   What you are about to enter is what is called a Distinguished Name or a DN.
   There are quite a few fields but you can leave some blank
   For some fields there will be a default value,
   If you enter '.', the field will be left blank.
   -----
   Country Name (2 letter code) [AU]:
       State or Province Name (full name) []:
       Locality Name (for example, city) []:
       Organization Name (for example, company) []:
       Organizational Unit Name (for example, section) []:
       Common Name (e.g. server FQDN or YOUR name) []:your_registration_code
       Email Address []:
   
       Please enter the following 'extra' attributes
       to be sent with your certificate request
       A challenge password []:
       An optional company name []:
   ```

   Une fois que vous avez terminé, la commande crée le fichier CSR.

1. Remplacez la `verification_cert_csr_filename.csr` par la `verification_cert_csr_filename.csr` que vous avez utilisée à l'étape précédente.

   Remplacez `root_CA_cert_filename.pem` par le nom de fichier du certificat CA que vous souhaitez enregistrer.

   Remplacez `root_CA_key_filename.key` par le nom du fichier de clé privée du certificat CA.

   Remplacez `verification_cert_filename.pem` par le nom de fichier du certificat de vérification que vous souhaitez créer.​ Par exemple, **verification\$1cert.pem**.

   ```
   openssl x509 -req \
       -in verification_cert_csr_filename.csr \
       -CA root_CA_cert_filename.pem \
       -CAkey root_CA_key_filename.key \
       -CAcreateserial \
       -out verification_cert_filename.pem \
       -days 500 -sha256
   ```

1. Une fois la commande OpenSSL terminée, vous devriez avoir ces fichiers prêts à être utilisés lorsque vous revenez à la console.
   + Votre fichier de certificat CA (`root_CA_cert_filename.pem` utilisé dans la commande précédente)
   + Le certificat de vérification que vous avez créé à l'étape précédente (*verification\$1cert\$1filename.pem*utilisé dans la commande précédente)

## Désactivation d'un certificat d'autorité de certification
<a name="deactivate-ca-cert"></a>

Lorsqu'un certificat d'autorité de certification (CA) est activé pour l'enregistrement automatique des certificats clients, AWS IoT vérifie le certificat de l'autorité de certification pour s'assurer que l'autorité de certification l'est`ACTIVE`. Si le certificat CA l'est`INACTIVE`, AWS IoT cela n'autorise pas l'enregistrement du certificat client.

En définissant le certificat de l'autorité de certification sur `INACTIVE`, vous empêchez l'enregistrement automatique de tout nouveau certificat client émis par l'autorité de certification.

**Note**  
Les certificats clients enregistrés qui ont été signés par le certificat d'autorité de certification compromis continuent de fonctionner jusqu’à ce que vous les révoquiez explicitement.

### Désactivation d'un certificat d'autorité de certification (console)
<a name="deactivate-ca-cert-console"></a>

**Pour désactiver un certificat CA à l'aide de la console AWS IoT**

1. Connectez-vous à la [AWS IoT console AWS Management Console et ouvrez-la](https://console.aws.amazon.com/iot/home).

1. Dans le volet de navigation de gauche, choisissez **Secure**, choisissez **CAs**.

1. Dans la liste des autorités de certification, recherchez celle que vous souhaitez désactiver et choisissez l'icône de points de suspension pour ouvrir le menu d'options.

1. Dans le menu d'options, choisissez **Désactiver**.

L'autorité de certification doit apparaître comme **Inactive** dans la liste.

**Note**  
La AWS IoT console ne permet pas de répertorier les certificats signés par l'autorité de certification que vous avez désactivée. Pour connaître l’option d’ AWS CLI permettant de répertorier ces certificats, veuillez consulter [Désactivation d'un certificat d'autorité de certification (CLI)](#deactivate-ca-cert-cli).

### Désactivation d'un certificat d'autorité de certification (CLI)
<a name="deactivate-ca-cert-cli"></a>

 AWS CLI Fournit la [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/update-ca-certificate.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/update-ca-certificate.html)commande permettant de désactiver un certificat CA.

```
aws iot update-ca-certificate \
    --certificate-id certificateId \
    --new-status INACTIVE
```

Utilisez la commande [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/list-certificates-by-ca.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/list-certificates-by-ca.html) pour obtenir la liste de tous les certificats clients enregistrés qui ont été signés par l'autorité de certification spécifiée. Pour chaque certificat client signé par le certificat d’autorité de certification spécifié, utilisez la commande [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/update-certificate.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/update-certificate.html) pour révoquer le certificat client afin d'empêcher son utilisation.

Utilisez la commande [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/describe-ca-certificate.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/describe-ca-certificate.html) pour voir le statut du certificat d'autorité de certification.

# Création d’un certificat client à l'aide de votre certificat d’autorité de certification
<a name="create-device-cert"></a>

Vous pouvez utiliser votre propre autorité de certification pour créer des certificats clients. Le certificat client doit être enregistré AWS IoT avant de pouvoir être utilisé. Pour de plus amples informations sur les options d'enregistrement pour vos certificats clients, veuillez consulter [Enregistrement d’un certificat client](register-device-cert.md).

## Création d’un certificat client (CLI)
<a name="create-device-cert-cli"></a>

**Note**  
Vous ne pouvez pas exécuter cette procédure dans la AWS IoT console.

**Pour créer un certificat client à l'aide du AWS CLI**

1. Générez une paire de clés.

   ```
   openssl genrsa -out device_cert_key_filename.key 2048
   ```

1. Créez une demande de signature de certificat (CSR) pour le certificat client.

   ```
   openssl req -new \
       -key device_cert_key_filename.key \
       -out device_cert_csr_filename.csr
   ```

   Vous êtes invité à entrer certaines informations, comme illustré ici :

   ```
   You are about to be asked to enter information that will be incorporated
   into your certificate request.
   What you are about to enter is what is called a Distinguished Name or a DN.
   There are quite a few fields but you can leave some blank
   For some fields there will be a default value,
   If you enter '.', the field will be left blank.
   -----
   Country Name (2 letter code) [AU]:
       State or Province Name (full name) []:
       Locality Name (for example, city) []:
       Organization Name (for example, company) []:
       Organizational Unit Name (for example, section) []:
       Common Name (e.g. server FQDN or YOUR name) []:
       Email Address []:
   
       Please enter the following 'extra' attributes
       to be sent with your certificate request
       A challenge password []:
       An optional company name []:
   ```

1. Créez un certificat client à partir de la CSR.

   ```
   openssl x509 -req \
       -in device_cert_csr_filename.csr \
       -CA root_CA_cert_filename.pem \
       -CAkey root_CA_key_filename.key \
       -CAcreateserial \
       -out device_cert_filename.pem \
       -days 500 -sha256
   ```

 À ce stade, le certificat client a été créé, mais il n'a pas encore été enregistré auprès de celui-ci AWS IoT. Pour de plus amples informations sur la façon et le moment d'enregistrer le certificat client, veuillez consulter [Enregistrement d’un certificat client](register-device-cert.md). 

# Enregistrement d’un certificat client
<a name="register-device-cert"></a>

Les certificats clients doivent être enregistrés AWS IoT pour permettre les communications entre le client et AWS IoT. Vous pouvez enregistrer chaque certificat client manuellement ou configurer les certificats client pour qu'ils s'enregistrent automatiquement lorsque le client se connecte AWS IoT pour la première fois.

 Si vous souhaitez que vos clients et appareils enregistrent leurs certificats clients lors de leur première connexion, vous devez utiliser [Enregistrement de votre certificat d’autorité de certification](manage-your-CA-certs.md#register-CA-cert) pour signer le certificat client auprès d’ AWS IoT dans les régions où vous souhaitez l'utiliser. L'autorité de certification Amazon Root est automatiquement enregistrée auprès de AWS IoT. 

Les certificats clients peuvent être partagés par Comptes AWS et par régions. Les procédures décrites dans ces rubriques doivent être effectuées dans chaque compte et chaque région où vous souhaitez utiliser le certificat client. L'enregistrement d'un certificat client dans un compte ou une région n'est pas automatiquement reconnu par un autre compte ou une autre région.

**Note**  
Les clients qui utilisent le protocole TLS (Transport Layer Security) pour se connecter à AWS IoT doivent prendre en charge l'[extension SNI (Server Name Indication)](https://tools.ietf.org/html/rfc3546#section-3.1) de TLS. Pour de plus amples informations, veuillez consulter [Sûreté des transports dans AWS IoT Core](transport-security.md).

**Topics**
+ [

# Enregistrement manuel d’un certificat client
](manual-cert-registration.md)
+ [

# Enregistrer un certificat client lorsque le client se connecte à l' AWS IoT just-in-time enregistrement (JITR)
](auto-register-device-cert.md)

# Enregistrement manuel d’un certificat client
<a name="manual-cert-registration"></a>

Vous pouvez enregistrer un certificat client manuellement à l'aide de la AWS IoT console et AWS CLI.

La procédure d'enregistrement à utiliser dépend du fait que le certificat sera partagé ou non par Compte AWS les régions. L'enregistrement d'un certificat client dans un compte ou une région n'est pas automatiquement reconnu par un autre compte ou une autre région.

Les procédures décrites dans cette rubrique doivent être effectuées dans chaque compte et chaque région où vous souhaitez utiliser le certificat client. Les certificats clients peuvent être partagés par Compte AWS s et par régions. 

## Enregistrement d’un certificat client signé par une autorité de certification enregistrée (console)
<a name="manual-cert-registration-console"></a>

**Note**  
Avant d'exécuter cette procédure, assurez-vous que vous disposez du fichier .pem du certificat client et que le certificat client a été signé par une autorité de certification auprès de laquelle vous vous êtes [enregistré](manage-your-CA-certs.md#register-CA-cert). AWS IoT

**Pour enregistrer un certificat existant à AWS IoT l'aide de la console**

1. Connectez-vous à la console AWS de gestion et [AWS IoT ouvrez-la](https://console.aws.amazon.com/iot/home).

1. Dans le panneau de navigation, sous la section **Gérer**, choisissez **Sécurité**, puis **Certificats**.

1. Sur la page **Certificats** de la boîte de dialogue **Certificats**, choisissez **Ajouter un certificat**, puis **Enregistrer les certificats**.

1. Sur la page **Enregistrer le certificat** de la boîte de dialogue **Certificats à télécharger**, procédez comme suit :
   + Choisissez **CA est enregistré auprès de AWS IoT**.
   + Dans **Choisir un certificat CA**, sélectionnez votre **autorité de certification**. 
     + Choisissez **Enregistrer une nouvelle autorité de certification** pour enregistrer une nouvelle **autorité de certification** qui n'est pas enregistrée auprès de celle-ci AWS IoT.
     + Laissez le champ **Choisir un certificat CA** vide si **l'autorité de certification Amazon Root** est votre autorité de certification.
   + Sélectionnez jusqu'à 10 certificats à télécharger et à enregistrer AWS IoT.
     + Utilisez les fichiers de certificat que vous avez créés dans [Création de certificats AWS IoT clients](device-certs-create.md) et[Création d’un certificat client à l'aide de votre certificat d’autorité de certification](create-device-cert.md).
   + Choisissez **Activer** ou **Désactiver**. Si vous choisissez **Désactiver**, [Activation ou désactivation d’un certificat client](activate-or-deactivate-device-cert.md) explique comment activer votre certificat après l'avoir enregistré.
   + Choisissez **S’inscrire**.

Sur la page **Certificats** de la boîte de dialogue **Certificats**, vos certificats enregistrés apparaissent désormais.

## Enregistrement d’un certificat client signé par une autorité de certification non enregistrée (console)​
<a name="manual-cert-registration-console-noca"></a>

**Note**  
Avant d'effectuer cette procédure, assurez-vous de disposer du fichier .pem du certificat client.

**Pour enregistrer un certificat existant à AWS IoT l'aide de la console**

1. Connectez-vous à la console AWS de gestion et [AWS IoT ouvrez-la](https://console.aws.amazon.com/iot/home).

1. Dans le volet de navigation de gauche, choisissez successivement **Sécurité**, **Certificats** et **Créer**.

1. Dans **Créer un certificat**, recherchez l'entrée **Utiliser mon certificat**, puis choisissez **Commencer**.

1. Dans **Sélectionner une autorité de certification**, choisissez **Suivant**.

1.  Dans **Enregistrer des certificats d'appareils existants**, choisissez **Sélectionner les certificats** et sélectionnez jusqu'à 10 fichiers de certificats à enregistrer. 

1.  Après avoir fermé la boîte de dialogue du fichier, indiquez si vous souhaitez activer ou révoquer les certificats clients lorsque vous les enregistrez.

   Si vous n'activez pas un certificat lors de son enregistrement, [Activation d’un certificat client (console)](activate-or-deactivate-device-cert.md#activate-device-cert-console) décrit comment l'activer ultérieurement. 

   Si un certificat est révoqué lors de son enregistrement, il ne peut pas être activé ultérieurement.

   Après avoir sélectionné les fichiers de certificat à enregistrer et sélectionné les actions à effectuer après l'enregistrement, sélectionnez **Enregistrer les certificats**.

Les certificats clients enregistrés apparaissent dans la liste des certificats.

## Enregistrement d’un certificat client signé par une autorité de certification enregistrée (CLI)
<a name="manual-cert-registration-cli"></a>

**Note**  
Avant d'effectuer cette procédure, assurez-vous de disposer du fichier .pem de l'autorité de certification et du fichier .pem du certificat client. Le certificat client doit être signé par une autorité de certification (CA) [auprès de laquelle vous vous êtes enregistré AWS IoT](manage-your-CA-certs.md#register-CA-cert).

Utilisez la commande [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/register-certificate.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/register-certificate.html) pour enregistrer un certificat client sans l’activer.

```
aws iot register-certificate \
    --certificate-pem file://device_cert_filename.pem \
    --ca-certificate-pem file://ca_cert_filename.pem
```

Le certificat client est enregistré auprès de AWS IoT, mais il n'est pas encore actif. Veuillez consulter [Activation d’un certificat client (CLI)](activate-or-deactivate-device-cert.md#activate-device-cert-cli) pour de plus amples informations sur la façon de l'activer ultérieurement.

Vous pouvez également activer le certificat client lorsque vous l'enregistrez à l'aide de cette commande.

```
aws iot register-certificate \
    --set-as-active \
    --certificate-pem file://device_cert_filename.pem \
    --ca-certificate-pem file://ca_cert_filename.pem
```

Pour plus d'informations sur l'activation du certificat afin qu'il puisse être utilisé pour se connecter à AWS IoT, voir [Activation ou désactivation d’un certificat client](activate-or-deactivate-device-cert.md)

## Enregistrement d’un certificat client signé par une autorité de certification non enregistrée (CLI)​
<a name="manual-cert-registration-noca-cli"></a>

**Note**  
Avant d'effectuer cette procédure, assurez-vous de disposer du fichier .pem du certificat.

Utilisez la commande [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/register-certificate-without-ca.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/register-certificate-without-ca.html) pour enregistrer un certificat client sans l’activer.

```
aws iot register-certificate-without-ca \
    --certificate-pem file://device_cert_filename.pem
```

Le certificat client est enregistré auprès de AWS IoT, mais il n'est pas encore actif. Veuillez consulter [Activation d’un certificat client (CLI)](activate-or-deactivate-device-cert.md#activate-device-cert-cli) pour de plus amples informations sur la façon de l'activer ultérieurement.

Vous pouvez également activer le certificat client lorsque vous l'enregistrez à l'aide de cette commande.

```
aws iot register-certificate-without-ca \
    --status ACTIVE \
    --certificate-pem file://device_cert_filename.pem
```

Pour plus d'informations sur l'activation du certificat afin qu'il puisse être utilisé pour se connecter AWS IoT, consultez[Activation ou désactivation d’un certificat client](activate-or-deactivate-device-cert.md).

# Enregistrer un certificat client lorsque le client se connecte à l' AWS IoT just-in-time enregistrement (JITR)
<a name="auto-register-device-cert"></a>

Vous pouvez configurer un certificat CA pour permettre aux certificats clients qu'il a signés de s'enregistrer AWS IoT automatiquement lors de la première connexion du client AWS IoT.

Pour enregistrer des certificats client lorsqu'un client se connecte AWS IoT pour la première fois, vous devez activer le certificat CA pour l'enregistrement automatique et configurer la première connexion du client afin de fournir les certificats requis.

## Configuration d’un certificat d'autorité de certification pour la prise en charge de l'enregistrement automatique (console)
<a name="enable-auto-registration-console"></a>

**Pour configurer un certificat CA afin de prendre en charge l'enregistrement automatique des certificats clients à l'aide de la AWS IoT console**

1. Connectez-vous à la console AWS de gestion et [AWS IoT ouvrez-la](https://console.aws.amazon.com/iot/home).

1. Dans le volet de navigation de gauche, choisissez **Secure**, choisissez **CAs**.

1. Dans la liste des autorités de certification, recherchez celle pour laquelle vous souhaitez activer l'enregistrement automatique et ouvrez le menu d'options à l'aide de l'icône représentant des points de suspension.

1. Dans le menu d'options, choisissez **Activer l'enregistrement automatique**.

**Note**  
Le statut d'enregistrement automatique n'apparaît pas dans la liste des autorités de certification. Pour voir le statut d'enregistrement automatique d'une autorité de certification, vous devez ouvrir la page **Détails** de l'autorité de certification.

## Configuration d’un certificat d'autorité de certification pour la prise en charge de l'enregistrement automatique (CLI)
<a name="enable-auto-registration-cli"></a>

Si vous avez déjà enregistré votre certificat CA auprès de AWS IoT, utilisez la [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/update-ca-certificate.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/update-ca-certificate.html)commande pour définir `autoRegistrationStatus` le certificat CA sur`ENABLE`.

```
aws iot update-ca-certificate \
--certificate-id caCertificateId \
--new-auto-registration-status ENABLE
```

Si vous souhaitez activer `autoRegistrationStatus` lors de l'enregistrement du certificat d'autorité de certification, utilisez la commande [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/register-ca-certificate.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/register-ca-certificate.html).

```
aws iot register-ca-certificate \
--allow-auto-registration  \
--ca-certificate file://root_CA_cert_filename.pem \
--verification-cert file://verification_cert_filename.pem
```

Utilisez la commande [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/describe-ca-certificate.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/describe-ca-certificate.html) pour voir le statut du certificat d'autorité de certification.

## Configuration de la première connexion par un client pour l'enregistrement automatique
<a name="configure-auto-reg-first-connect"></a>

Lorsqu'un client tente de se connecter AWS IoT pour la première fois, le certificat client signé par votre certificat CA doit être présent sur le client lors de la prise de contact TLS (Transport Layer Security).

Lorsque le client se connecte à AWS IoT, utilisez le certificat client que vous avez créé dans [Créer des certificats AWS IoT clients](https://docs.aws.amazon.com/iot/latest/developerguide/device-certs-create.html) ou [Créez vos propres certificats clients](https://docs.aws.amazon.com/iot/latest/developerguide/device-certs-your-own.html). AWS IoT reconnaît le certificat CA en tant que certificat CA enregistré, enregistre le certificat client et définit son statut sur`PENDING_ACTIVATION`. Cela signifie que le certificat client a été enregistré automatiquement et qu'il est en attente d'activation. L'état du certificat client doit être `ACTIVE` avant de pouvoir être utilisé pour la connexion à AWS IoT. Consultez [Activation ou désactivation d’un certificat client](activate-or-deactivate-device-cert.md) pour plus d'informations sur l'activation d'un certificat client.

**Note**  
Vous pouvez approvisionner des appareils à l'aide de la fonction AWS IoT Core just-in-time d'enregistrement (JITR) sans avoir à envoyer l'intégralité de la chaîne de confiance lors de la première connexion des appareils à. AWS IoT Core La présentation du certificat CA est facultative, mais l'appareil doit envoyer l'extension [SNI (Server Name Indication)](https://datatracker.ietf.org/doc/html/rfc3546#section-3.1) lors de la connexion.

Lors de l'enregistrement AWS IoT automatique d'un certificat ou lorsqu'un client présente un certificat avec le `PENDING_ACTIVATION` statut, AWS IoT publie un message sur la rubrique MQTT suivante :

`$aws/events/certificates/registered/caCertificateId`

Où `caCertificateId` est l'ID du certificat d’autorité de certification ayant émis le certificat client.

Le message publié sur cette rubrique a la structure suivante :

```
{
        "certificateId": "certificateId",
        "caCertificateId": "caCertificateId",
        "timestamp": timestamp,
        "certificateStatus": "PENDING_ACTIVATION",
        "awsAccountId": "awsAccountId",
        "certificateRegistrationTimestamp": "certificateRegistrationTimestamp"
}
```

Vous pouvez créer une règle qui écoute cette rubrique et effectue certaines actions. Nous vous recommandons de créer une règle Lambda qui vérifie que le certificat client ne figure pas sur une liste de révocation de certificats (CRL), active le certificat, puis crée et attache une politique au certificat. La stratégie détermine les ressources auxquelles le client peut accéder. Si la politique que vous créez nécessite l'ID client des appareils connectés, vous pouvez utiliser la fonction clientid () de la règle pour récupérer l'ID client. Voici un exemple de définition de règle :

```
SELECT *,
   clientid() as clientid
from $aws/events/certificates/registered/caCertificateId
```

Dans cet exemple, la règle s'abonne à la rubrique JITR `$aws/events/certificates/registered/caCertificateID` et utilise la fonction clientid () pour récupérer l'identifiant du client. La règle ajoute ensuite l'ID client à la charge utile JITR. Pour plus d'informations sur la fonction clientid () de la règle, consultez [clientid](https://docs.aws.amazon.com//iot/latest/developerguide/iot-sql-functions.html#iot-sql-function-clientid) ().

Pour plus d'informations sur la création d'une règle Lambda qui écoute le `$aws/events/certificates/registered/caCertificateID` sujet et exécute ces actions, consultez la section [just-in-time Enregistrement des certificats clients](https://aws.amazon.com/blogs/iot/just-in-time-registration-of-device-certificates-on-aws-iot/) sur. AWS IoT

Si une erreur ou une exception survient lors de l'enregistrement automatique des certificats clients, AWS IoT envoie des événements ou des messages à vos journaux de CloudWatch connexion. Pour plus d'informations sur la configuration des journaux de votre compte, consultez la [ CloudWatch documentation Amazon](https://docs.aws.amazon.com/AmazonCloudWatch/latest/DeveloperGuide/).

# Gérer les certificats clients
<a name="manage-device-cert"></a>

AWS IoT fournit des fonctionnalités vous permettant de gérer les certificats clients.

**Topics**
+ [

# Activation ou désactivation d’un certificat client
](activate-or-deactivate-device-cert.md)
+ [

# Attacher un objet ou une stratégie à un certificat client
](attach-to-cert.md)
+ [

# Révocation d’un certificat client
](revoke-ca-cert.md)
+ [

# Transférer un certificat vers un autre compte
](transfer-cert.md)

# Activation ou désactivation d’un certificat client
<a name="activate-or-deactivate-device-cert"></a>

AWS IoT vérifie qu'un certificat client est actif lorsqu'il authentifie une connexion.

Vous pouvez créer et enregistrer des certificats clients sans les activer afin qu'ils ne puissent pas être utilisés tant que vous ne le souhaitez pas. Vous pouvez également désactiver temporairement des certificats clients actifs. Enfin, vous pouvez révoquer des certificats clients pour empêcher toute future utilisation. 

## Activation d’un certificat client (console)
<a name="activate-device-cert-console"></a>

**Pour activer un certificat client à l'aide de la AWS IoT console**

1. Connectez-vous à la console AWS de gestion et [AWS IoT ouvrez-la](https://console.aws.amazon.com/iot/home).

1. Dans le volet de navigation de gauche, choisissez **Sécurité**, puis **Certificats**.

1. Dans la liste des certificats, recherchez le certificat que vous souhaitez activer et ouvrez le menu d'options à l'aide de l'icône représentant des points de suspension.

1. Dans le menu d'options, choisissez **Activer**.

Le certificat doit apparaître comme **Active** dans la liste des certificats.

## Désactivation d’un certificat client (console)
<a name="deactivate-device-cert-console"></a>

**Pour désactiver un certificat client à l'aide de la console AWS IoT**

1. Connectez-vous à la console AWS de gestion et [AWS IoT ouvrez-la](https://console.aws.amazon.com/iot/home).

1. Dans le volet de navigation de gauche, choisissez **Sécurité**, puis **Certificats**.

1. Dans la liste des certificats, recherchez le certificat que vous souhaitez désactiver et ouvrez le menu d'options à l'aide de l'icône représentant des points de suspension.

1. Dans le menu d'options, choisissez **Désactiver**.

Le certificat doit apparaître comme **Inactive** dans la liste des certificats.

## Activation d’un certificat client (CLI)
<a name="activate-device-cert-cli"></a>

 AWS CLI Fournit la [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/update-certificate.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/update-certificate.html)commande permettant d'activer un certificat.

```
aws iot update-certificate \
    --certificate-id certificateId \
    --new-status ACTIVE
```

Si la commande aboutit, le statut du certificat devient `ACTIVE`. Exécutez [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/describe-certificate.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/describe-certificate.html) pour voir le statut du certificat.

```
aws iot describe-certificate \
    --certificate-id certificateId
```

## Désactivation d’un certificat client (CLI)
<a name="deactivate-device-cert-cli"></a>

 AWS CLI Fournit la [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/update-certificate.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/update-certificate.html)commande permettant de désactiver un certificat.

```
aws iot update-certificate \
    --certificate-id certificateId \
    --new-status INACTIVE
```

Si la commande aboutit, le statut du certificat devient `INACTIVE`. Exécutez [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/describe-certificate.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/describe-certificate.html) pour voir le statut du certificat.

```
aws iot describe-certificate \
    --certificate-id certificateId
```

# Attacher un objet ou une stratégie à un certificat client
<a name="attach-to-cert"></a>

Lorsque vous créez et enregistrez un certificat distinct d'un AWS IoT objet, il ne comporte aucune politique autorisant AWS IoT des opérations et ne sera associé à aucun AWS IoT objet. Cette section décrit comment ajouter ces relations à un certificat enregistré.

**Important**  
Pour effectuer ces procédures, vous devez avoir déjà créé l’objet ou la stratégie que vous souhaitez attacher au certificat.

Le certificat authentifie un appareil AWS IoT afin qu'il puisse se connecter. L'attachement du certificat à une ressource d'objet établit la relation entre l’appareil (par le biais du certificat) et la ressource de l'objet. Pour autoriser l'appareil à effectuer AWS IoT des actions, telles que l'autoriser à se connecter et à publier des messages, une politique appropriée doit être attachée au certificat de l'appareil. 

## Attacher un objet à un certificat client (console)
<a name="attach-to-cert-thing-console"></a>

Vous aurez besoin du nom de l'objet d’objet pour réaliser cette procédure.

**Pour attacher un objet d’objet à un certificat enregistré**

1. Connectez-vous à la console AWS de gestion et [AWS IoT ouvrez-la](https://console.aws.amazon.com/iot/home).

1. Dans le volet de navigation de gauche, choisissez **Sécurité**, puis **Certificats**.

1. Dans la liste des certificats, recherchez le certificat auquel vous souhaitez attacher une stratégie, ouvrez le menu d'options du certificat en choisissant l'icône représentant trois points de suspension, puis choisissez **Attacher un objet**.

1. Dans la fenêtre contextuelle, recherchez le nom de l’objet à attacher au certificat, cochez sa case et choisissez **Attacher**..

L'objet d’objet doit désormais apparaître dans la liste des objets sur la page de détails du certificat.

## Attacher une stratégie à un certificat client (console)
<a name="attach-to-cert-policy-console"></a>

Vous aurez besoin du nom de l'objet de stratégie pour réaliser cette procédure.

**Pour attacher un objet de stratégie à un certificat enregistré**

1. Connectez-vous à la console AWS de gestion et [AWS IoT ouvrez-la](https://console.aws.amazon.com/iot/home).

1. Dans le volet de navigation de gauche, choisissez **Sécurité**, puis **Certificats**.

1. Dans la liste des certificats, recherchez le certificat auquel vous souhaitez attacher une stratégie, ouvrez le menu d'options du certificat en choisissant l'icône représentant trois points de suspension, puis choisissez **Attacher une stratégie**. 

1. Dans la fenêtre contextuelle, recherchez le nom de la stratégie à attacher au certificat, cochez sa case et choisissez **Attacher**.

L'objet de stratégie doit désormais apparaître dans la liste des stratégies de la page de détails du certificat.

## Attacher un objet à un certificat client (interface de ligne de commande)
<a name="attach-to-cert-thing-cli"></a>

 AWS CLI Fournit la [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/attach-thing-principal.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/attach-thing-principal.html)commande permettant d'associer un objet à un certificat.

```
aws iot attach-thing-principal \
    --principal certificateArn \
    --thing-name thingName
```

## Attacher une stratégie à un certificat client (interface de ligne de commande)
<a name="attach-to-cert-policy-cli"></a>

 AWS CLI Fournit la [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/attach-policy.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/attach-policy.html)commande permettant d'associer un objet de politique à un certificat.

```
aws iot attach-policy \
    --target certificateArn \
    --policy-name policyName
```

# Révocation d’un certificat client
<a name="revoke-ca-cert"></a>

Si vous détectez une activité suspecte sur un certificat client enregistré, vous pouvez révoquer celui-ci afin qu'il ne puisse plus être utilisé.

**Note**  
Une fois qu'un certificat est révoqué, son statut ne peut pas être modifié. En d'autres termes, le statut du certificat ne peut pas être `Active` remplacé par un autre statut.

## Révocation d’un certificat client (console)
<a name="revoke-device-cert-console"></a>

**Pour révoquer un certificat client à l'aide de la console AWS IoT**

1. Connectez-vous à la console AWS de gestion et [AWS IoT ouvrez-la](https://console.aws.amazon.com/iot/home).

1. Dans le volet de navigation de gauche, choisissez **Sécurité**, puis **Certificats**.

1. Dans la liste des certificats, recherchez le certificat que vous souhaitez révoquer et ouvrez le menu d'options à l'aide de l'icône représentant des points de suspension.

1. Dans le menu d'options, choisissez **Révoquer**.

Si la révocation aboutit, il s'affichera comme **Revoked (Révoqué)** dans la liste des certificats.

## Révocation d’un certificat client (CLI)
<a name="revoke-device-cert-cli"></a>

 AWS CLI Fournit la [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/update-certificate.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/update-certificate.html)commande permettant de révoquer un certificat.

```
aws iot update-certificate \
    --certificate-id certificateId \
    --new-status REVOKED
```

Si la commande aboutit, le statut du certificat devient `REVOKED`. Exécutez [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/describe-certificate.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/describe-certificate.html) pour voir le statut du certificat.

```
aws iot describe-certificate \
    --certificate-id certificateId
```

# Transférer un certificat vers un autre compte
<a name="transfer-cert"></a>

Les certificats X.509 appartenant à l'un Compte AWS peuvent être transférés vers un autre Compte AWS.

**Pour transférer un certificat X.509 de l'un Compte AWS à l'autre**

1. [Commencer un transfert de certificat](#transfer-cert-init)

   Le certificat doit être désactivé et détaché de toutes les politiques et autres éléments avant de lancer le transfert.

1. [Accepter ou refuser un transfert de certificat](#transfer-cert-accept)

   Le compte destinataire doit explicitement accepter ou rejeter le certificat transféré. Une fois que le compte destinataire a accepté le certificat, celui-ci doit être activé avant utilisation.

1. [Annuler un transfert de certificat](#transfer-cert-cancel)

   Le compte d'origine peut annuler un transfert si le certificat n'a pas été accepté.

## Commencer un transfert de certificat
<a name="transfer-cert-init"></a>

Vous pouvez commencer à transférer un certificat vers un autre Compte AWS en utilisant la [AWS IoT console](https://console.aws.amazon.com/iot/home) ou le AWS CLI.

### Commencer un transfert de certificat (console)
<a name="transfer-cert-init-console"></a>

Pour effectuer cette procédure, vous avez besoin de l'ID du certificat que vous souhaitez transférer.

Effectuez cette procédure depuis le compte avec le certificat à transférer.

**Pour commencer à transférer un certificat vers un autre Compte AWS**

1. Connectez-vous à la console AWS de gestion et [AWS IoT ouvrez-la](https://console.aws.amazon.com/iot/home).

1. Dans le volet de navigation de gauche, choisissez **Sécurité**, puis **Certificats**.

   Choisissez le certificat avec le statut **actif** ou **inactif** que vous souhaitez transférer et ouvrez sa page détails.

1. Sur la page **Détails** du certificat, dans le menu **Actions**, si l'option **Désactiver** est disponible, choisissez l'option **Désactiver** pour désactiver le certificat.

1. Sur la page **Détails** du certificat, dans le menu de gauche, sélectionnez **Politiques**.

1. Sur la page **Stratégie** du certificat, si des stratégies sont associées au certificat, détachez-les en ouvrant le menu des options de la stratégie et en choisissant **Détacher**.

   Le certificat ne doit contenir aucune politique attachée avant de continuer.

1. Sur la page **Politiques** du certificat, dans le menu de gauche, sélectionnez **Objets**.

1. Sur la page **Objets** du certificat, si des éléments sont associés au certificat, détachez-les en ouvrant le menu des options de l’objet et en choisissant **Détacher**.

   Le certificat ne doit contenir aucun objet attaché avant de continuer.

1. Sur la page **Objets** du certificat, dans le menu de gauche, sélectionnez **Détails**.

1. Sur la page **Détails** du certificat, dans le menu **Actions**, choisissez **Démarrer le transfert** pour ouvrir la boîte de dialogue **Démarrer le transfert**.

1. Dans la boîte de dialogue **Démarrer le transfert**, entrez le Compte AWS numéro du compte qui recevra le certificat et un court message facultatif.

1. Choisissez **Démarrer le transfert** pour transférer le certificat.

La console doit afficher un message qui indique la réussite ou l'échec du transfert. Si le transfert a été lancé, le statut du certificat passe à **Transféré**.

### Commencer un transfert de certificat (CLI)
<a name="transfer-cert-init-cli"></a>

Pour effectuer cette procédure, vous aurez besoin du *certificateId* et *certificateArn* du certificat que vous souhaitez transférer.

Effectuez cette procédure depuis le compte avec le certificat à transférer.

**Pour commencer à transférer un certificat vers un autre AWS compte**

1. Utilisez la commande [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/update-certificate.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/update-certificate.html) pour désactiver le certificat.

   ```
   aws iot update-certificate --certificate-id certificateId --new-status INACTIVE
   ```

1. Détachez toutes les politiques.

   1. Utilisez la commande [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/list-attached-policies.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/list-attached-policies.html) pour répertorier les politiques associées au certificat.

      ```
      aws iot list-attached-policies --target certificateArn
      ```

   1. Pour chaque stratégie attachée, utilisez la commande [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/detach-policy.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/detach-policy.html) pour la détacher.

      ```
      aws iot detach-policy --target certificateArn --policy-name policy-name
      ```

1. Répertoriez tous les objets.

   1. Utilisez la commande [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/list-principal-things.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/list-principal-things.html) pour répertorier les objets associés au certificat.

      ```
      aws iot list-principal-things --principal certificateArn
      ```

   1. Pour chaque objet attaché, utilisez la commande [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/detach-thing-principal.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/detach-thing-principal.html) pour le détacher.

      ```
      aws iot detach-thing-principal --principal certificateArn --thing-name thing-name
      ```

1. Utilisez la commande [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/transfer-certificate.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/transfer-certificate.html) pour démarrer le transfert du certificat.

   ```
   aws iot transfer-certificate --certificate-id certificateId --target-aws-account account-id
   ```

## Accepter ou refuser un transfert de certificat
<a name="transfer-cert-accept"></a>

Vous pouvez accepter ou rejeter un certificat qui vous Compte AWS a été transféré Compte AWS par un autre en utilisant la [AWS IoT console](https://console.aws.amazon.com/iot/home) ou le AWS CLI.

### Accepter ou refuser un transfert de certificat (console)
<a name="transfer-cert-accept-console"></a>

Pour effectuer cette procédure, vous avez besoin de l'ID du certificat qui a été transféré sur votre compte.

Effectuez cette procédure depuis le compte recevant le certificat qui a été transféré.

**Pour accepter ou rejeter un certificat qui a été transféré à votre Compte AWS**

1. Connectez-vous à la console AWS de gestion et [AWS IoT ouvrez-la](https://console.aws.amazon.com/iot/home).

1. Dans le volet de navigation de gauche, choisissez **Sécurité**, puis **Certificats**.

   Choisissez le certificat avec un statut **transfert en attente** que vous souhaitez accepter ou rejeter et ouvrez sa page détails.

1. Sur la page **Détails** du certificat, dans le menu **Actions**,
   + Pour accepter le certificat, choisissez **Accepter le transfert**.
   + Pour ne pas accepter le certificat, choisissez **Rejeter le transfert**.

### Accepter ou refuser un transfert de certificat (CLI)
<a name="transfer-cert-accept-cli"></a>

Pour terminer cette procédure, vous aurez besoin *certificateId* du transfert de certificat que vous souhaitez accepter ou refuser.

Effectuez cette procédure depuis le compte recevant le certificat qui a été transféré.

**Pour accepter ou rejeter un certificat qui a été transféré à votre Compte AWS**

1. Pour accepter le certificat, utilisez la commande [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/accept-certificate-transfer.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/accept-certificate-transfer.html).

   ```
   aws iot accept-certificate-transfer --certificate-id certificateId
   ```

1. Pour refuser le certificat, utilisez la commande [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/reject-certificate-transfer.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/reject-certificate-transfer.html).

   ```
   aws iot reject-certificate-transfer --certificate-id certificateId
   ```

## Annuler un transfert de certificat
<a name="transfer-cert-cancel"></a>

Vous pouvez annuler un transfert de certificat avant qu'il ne soit accepté à l'aide de la [AWS IoT console](https://console.aws.amazon.com/iot/home) ou du AWS CLI.

### Annuler un transfert de certificat (console)
<a name="transfer-cert-cancel-console"></a>

Pour effectuer cette procédure, vous aurez besoin de l'ID du transfert de certificat que vous souhaitez annuler.​

Effectuez cette procédure à partir du compte qui a initié le transfert du certificat.

**Pour annuler un transfert de certificat**

1. Connectez-vous à la console AWS de gestion et [AWS IoT ouvrez-la](https://console.aws.amazon.com/iot/home).

1. Dans le volet de navigation de gauche, choisissez **Sécurité**, puis **Certificats**.

   Choisissez le certificat avec le statut **Transféré** dont vous souhaitez annuler le transfert et ouvrez son menu d'options.

1. Dans le menu des options du certificat, choisissez l'option **Révoquer le transfert** pour annuler le transfert du certificat.
**Important**  
Veuillez à ne pas confondre l'option **Révoquer le transfert** avec l'option **Révoquer**.  
L'option **Révoquer le transfert** annule le transfert du certificat, tandis que l'option **Révoquer** rend le certificat irréversiblement inutilisable par AWS IoT. 

### Annuler un transfert de certificat (CLI)
<a name="transfer-cert-cancel-cli"></a>

Pour terminer cette procédure, vous aurez besoin *certificateId* du transfert de certificat que vous souhaitez annuler.

Effectuez cette procédure à partir du compte qui a initié le transfert du certificat.

Utilisez la commande [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/cancel-certificate-transfer.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/cancel-certificate-transfer.html) pour annuler le transfert du certificat.

```
aws iot cancel-certificate-transfer --certificate-id certificateId
```

# 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).

# Utilisateurs, groupes et rôles IAM
<a name="iam-users-groups-roles"></a>

Les utilisateurs, groupes et rôles IAM constituent les mécanismes standard de gestion de l'identité et de l'authentification dans AWS. Vous pouvez les utiliser pour vous connecter aux interfaces AWS IoT HTTP à l'aide du AWS SDK et AWS CLI.

Les rôles IAM permettent également d'accéder AWS IoT à d'autres AWS ressources de votre compte en votre nom. Par exemple, si vous souhaitez qu'un appareil publie son état dans une table DynamoDB, les rôles IAM AWS IoT permettent d'interagir avec Amazon DynamoDB. Pour en savoir plus, consultez [Rôles IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use.html).

Pour les connexions au courtier de messages via HTTP, AWS IoT authentifie les utilisateurs, les groupes et les rôles à l'aide du processus de signature Signature version 4. Pour plus d'informations, consultez [la section Signature des demandes d' AWS API](https://docs.aws.amazon.com/general/latest/gr/signing_aws_api_requests.html).

Lorsqu'ils utilisent AWS Signature Version 4 avec AWS IoT, les clients doivent prendre en charge les éléments suivants dans leur implémentation du protocole TLS :
+ TLS 1.2
+ Validation de la signature de certificat RSA SHA-256
+ Une des suites de chiffrement de la section Prise en charge des suites de chiffrement TLS

Pour plus d'informations, consultez [Gestion des identités et des accès pour AWS IoT](security-iam.md).

# Identités Amazon Cognito
<a name="cognito-identities"></a>

Amazon Cognito Identity vous permet de créer des informations d' AWS identification temporaires à privilèges limités à utiliser dans les applications mobiles et Web. Lorsque vous utilisez Amazon Cognito Identity, créez des groupes d'identités qui créent des identités uniques pour vos utilisateurs et authentifiez-les auprès de fournisseurs d'identité tels que Login with Amazon, Facebook et Google. Vous pouvez également utiliser les identités Amazon Cognito avec vos propres identités authentifiées par le développeur. Pour plus d'informations, consultez [Identité Amazon Cognito](https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-identity.html).

Pour utiliser Amazon Cognito Identity, définissez un pool d'identités Amazon Cognito associé à un rôle IAM. Le rôle IAM est associé à une politique IAM qui accorde aux identités de votre pool d'identités l'autorisation d'accéder à des AWS ressources telles que les services d'appel AWS .

L’identité Amazon Cognito crée des identités non authentifiées et authentifiées. Les identités non authentifiées sont utilisées pour les utilisateurs invités d'une application mobile ou Web qui souhaitent utiliser l'application sans se connecter. Les utilisateurs non authentifiés ne bénéficient que des autorisations spécifiées dans la politique IAM associée au réserve d'identités.

Lorsque vous utilisez des identités authentifiées, en plus de la politique IAM attachée au pool d'identités, vous devez associer une AWS IoT politique à une identité Amazon Cognito. Pour associer une AWS IoT politique, utilisez l'[ AttachPolicy](https://docs.aws.amazon.com/iot/latest/apireference/API_AttachPolicy.html)API et accordez des autorisations à un utilisateur individuel de votre AWS IoT application. Vous pouvez utiliser cette AWS IoT politique pour attribuer des autorisations détaillées à des clients spécifiques et à leurs appareils.

Les utilisateurs authentifiés et non authentifiés sont des types d'identité différents. Si vous n'associez aucune AWS IoT politique à l'identité Amazon Cognito, un utilisateur authentifié ne parvient pas à s'authentifier AWS IoT et n'a pas accès aux AWS IoT ressources et aux actions. Pour plus d'informations sur la création de politiques pour les identités Amazon Cognito, consultez [Exemples de stratégie de publication/abonnement](pub-sub-policy.md) et [Autorisation avec les identités Amazon Cognito](cog-iot-policies.md).

![\[Application accédant à un appareil avec Amazon Cognito Identity.\]](http://docs.aws.amazon.com/fr_fr/iot/latest/developerguide/images/device-cognito.png)


# Authentification et autorisation personnalisées
<a name="custom-authentication"></a>

 AWS IoT Core vous permet de définir des autorisateurs personnalisés afin que vous puissiez gérer vous-même l'authentification et l'autorisation de vos clients. Cela est utile lorsque vous devez utiliser des mécanismes d'authentification autres que ceux pris en charge de AWS IoT Core manière native. (Pour plus d'informations sur les mécanismes pris en charge de manière native, consultez [Authentification client](client-authentication.md)).  

 Par exemple, si vous migrez des appareils existants sur le terrain AWS IoT Core et que ces appareils utilisent un jeton porteur personnalisé ou un nom d'utilisateur et un mot de passe MQTT pour s'authentifier, vous pouvez les migrer vers ces appareils AWS IoT Core sans avoir à leur fournir de nouvelles identités. Vous pouvez utiliser l'authentification personnalisée avec tous les protocoles de communication pris en AWS IoT Core charge. Pour plus d'informations sur les protocoles pris en charge par AWS IoT Core , consultez [Protocoles de communication des appareils](protocols.md). 

**Topics**
+ [

# Comprendre le flux de travail d'authentification personnalisé
](custom-authorizer.md)
+ [

# Création et gestion d'autorisateurs personnalisés (CLI)
](config-custom-auth.md)
+ [

# Authentification personnalisée avec des certificats clients X.509
](custom-auth-509cert.md)
+ [

# Connexion à l' AWS IoT Core aide de l'authentification personnalisée
](custom-auth.md)
+ [

# Dépannage de vos mécanismes d'autorisation
](custom-auth-troubleshooting.md)

# Comprendre le flux de travail d'authentification personnalisé
<a name="custom-authorizer"></a>

L'authentification personnalisée vous permet de définir comment authentifier et autoriser les clients à l'aide [de ressources de mécanisme d'autorisation](https://docs.aws.amazon.com/iot/latest/apireference/API_AuthorizerDescription.html).  Chaque autorisateur contient une référence à une fonction Lambda gérée par le client, une clé publique facultative pour valider les informations d'identification de l'appareil et des informations de configuration supplémentaires. Le schéma suivant illustre le flux de travail d'autorisation pour l'authentification personnalisée dans AWS IoT Core.

![\[Flux de travail d'autorisation personnalisé pour une authentification personnalisée dans AWS IoT Core.\]](http://docs.aws.amazon.com/fr_fr/iot/latest/developerguide/images/custom-authentication.png)


## AWS IoT Core flux de travail d'authentification et d'autorisation personnalisé
<a name="custom-authentication-workflow"></a>

La liste suivante explique chaque étape du flux de travail d'authentification et d'autorisation personnalisé.

1. Un appareil se connecte au point de terminaison de AWS IoT Core données d'un client à l'aide de l'une des solutions prises en charge[Protocoles de communication des appareils](protocols.md). L'appareil transmet les informations d'identification soit dans les champs d'en-tête de la demande, soit dans les paramètres de requête (pour les WebSockets protocoles HTTP Publish ou MQTT over), soit dans le champ du nom d'utilisateur et du mot de passe du message MQTT CONNECT (pour les protocoles MQTT et MQTT over). WebSockets 

1. AWS IoT Core vérifie l'une des deux conditions suivantes :
   + La demande entrante spécifie un mécanisme d'autorisation.
   + Un autorisateur par défaut est configuré pour le point de terminaison de AWS IoT Core données recevant la demande.

   S'il AWS IoT Core trouve un autorisateur de l'une ou l'autre de ces manières, AWS IoT Core déclenche la fonction Lambda associée à l'autorisateur.

1.  (Facultatif) Si vous avez activé la signature par jeton, AWS IoT Core valide la signature de la demande en utilisant la clé publique stockée dans l'autorisateur avant de déclencher la fonction Lambda. Si la validation échoue, AWS IoT Core arrête la demande sans invoquer la fonction Lambda.  

1. La fonction Lambda reçoit les informations d'identification et les métadonnées de connexion dans la requête et prend une décision d'authentification.

1. La fonction Lambda renvoie les résultats de la décision d'authentification et un document de AWS IoT Core politique qui spécifie les actions autorisées dans la connexion. La fonction Lambda renvoie également des informations qui indiquent à quelle fréquence les informations d'identification contenues dans la demande sont AWS IoT Core revalidées en invoquant la fonction Lambda.

1. AWS IoT Core évalue l'activité de la connexion par rapport à la politique qu'elle a reçue de la fonction Lambda.

1. Une fois que la connexion est établie et que votre Lambda d'autorisation personnalisé est initialement invoqué, l'appel suivant peut être retardé jusqu'à 5 minutes sur les connexions inactives sans aucune opération MQTT. Ensuite, les appels suivants suivront l'intervalle d'actualisation dans votre autorisateur Lambda personnalisé. Cette approche permet d'éviter des appels excessifs susceptibles de dépasser la limite de simultanéité Lambda de votre compte. Compte AWS

## Considérations relatives à la mise à l'échelle
<a name="custom-authentication-scaling"></a>

 Étant donné qu'une fonction Lambda gère l'authentification et l'autorisation de votre mécanisme d'autorisation, la fonction est soumise aux limites de tarification et de service Lambda, telles que le taux d'exécution simultanée. Pour plus d'informations sur la tarification Lambda, consultez [Tarification Lambda](https://aws.amazon.com/lambda/pricing/). Vous pouvez gérer la charge sur votre fonction Lambda en ajustant les paramètres `refreshAfterInSeconds` et `disconnectAfterInSeconds` dans la réponse de votre fonction Lambda. Pour plus d'informations sur le contenu de la réponse de votre fonction Lambda, consultez [Définir votre fonction Lambda](custom-auth-lambda.md).

**Note**  
Si vous laissez la signature activée, vous pouvez empêcher un déclenchement excessif de votre Lambda par des clients non reconnus. Considérez ceci avant de désactiver la connexion à votre mécanisme d'autorisation.

**Note**  
Le délai d'expiration de la fonction Lambda pour le mécanisme d'autorisation personnalisé est de 5 secondes.

# Création et gestion d'autorisateurs personnalisés (CLI)
<a name="config-custom-auth"></a>

AWS IoT Core implémente des schémas d'authentification et d'autorisation personnalisés en utilisant des autorisateurs personnalisés. Un autorisateur personnalisé est une AWS IoT Core ressource qui vous donne la flexibilité de définir et de mettre en œuvre les règles et les politiques en fonction de vos besoins spécifiques. Pour créer un autorisateur personnalisé avec des step-by-step instructions, voir [Tutoriel : Création d'un autorisateur personnalisé](https://docs.aws.amazon.com//iot/latest/developerguide/custom-auth-tutorial.html) pour. AWS IoT Core

Chaque mécanisme d'autorisation se compose des éléments suivants : 
+  *Nom* : Une chaîne unique définie par l'utilisateur qui identifie le mécanisme d'autorisation.
+  *ARN de la fonction Lambda* : Amazon Resource Name (ARN) de la fonction Lambda qui implémente la logique d'autorisation et d'authentification.  
+  *Nom de clé du jeton* : nom de clé utilisé pour extraire le jeton des en-têtes HTTP, des paramètres de requête ou du nom d'utilisateur MQTT CONNECT afin d'effectuer la validation de la signature. Cette valeur est obligatoire si la signature est activée dans votre mécanisme d'autorisation. 
+  *Indicateur de signature désactivée (facultatif)* : valeur booléenne qui spécifie s'il faut désactiver l'exigence de signature sur les informations d'identification. Ceci est utile pour les scénarios dans lesquels la signature des informations d'identification n'a pas de sens, tels que les schémas d'authentification qui utilisent le nom d'utilisateur et le mot de passe MQTT. La valeur par défaut est `false`, la signature est donc activée par défaut. 
+  *Clé publique de signature de jeton* : clé publique que AWS IoT Core utilise pour valider la signature du jeton. Sa longueur minimale est de 2048 bits. Cette valeur est obligatoire si la signature est activée dans votre mécanisme d'autorisation.  

Lambda vous facture le nombre d'exécutions de votre fonction Lambda et le temps nécessaire à l'exécution du code de votre fonction. Pour plus d'informations sur la tarification Lambda, consultez [Tarification Lambda ](https://aws.amazon.com/lambda/pricing/). Pour plus d'informations sur la création de fonctions Lambda, consultez le [Guide du développeur Lambda](https://docs.aws.amazon.com/lambda/latest/dg/).

**Note**  
Si vous laissez la signature activée, vous pouvez empêcher un déclenchement excessif de votre Lambda par des clients non reconnus. Considérez ceci avant de désactiver la connexion à votre mécanisme d'autorisation.

**Note**  
Le délai d'expiration de la fonction Lambda pour le mécanisme d'autorisation personnalisé est de 5 secondes.

**Topics**
+ [

# Définir votre fonction Lambda
](custom-auth-lambda.md)
+ [

# Création d'un mécanisme d'autorisation
](custom-auth-create-authorizer.md)
+ [

# Autorisation d' AWS IoT invoquer votre fonction Lambda
](custom-auth-authorize.md)
+ [

# Tester vos mécanismes d'autorisation
](custom-auth-testing.md)
+ [

# Gestion des autorisations personnalisées
](custom-auth-manage.md)

# Définir votre fonction Lambda
<a name="custom-auth-lambda"></a>

 Lorsque vous AWS IoT Core invoquez votre autorisateur, il déclenche le Lambda associé à l'autorisateur avec un événement contenant l'objet JSON suivant. L'exemple d'objet JSON contient tous les champs possibles. Tous les champs qui ne sont pas pertinents pour la demande de connexion ne sont pas inclus.

```
{
    "token" :"aToken",
    "signatureVerified": Boolean, // Indicates whether the device gateway has validated the signature.
    "protocols": ["tls", "http", "mqtt"], // Indicates which protocols to expect for the request.
    "protocolData": {
        "tls" : {
            "serverName": "serverName" // The server name indication (SNI) host_name string.
        },
        "http": {
            "headers": {
                "#{name}": "#{value}"
            },
            "queryString": "?#{name}=#{value}"
        },
        "mqtt": {
            "username": "myUserName",
            "password": "myPassword", // A base64-encoded string.
            "clientId": "myClientId" // Included in the event only when the device sends the value.
        }
    },
    "connectionMetadata": {
        "id": UUID // The connection ID. You can use this for logging.
    },
}
```

 La fonction Lambda doit utiliser ces informations pour authentifier la connexion entrante et décider quelles actions sont autorisées dans la connexion. La fonction doit envoyer une réponse contenant les valeurs suivantes. 
+  `isAuthenticated`: Une valeur booléenne qui indique si la demande est authentifiée.
+  `principalId`: Chaîne alphanumérique qui sert d'identifiant pour le jeton envoyé par la demande d'autorisation personnalisée. La valeur doit être une chaîne alphanumérique contenant au moins un et pas plus de 128 caractères et correspondre à ce modèle d'expression régulière (regex) : `([a-zA-Z0-9]){1,128}`. Les caractères spéciaux qui ne sont pas alphanumériques ne sont pas autorisés à être utilisés avec l'entrée`principalId`. AWS IoT Core Reportez-vous à la documentation des autres AWS services si des caractères spéciaux non alphanumériques sont autorisés pour le. `principalId`
+  `policyDocuments`: liste des documents de AWS IoT Core politique au format JSON Pour plus d'informations sur la création de AWS IoT Core politiques, consultez. [AWS IoT Core politiques](iot-policies.md) Le nombre maximum de documents de stratégie est de 10 documents de stratégie. Chaque document de stratégie peut contenir un maximum de 2048 caractères.
+  `disconnectAfterInSeconds` : Un entier qui spécifie la durée maximale (en secondes) de la connexion à la passerelle AWS IoT Core . La valeur minimale est de 300 secondes et la valeur maximale de 86 400 secondes. La valeur par défaut est 86 400.
**Note**  
La valeur de `disconnectAfterInSeconds` (renvoyée par la fonction Lambda) est définie lorsque la connexion est établie. Cette valeur ne peut pas être modifiée lors des appels Lambda d'actualisation des politiques ultérieurs.
+  `refreshAfterInSeconds`: Un entier qui qui spécifie l’intervalle entre les actualisations de stratégie. Lorsque cet intervalle est écoulé, AWS IoT Core appelle la fonction Lambda pour autoriser l'actualisation des stratégies. La valeur minimale est de 300 secondes et la valeur maximale de 86 400 secondes. 

  L'objet JSON suivant contient un exemple de réponse que votre fonction Lambda peut envoyer. 

 **\$1 "isAuthenticated":true, //A Boolean that determines whether client can connect. "principalId": "xxxxxxxx",  //A string that identifies the connection in logs. "disconnectAfterInSeconds": 86400,  "refreshAfterInSeconds": 300,   "policyDocuments": [       \$1         "Version": "2012-10-17",         "Statement": [            \$1               "Action": "iot:Publish",               "Effect": "Allow",               "Resource": "arn:aws:iot:us-east-1:<your\$1aws\$1account\$1id>:topic/customauthtesting"             \$1          ]        \$1     ] \$1**

 La `policyDocument` valeur doit contenir un document AWS IoT Core de politique valide. Pour plus d'informations sur AWS IoT Core les politiques, consultez[AWS IoT Core politiques](iot-policies.md). Dans MQTT sur TLS et MQTT sur WebSockets connexions, met en AWS IoT Core cache cette politique pendant l'intervalle spécifié dans la valeur du champ. `refreshAfterInSeconds` Dans le cas des connexions HTTP, la fonction Lambda est appelée pour chaque demande d'autorisation, sauf si votre appareil utilise des connexions HTTP persistantes (également appelées HTTP keep-alive ou HTTP connection reuse). Vous pouvez choisir d'activer la mise en cache lors de la configuration du mécanisme d'autorisation. Pendant cet intervalle, AWS IoT Core autorise les actions dans une connexion établie par rapport à cette politique mise en cache sans déclencher à nouveau votre fonction Lambda. En cas d'échec lors de l'authentification personnalisée, AWS IoT Core met fin à la connexion. AWS IoT Core met également fin à la connexion si elle est ouverte depuis plus longtemps que la valeur spécifiée dans le `disconnectAfterInSeconds` paramètre. 

 Vous trouverez ci-dessous JavaScript un exemple de fonction Lambda Node.js qui recherche un mot de passe dans le message MQTT Connect avec une valeur `test` égale à et renvoie une politique autorisant la connexion AWS IoT Core avec un client `myClientName` nommé et la publication sur une rubrique contenant le même nom de client. S'il ne trouve pas le mot de passe attendu, il renvoie une stratégie qui refuse ces deux actions. 

```
// A simple Lambda function for an authorizer. It demonstrates 
// how to parse an MQTT password and generate a response.

exports.handler = function(event, context, callback) { 
    var uname = event.protocolData.mqtt.username;
    var pwd = event.protocolData.mqtt.password;
    var buff = new Buffer(pwd, 'base64');
    var passwd = buff.toString('ascii');
    switch (passwd) { 
        case 'test': 
            callback(null, generateAuthResponse(passwd, 'Allow')); 
            break;
        default: 
            callback(null, generateAuthResponse(passwd, 'Deny'));  
    }
};

// Helper function to generate the authorization response.
var generateAuthResponse = function(token, effect) { 
    var authResponse = {}; 
    authResponse.isAuthenticated = true; 
    authResponse.principalId = 'TEST123'; 
    
    var policyDocument = {}; 
    policyDocument.Version = '2012-10-17';		 	 	 
    policyDocument.Statement = []; 
    var publishStatement = {}; 
    var connectStatement = {};
    connectStatement.Action = ["iot:Connect"];
    connectStatement.Effect = effect;
    connectStatement.Resource = ["arn:aws:iot:us-east-1:123456789012:client/myClientName"];
    publishStatement.Action = ["iot:Publish"]; 
    publishStatement.Effect = effect; 
    publishStatement.Resource = ["arn:aws:iot:us-east-1:123456789012:topic/telemetry/myClientName"]; 
    policyDocument.Statement[0] = connectStatement;
    policyDocument.Statement[1] = publishStatement; 
    authResponse.policyDocuments = [policyDocument]; 
    authResponse.disconnectAfterInSeconds = 3600; 
    authResponse.refreshAfterInSeconds = 300;
    
    return authResponse; 
}
```

 La fonction Lambda précédente renvoie le JSON suivant lorsqu'elle reçoit le mot de passe `test` attendu dans le message MQTT Connect. Les valeurs des propriétés `password` et `principalId` seront les valeurs du message MQTT Connect.

```
{
  "password": "password",
  "isAuthenticated": true,
  "principalId": "principalId",
  "policyDocuments": [
    {
      "Version": "2012-10-17",		 	 	 
      "Statement": [
        {
          "Action": "iot:Connect",
          "Effect": "Allow",
          "Resource": "*"
        },
        {
          "Action": "iot:Publish",
          "Effect": "Allow",
          "Resource": "arn:aws:iot:region:accountId:topic/telemetry/${iot:ClientId}"
        },
        {
          "Action": "iot:Subscribe",
          "Effect": "Allow",
          "Resource": "arn:aws:iot:region:accountId:topicfilter/telemetry/${iot:ClientId}"
        },
        {
          "Action": "iot:Receive",
          "Effect": "Allow",
          "Resource": "arn:aws:iot:region:accountId:topic/telemetry/${iot:ClientId}"
        }
      ]
    }
  ],
  "disconnectAfterInSeconds": 3600,
  "refreshAfterInSeconds": 300
}
```

# Création d'un mécanisme d'autorisation
<a name="custom-auth-create-authorizer"></a>

 Vous pouvez créer un autorisateur à l'aide de l'[CreateAuthorizerAPI](https://docs.aws.amazon.com/iot/latest/apireference/API_CreateAuthorizer.html). L'exemple suivant décrit la commande. 

```
aws iot create-authorizer
--authorizer-name MyAuthorizer
--authorizer-function-arn arn:aws:lambda:us-west-2:<account_id>:function:MyAuthorizerFunction  //The ARN of the Lambda function.
[--token-key-name MyAuthorizerToken //The key used to extract the token from headers.
[--token-signing-public-keys FirstKey=
 "-----BEGIN PUBLIC KEY-----
  [...insert your public key here...] 
  -----END PUBLIC KEY-----"
[--status ACTIVE]
[--tags <value>]
[--signing-disabled | --no-signing-disabled]
```

Vous pouvez utiliser le paramètre `signing-disabled` pour désactiver la validation de signature pour chaque invocation de votre mécanisme d'autorisation. Nous vous recommandons fortement de ne pas désactiver la signature, sauf si vous y êtes obligé. La validation de signature vous protège contre les appels excessifs de votre fonction Lambda à partir d'appareils inconnus. Vous ne pouvez pas mettre à jour l'état `signing-disabled` d'un organisme d'autorisation après l'avoir créé. Pour modifier ce comportement, vous devez créer un autre mécanisme d'autorisation personnalisé avec une valeur différente pour le paramètre `signing-disabled`. 

Les valeurs des paramètres `tokenKeyName` et `tokenSigningPublicKeys` sont facultatives si vous avez désactivé la signature. Ce sont des valeurs obligatoires si la signature est activée. 

Après avoir créé votre fonction Lambda et l'autorisateur personnalisé, vous devez explicitement accorder au AWS IoT Core service l'autorisation d'appeler la fonction en votre nom. Vous pouvez le faire à l'aide de la commande suivante. 

**Note**  
Le point de terminaison IoT par défaut peut ne pas prendre en charge l'utilisation d'autorisateurs personnalisés dotés de fonctions Lambda. Vous pouvez plutôt utiliser des configurations de domaine pour définir un nouveau point de terminaison, puis spécifier ce point de terminaison pour l'autorisateur personnalisé.

```
aws lambda add-permission --function-name <lambda_function_name>
--principal iot.amazonaws.com --source-arn <authorizer_arn>
--statement-id Id-123 --action "lambda:InvokeFunction"
```

# Autorisation d' AWS IoT invoquer votre fonction Lambda
<a name="custom-auth-authorize"></a>

Dans cette section, vous allez autoriser la ressource d'autorisation personnalisée que vous venez de créer pour exécuter la fonction Lambda. Pour accorder l'autorisation, vous pouvez utiliser la commande CLI [add-permission](https://docs.aws.amazon.com//cli/latest/reference/lambda/add-permission.html).

**Accordez l'autorisation à votre fonction Lambda à l'aide du AWS CLI**

1. Après avoir inséré vos valeurs, entrez la commande suivante. Notez que la valeur `statement-id` doit être unique. Remplacez `Id-1234` par la valeur exacte que vous avez, sinon vous risquez de recevoir une `ResourceConflictException` erreur.

   ```
   aws lambda add-permission  \
   --function-name "custom-auth-function" \
   --principal "iot.amazonaws.com" \
   --action "lambda:InvokeFunction" \
   --statement-id "Id-1234" \
   --source-arn authorizerArn
   ```

1. Si la commande aboutit, elle renvoie une instruction d'autorisation, comme dans cet exemple. Vous pouvez passer à la section suivante pour tester le mécanisme d’autorisation personnalisée.

   ```
   {
       "Statement": "{\"Sid\":\"Id-1234\",\"Effect\":\"Allow\",\"Principal\":{\"Service\":\"iot.amazonaws.com\"},\"Action\":\"lambda:InvokeFunction\",\"Resource\":\"arn:aws:lambda:Region:57EXAMPLE833:function:custom-auth-function\",\"Condition\":{\"ArnLike\":{\"AWS:SourceArn\":\"arn:aws:lambda:Region:57EXAMPLE833:function:custom-auth-function\"}}}"
   }
   ```

   Si la commande échoue, elle renvoie une erreur, comme dans cet exemple. Vous devez vérifier et corriger l'erreur avant de continuer.

   ```
   An error occurred (AccessDeniedException) when calling the AddPermission operation: User: arn:aws:iam::57EXAMPLE833:user/EXAMPLE-1 is not authorized to perform: lambda:AddPer
   mission on resource: arn:aws:lambda:Region:57EXAMPLE833:function:custom-auth-function
   ```

# Tester vos mécanismes d'autorisation
<a name="custom-auth-testing"></a>

 Vous pouvez utiliser l'[TestInvokeAuthorizer](https://docs.aws.amazon.com/iot/latest/apireference/API_TestInvokeAuthorizer.html)API pour tester les valeurs d'invocation et de retour de votre autorisateur. Cette API vous permet de spécifier les métadonnées du protocole et de tester la validation de signature dans votre autorisateur.

Les onglets suivants montrent comment utiliser le AWS CLI pour tester votre autorisateur.

------
#### [ Unix-like ]

```
aws iot test-invoke-authorizer --authorizer-name NAME_OF_AUTHORIZER \
--token TOKEN_VALUE --token-signature TOKEN_SIGNATURE
```

------
#### [ Windows CMD ]

```
aws iot test-invoke-authorizer --authorizer-name NAME_OF_AUTHORIZER ^
--token TOKEN_VALUE --token-signature TOKEN_SIGNATURE
```

------
#### [ Windows PowerShell ]

```
aws iot test-invoke-authorizer --authorizer-name NAME_OF_AUTHORIZER `
--token TOKEN_VALUE --token-signature TOKEN_SIGNATURE
```

------

La valeur du paramètre `token-signature` est le jeton signé. Pour savoir comment obtenir cette valeur, consultez [Signer le jeton](custom-auth.md#custom-auth-token-signature).

Si votre mécanisme d'autorisation prend un nom d'utilisateur et un mot de passe, vous pouvez transmettre ces informations en utilisant le paramètre `--mqtt-context`. Les onglets suivants montrent comment utiliser l'API `TestInvokeAuthorizer` pour envoyer un objet JSON contenant un nom d'utilisateur, un mot de passe et un nom de client à votre mécanisme d'autorisation personnalisé.

------
#### [ Unix-like ]

```
aws iot test-invoke-authorizer --authorizer-name NAME_OF_AUTHORIZER  \
--mqtt-context '{"username": "USER_NAME", "password": "dGVzdA==", "clientId":"CLIENT_NAME"}'
```

------
#### [ Windows CMD ]

```
aws iot test-invoke-authorizer --authorizer-name NAME_OF_AUTHORIZER  ^
--mqtt-context '{"username": "USER_NAME", "password": "dGVzdA==", "clientId":"CLIENT_NAME"}'
```

------
#### [ Windows PowerShell ]

```
aws iot test-invoke-authorizer --authorizer-name NAME_OF_AUTHORIZER  `
--mqtt-context '{"username": "USER_NAME", "password": "dGVzdA==", "clientId":"CLIENT_NAME"}'
```

------

Le mot de passe doit être codé en base64. L'exemple suivant montre comment coder un mot de passe dans un environnement de type Unix.

```
echo -n PASSWORD | base64
```

# Gestion des autorisations personnalisées
<a name="custom-auth-manage"></a>

 Vous pouvez gérer vos autorisateurs à l'aide des méthodes suivantes APIs. 
+ [ListAuthorizers](https://docs.aws.amazon.com/iot/latest/apireference/API_ListAuthorizers.html): Afficher tous les autorisateurs de votre compte.
+  [DescribeAuthorizer](https://docs.aws.amazon.com/iot/latest/apireference/API_DescribeAuthorizer.html): affiche les propriétés de l'autorisateur spécifié. Ces valeurs incluent la date de création, la date de la dernière modification et d'autres attributs.
+ [SetDefaultAuthorizer](https://docs.aws.amazon.com/iot/latest/apireference/API_SetDefaultAuthorizer.html): Spécifie l'autorisateur par défaut pour vos points de terminaison AWS IoT Core de données. AWS IoT Core utilise cet autorisateur si un appareil ne transmet pas les AWS IoT Core informations d'identification et ne spécifie pas d'autorisateur. Pour plus d'informations sur l'utilisation des AWS IoT Core informations d'identification, consultez[Authentification client](client-authentication.md).
+ [UpdateAuthorizer](https://docs.aws.amazon.com/iot/latest/apireference/API_UpdateAuthorizer.html): modifie le statut, le nom de la clé du jeton ou les clés publiques de l'autorisateur spécifié.
+  [DeleteAuthorizer](https://docs.aws.amazon.com/iot/latest/apireference/API_DeleteAuthorizer.html): Supprime l'autorisateur spécifié. 

**Note**  
 Vous ne pouvez pas mettre à jour les exigences de signature d'un mécanisme d'autorisation. Cela signifie que vous ne pouvez pas désactiver la connexion si un mécanisme d'autorisation existant l'exige. Vous ne pouvez pas non plus exiger la connexion d’un mécanisme d’autorisation existant qui ne l’exige pas. 

# Authentification personnalisée avec des certificats clients X.509
<a name="custom-auth-509cert"></a>

Lorsque vous connectez des appareils à AWS IoT Core, plusieurs [types d'authentification](protocols.md#connection-protocol-auth-mode) sont disponibles. Vous pouvez utiliser des [certificats client X.509](https://docs.aws.amazon.com//iot/latest/developerguide/x509-client-certs.html) qui peuvent être utilisés pour authentifier les connexions des clients et des appareils, ou définir des [autorisateurs personnalisés](https://docs.aws.amazon.com//iot/latest/developerguide/custom-authentication.html) pour gérer votre propre logique d'authentification et d'autorisation des clients. Cette rubrique explique comment utiliser l'authentification personnalisée avec les certificats client X.509.

L'utilisation de l'authentification personnalisée avec des certificats X.509 peut être utile si vous avez déjà authentifié vos appareils à l'aide de certificats X.509 et que vous souhaitez effectuer une validation supplémentaire et une autorisation personnalisée. Par exemple, si vous stockez les données de vos appareils, telles que leurs numéros de série, dans le certificat client X.509, après avoir AWS IoT Core authentifié le certificat client X.509, vous pouvez utiliser un autorisateur personnalisé pour identifier des appareils spécifiques en fonction des informations stockées dans le champ du certificat. CommonName L'utilisation de l'authentification personnalisée avec des certificats X.509 peut améliorer la gestion de la sécurité de vos appareils lors de la connexion des appareils AWS IoT Core et offre plus de flexibilité pour gérer la logique d'authentification et d'autorisation. AWS IoT Core [prend en charge l'authentification personnalisée avec des certificats X.509 utilisant le certificat X.509 et le type d'authentification d'autorisation personnalisé, qui fonctionne à la fois avec le protocole [MQTT](https://docs.aws.amazon.com//iot/latest/developerguide/mqtt.html) et le protocole HTTPS.](https://docs.aws.amazon.com//iot/latest/developerguide/http.html) Pour plus d'informations sur les types d'authentification et les protocoles d'application pris en charge par les terminaux des AWS IoT Core appareils, consultez la section [Protocoles de communication des appareils](https://docs.aws.amazon.com//iot/latest/developerguide/protocols.html).

**Note**  
L'authentification personnalisée à l'aide de certificats clients X.509 n'est pas prise en charge dans les AWS GovCloud (US) régions.

**Important**  
Vous devez utiliser un point de terminaison créé à l'aide [de configurations de domaine](iot-custom-endpoints-configurable.md). 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.

**Topics**
+ [

## Étape 1 : enregistrez vos certificats clients X.509 auprès de AWS IoT Core
](#custom-auth-509cert-client)
+ [

## Étape 2 : création d’une fonction Lambda
](#custom-auth-509cert-lambda)
+ [

## Étape 3 : créer un autorisateur personnalisé
](#custom-auth-509cert-authorizer)
+ [

## Étape 4 : définir le type d'authentification et le protocole d'application dans une configuration de domaine
](#custom-auth-509cert-domainconfig)

## Étape 1 : enregistrez vos certificats clients X.509 auprès de AWS IoT Core
<a name="custom-auth-509cert-client"></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="custom-auth-509cert-lambda"></a>

AWS IoT Core utilise des autorisateurs personnalisés pour implémenter des schémas d'authentification et d'autorisation personnalisés. Un autorisateur personnalisé est associé à une fonction Lambda qui détermine si un appareil est authentifié et quelles opérations le périphérique est autorisé à effectuer. Lorsqu'un appareil se connecte à AWS IoT Core, AWS IoT Core récupère les détails de l'autorisateur, y compris le nom de l'autorisateur et la fonction Lambda associée, et invoque la fonction Lambda. La fonction Lambda reçoit un événement contenant un objet JSON contenant les données du certificat client X.509 du périphérique. Votre fonction Lambda utilise cet objet JSON d'événement pour évaluer la demande d'authentification, décider des actions à entreprendre et renvoyer une réponse.

### Exemple d'événement lié à une fonction Lambda
<a name="custom-auth-509cert-event"></a>

L'exemple d'objet JSON suivant contient tous les champs possibles qui peuvent être inclus. L'objet JSON proprement dit ne contiendra que les champs relatifs à la demande de connexion spécifique.

```
{
	"token": "aToken",
	"signatureVerified": true,
	"protocols": [
		"tls",
		"mqtt"
	],
	"protocolData": {
		"tls": {
			"serverName": "serverName",
			"x509CertificatePem": "x509CertificatePem",
			"principalId": "principalId"
		},
		"mqtt": {
			"clientId": "myClientId",
                     "username": "myUserName",
                     "password": "myPassword"
		}
	},
	"connectionMetadata": {
		"id": "UUID"
	}
}
```

`signatureVerified`  
Valeur booléenne qui indique si la signature du jeton configurée dans l'autorisateur est vérifiée ou non avant d'appeler la fonction Lambda de l'autorisateur. Si l'autorisateur est configuré pour désactiver la signature par jeton, ce champ sera faux. 

`protocols`  
Tableau contenant les protocoles attendus pour la demande.

`protocolData`  
Objet contenant des informations sur les protocoles utilisés dans la connexion. Il fournit des informations spécifiques au protocole qui peuvent être utiles pour l'authentification, l'autorisation, etc.  
`tls`- Cet objet contient des informations relatives au protocole TLS (Transport Layer Security).   
+ `serverName`- La 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.
+ `x509CertificatePem`- Le certificat X.509 au format PEM, qui est utilisé pour l'authentification du client dans la connexion TLS.
+ `principalId`- L'identifiant principal associé au client dans la connexion TLS.
`mqtt`- Cet objet contient des informations relatives au protocole MQTT.  
+ `clientId`- Une chaîne ne doit être incluse que dans le cas où l'appareil envoie cette valeur.
+ `username`- Le nom d'utilisateur fourni dans le paquet MQTT Connect.
+ `password`- Le mot de passe fourni dans le paquet MQTT Connect.

`connectionMetadata`  
Métadonnées de la connexion.  
`id`- L'identifiant de connexion, que vous pouvez utiliser pour la journalisation et le dépannage.

**Note**  
Dans ce cas, il s'agit d'un objet JSON `x509CertificatePem` et `principalId` deux nouveaux champs figurent dans la demande. La valeur de `principalId` est identique à la valeur de`certificateId`. Pour plus d'informations, consultez la section [Certificat](https://docs.aws.amazon.com//iot/latest/apireference/API_Certificate.html).

### Exemple de réponse de la fonction Lambda
<a name="custom-auth-509cert-response"></a>

La fonction Lambda doit utiliser les informations de l'objet JSON d'événement pour authentifier la connexion entrante et décider quelles actions sont autorisées dans la connexion.

L'objet JSON suivant contient un exemple de réponse que votre fonction Lambda peut envoyer.

```
{
	"isAuthenticated": true,
	"principalId": "xxxxxxxx",
	"disconnectAfterInSeconds": 86400,
	"refreshAfterInSeconds": 300,
	"policyDocuments": [
		{
			"Version": "2012-10-17",		 	 	 
			"Statement": [
				{
					"Effect": "Allow",
					"Action": "iot:Publish",
					"Resource": "arn:aws:iot:us-east-1:123456789012:topic/customauthtesting"
				}
			]
		}
	]
}
```

Dans cet exemple, cette fonction doit envoyer une réponse contenant les valeurs suivantes.

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

`principalId`  
Chaîne alphanumérique qui sert d'identifiant pour le jeton envoyé par la demande d'autorisation personnalisée. La valeur doit être une chaîne alphanumérique comportant au moins un caractère, mais pas plus de 128. Il identifie la connexion dans les journaux. La valeur de `principalId` doit être identique à la valeur de l'objet JSON `principalId` de l'événement (c'est-à-dire le certificateID du certificat X.509).

`policyDocuments`  
Liste des documents de politique au format JSON AWS IoT Core . La valeur est facultative et prend en charge les [variables de politique d'objet et les variables](https://docs.aws.amazon.com//iot/latest/developerguide/thing-policy-variables.html) [de politique de certificat](https://docs.aws.amazon.com//iot/latest/developerguide/cert-policy-variables.html). Le nombre maximum de documents de politique est de 10. Chaque document de stratégie peut contenir un maximum de 2048 caractères. Si plusieurs politiques sont associées à votre certificat client et à la fonction Lambda, l'autorisation est un ensemble de toutes les politiques. Pour plus d'informations sur la création de AWS IoT Core politiques, consultez la section [Politiques](https://docs.aws.amazon.com//iot/latest/developerguide/iot-policies.html).

`disconnectAfterInSeconds`  
Nombre entier qui indique la durée maximale (en secondes) de la connexion à la AWS IoT Core passerelle. La valeur minimale est de 300 secondes et la valeur maximale de 86 400 secondes. `disconnectAfterInSeconds`est valable pour la durée de vie d'une connexion et n'est pas actualisé lors de mises à jour consécutives des politiques.

`refreshAfterInSeconds`  
Nombre entier qui indique l'intervalle entre les actualisations des politiques. Lorsque cet intervalle est dépassé, AWS IoT Core invoque la fonction Lambda pour permettre l'actualisation des politiques. La valeur minimale est de 300 secondes et la valeur maximale de 86 400 secondes.

### Exemple de fonction Lambda
<a name="custom-auth-509cert-js-example"></a>

Voici un exemple de fonction Lambda de Node.js. La fonction examine le certificat X.509 du client et extrait les informations pertinentes telles que le numéro de série, l'empreinte digitale et le nom du sujet. Si les informations extraites correspondent aux valeurs attendues, le client est autorisé à se connecter. Ce mécanisme garantit que seuls les clients autorisés possédant des certificats valides peuvent établir une connexion.

```
const crypto = require('crypto');

exports.handler = async (event) => {
    
    // Extract the certificate PEM from the event
    const certPem = event.protocolData.tls.x509CertificatePem;
    
    // Parse the certificate using Node's crypto module
    const cert = new crypto.X509Certificate(certPem);
    
    var effect = "Deny";
    // Allow permissions only for a particular certificate serial, fingerprint, and subject
    if (cert.serialNumber === "7F8D2E4B9C1A5036DE8F7C4B2A91E5D80463BC9A1257" // This is a random serial
       && cert.fingerprint === "F2:9A:C4:1D:B5:E7:08:3F:6B:D0:4E:92:A7:C1:5B:8D:16:0F:E3:7A" // This is a random fingerprint
       && cert.subject === "allow.example.com") {
      effect = "Allow";
    }
    
    return generateAuthResponse(event.protocolData.tls.principalId, effect);
};


// Helper function to generate the authorization response.
function generateAuthResponse(principalId, effect) {
    const authResponse = {
        isAuthenticated: true,
        principalId,
        disconnectAfterInSeconds: 3600,
        refreshAfterInSeconds: 300,
        policyDocuments: [
          {
            Version: "2012-10-17",		 	 	 
            Statement: [
              {
                Action: ["iot:Connect"],
                Effect: effect,
                Resource: [
                  "arn:aws:iot:us-east-1:123456789012:client/myClientName"
                ]
              },
              {
                Action: ["iot:Publish"],
                Effect: effect,
                Resource: [
                  "arn:aws:iot:us-east-1:123456789012:topic/telemetry/myClientName"
                ]
              },
              {
                Action: ["iot:Subscribe"],
                Effect: effect,
                Resource: [
                   "arn:aws:iot:us-east-1:123456789012:topicfilter/telemetry/myClientName"
                ]
              },
              {
                Action: ["iot:Receive"],
                Effect: effect,
                Resource: [
                   "arn:aws:iot:us-east-1:123456789012:topic/telemetry/myClientName"
                ]
              }
            ]
          }
        ]
      };

  return authResponse;
}
```

La fonction Lambda précédente renvoie le code JSON suivant lorsqu'elle reçoit un certificat avec le numéro de série, l'empreinte digitale et le sujet attendus. La valeur de `x509CertificatePem` sera le certificat client fourni lors de la poignée de contact TLS. Pour plus d'informations, consultez la section [Définition de votre fonction Lambda](https://docs.aws.amazon.com//iot/latest/developerguide/config-custom-auth.html#custom-auth-lambda).

```
{
	"isAuthenticated": true,
	"principalId": "principalId in the event JSON object",
	"policyDocuments": [
		{
			"Version": "2012-10-17",		 	 	 
			"Statement": [
				{
					"Action": "iot:Connect",
					"Effect": "Allow",
					"Resource": "arn:aws:iot:us-east-1:123456789012:client/myClientName"
				},
				{
					"Action": "iot:Publish",
					"Effect": "Allow",
					"Resource": "arn:aws:iot:us-east-1:123456789012:topic/telemetry/myClientName"
				},
				{
					"Action": "iot:Subscribe",
					"Effect": "Allow",
					"Resource": "arn:aws:iot:us-east-1:123456789012:topicfilter/telemetry/myClientName"
				},
				{
					"Action": "iot:Receive",
					"Effect": "Allow",
					"Resource": "arn:aws:iot:us-east-1:123456789012:topic/telemetry/myClientName"
				}
			]
		}
	],
	"disconnectAfterInSeconds": 3600,
	"refreshAfterInSeconds": 300
}
```

## Étape 3 : créer un autorisateur personnalisé
<a name="custom-auth-509cert-authorizer"></a>

Après [avoir défini la fonction Lambda](#custom-auth-509cert-lambda), créez un autorisateur personnalisé pour gérer votre propre logique d'authentification et d'autorisation du client. Vous pouvez suivre les instructions détaillées de l'[étape 3 : créer une ressource d'autorisation client et son autorisation](https://docs.aws.amazon.com//iot/latest/developerguide/custom-auth-tutorial.html#custom-auth-tutorial-authorizer). Pour plus d'informations, consultez la section [Création d'un autorisateur.](https://docs.aws.amazon.com//iot/latest/developerguide/config-custom-auth.html) 

Lors de la création de l'autorisateur personnalisé, vous devez AWS IoT autoriser l'appel de la fonction Lambda après sa création. Pour obtenir des instructions détaillées, consultez [Autoriser l'appel AWS IoT de votre fonction Lambda](custom-auth-authorize.md).

## Étape 4 : définir le type d'authentification et le protocole d'application dans une configuration de domaine
<a name="custom-auth-509cert-domainconfig"></a>

Pour authentifier les appareils à l'aide d'une authentification personnalisée avec des certificats clients X.509, vous devez définir le type d'authentification et le protocole d'application dans une configuration de domaine, et vous devez envoyer l'extension SNI. La valeur de `authenticationType` doit être`CUSTOM_AUTH_X509`, et la valeur de `applicationProtocol` peut être `SECURE_MQTT` ou`HTTPS`.

### Définissez le type d'authentification et le protocole d'application dans la configuration du domaine (CLI)
<a name="custom-auth-509cert-cli"></a>

Si vous n'avez pas de configuration de domaine, utilisez la [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)commande pour en créer une. La valeur de `authenticationType` doit être`CUSTOM_AUTH_X509`, et la valeur de `applicationProtocol` peut être `SECURE_MQTT` ou`HTTPS`.

```
aws iot create-domain-configuration \
    --domain-configuration-name domainConfigurationName \
    --authentication-type CUSTOM_AUTH_X509 \  
    --application-protocol SECURE_MQTT \ 
    --authorizer-config '{
        "defaultAuthorizerName": my-custom-authorizer
    }'
```

Si vous avez déjà une configuration de domaine, utilisez la [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)commande update `authenticationType` et `applicationProtocol` si nécessaire. Notez que vous ne pouvez pas modifier le type ou le protocole d'authentification sur le point de terminaison par défaut (`iot:Data-ATS`).

```
aws iot update-domain-configuration \
    --domain-configuration-name domainConfigurationName \
    --authentication-type CUSTOM_AUTH_X509 \  
    --application-protocol SECURE_MQTT \
    --authorizer-config '{
        "defaultAuthorizerName": my-custom-authorizer
    }'
```

`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).

`--authorizer-config`  
Objet qui spécifie la configuration de l'autorisateur dans une configuration de domaine.

`defaultAuthorizerName`  
Nom de l'autorisateur pour une configuration de domaine.

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 la configuration des domaines, consultez la section [Configurations des domaines](https://docs.aws.amazon.com//iot/latest/developerguide/iot-custom-endpoints-configurable.html).

# Connexion à l' AWS IoT Core aide de l'authentification personnalisée
<a name="custom-auth"></a>

 Les appareils peuvent se connecter à AWS IoT Core l'aide d'une authentification personnalisée avec n'importe quel protocole prenant AWS IoT Core en charge la messagerie des appareils. Pour plus d'informations sur les protocoles de communication pris en charge, consultez [Protocoles de communication des appareils](protocols.md).  Les données de connexion que vous transmettez à votre fonction Lambda d'autorisation dépendent du protocole que vous utilisez. Pour plus d'informations sur la création de votre fonction Lambda d'autorisation, consultez [Définir votre fonction Lambda](custom-auth-lambda.md). Les sections suivantes expliquent comment se connecter pour s'authentifier à l'aide de chaque protocole pris en charge.

## HTTPS
<a name="custom-auth-http"></a>

Les appareils qui envoient des données à AWS IoT Core l'aide de l'[API HTTP Publish](https://docs.aws.amazon.com/iot/latest/apireference/API_iotdata_Publish.html) peuvent transmettre des informations d'identification par le biais d'en-têtes de requête ou de paramètres de requête dans leurs requêtes HTTP POST. Les appareils peuvent spécifier un mécanisme d'autorisation à invoquer à l'aide du paramètre d'en-tête `x-amz-customauthorizer-name` ou de requête. Si la signature de jetons est activée dans votre mécanisme d'autorisation, vous devez transmettre le `token-key-name` et `x-amz-customauthorizer-signature` dans les en-têtes ou paramètres de requête. Notez que la `token-signature` valeur doit être codée en URL lorsque vous l'utilisez JavaScript depuis le navigateur.

**Note**  
Le mécanisme d'autorisation client pour le protocole HTTPS prend uniquement en charge les opérations de publication. Pour plus d'informations sur le protocole HTTPS, consultez [Protocoles de communication des appareils](protocols.md).

Les exemples de requêtes suivants montrent comment transmettre ces paramètres dans les en-têtes et paramètres de requête. 

```
//Passing credentials via headers
POST /topics/topic?qos=qos HTTP/1.1
Host: your-endpoint 
x-amz-customauthorizer-signature: token-signature
token-key-name: token-value 
x-amz-customauthorizer-name: authorizer-name

//Passing credentials via query parameters
POST /topics/topic?qos=qos&x-amz-customauthorizer-signature=token-signature&token-key-name=token-value HTTP/1.1
```

## MQTT
<a name="custom-auth-mqtt"></a>

 Les appareils qui se connectent à AWS IoT Core l'aide d'une connexion MQTT peuvent transmettre des informations d'identification via les `password` champs `username` et des messages MQTT. La valeur `username` peut éventuellement contenir une chaîne de requête qui transmet des valeurs supplémentaires (y compris un jeton, une signature et un nom du mécanisme d'autorisation) à votre mécanisme d'autorisation. Vous pouvez utiliser cette chaîne de requête si vous souhaitez utiliser un schéma d'authentification basé sur un jeton au lieu des valeurs `password` et `username`.  

**Note**  
 Les données du champ du mot de passe sont codées en base64 par. AWS IoT Core Votre fonction Lambda doit le décoder. 

 L'exemple suivant contient une chaîne `username` contenant des paramètres supplémentaires spécifiant un jeton et une signature.  

```
username?x-amz-customauthorizer-name=authorizer-name&x-amz-customauthorizer-signature=token-signature&token-key-name=token-value
```

Pour appeler un autorisateur, les appareils qui se connectent à l'aide AWS IoT Core de MQTT et d'une authentification personnalisée doivent se connecter sur le port 443. Ils doivent également transmettre l'extension TLS ALPN (Application Layer Protocol Negotiation) avec une valeur égale à `mqtt` et l'extension SNI (Server Name Indication) avec le nom d'hôte de leur AWS IoT Core point de terminaison de données. Pour éviter des erreurs potentielles, la valeur de `x-amz-customauthorizer-signature` doit être codée en URL. Nous recommandons fortement que les valeurs de `x-amz-customauthorizer-name` et `token-key-name` soient codées en URL. Pour plus d'informations sur ces valeurs, consultez [Protocoles de communication des appareils](protocols.md). Le [AWS IoT Appareil SDKs, appareil mobile SDKs et client AWS IoT d'appareil](iot-sdks.md) V2 peut configurer ces deux extensions. 

## MQTT terminé WebSockets
<a name="custom-auth-websockets"></a>

 Les appareils qui se connectent à AWS IoT Core l'aide de MQTT over WebSockets peuvent transmettre des informations d'identification de l'une des deux manières suivantes. 
+ Via les en-têtes de requête ou les paramètres de requête contenus dans la demande HTTP UPGRADE pour établir la WebSockets connexion.
+ Via les champs `username` et `password` dans le message MQTT CONNECT.

 Si vous transmettez les informations d'identification via le message de connexion MQTT, les extensions ALPN et SNI TLS sont requises. Pour plus d'informations sur ces extensions, consultez [MQTT](#custom-auth-mqtt). L'exemple suivant montre comment transmettre les informations d'identification via la demande de mise à niveau HTTP. 

```
GET /mqtt HTTP/1.1
Host: your-endpoint 
Upgrade: WebSocket 
Connection: Upgrade 
x-amz-customauthorizer-signature: token-signature
token-key-name: token-value 
sec-WebSocket-Key: any random base64 value 
sec-websocket-protocol: mqtt 
sec-WebSocket-Version: websocket version
```

## Signer le jeton
<a name="custom-auth-token-signature"></a>

Vous devez signer le jeton avec la clé privée de la paire de clés publique-privée que vous avez utilisée lors de l'appel `create-authorizer`. Les exemples suivants montrent comment créer la signature du jeton à l'aide d'une commande de type Unix et. JavaScript Ils utilisent l'algorithme de hachage SHA-256 pour coder la signature.

------
#### [ Command line ]

```
echo -n TOKEN_VALUE | openssl dgst -sha256 -sign PEM encoded RSA private key | openssl base64
```

------
#### [ JavaScript ]

```
const crypto = require('crypto')

const key = "PEM encoded RSA private key"

const k = crypto.createPrivateKey(key)
let sign = crypto.createSign('SHA256')
sign.write(t)
sign.end()
const s = sign.sign(k, 'base64')
```

------

# Dépannage de vos mécanismes d'autorisation
<a name="custom-auth-troubleshooting"></a>

 Cette rubrique passe en revue les problèmes courants des flux de travail d'authentification personnalisés et les étapes pour les résoudre. Pour résoudre les problèmes le plus efficacement possible, activez les CloudWatch journaux pour DEBUG AWS IoT Core et définissez le niveau de journalisation sur **DEBUG**. Vous pouvez activer CloudWatch les journaux dans la AWS IoT Core console ([https://console.aws.amazon.com/iot/](https://console.aws.amazon.com/iot/)). Pour plus d'informations sur l'activation et la configuration des journaux pour AWS IoT Core, consultez [Configuration de la AWS IoT journalisation](configure-logging.md). 

**Note**  
Si vous laissez le niveau de journalisation au niveau **DEBUG** pendant de longues périodes, vous CloudWatch risquez de stocker de grandes quantités de données de journalisation. Cela peut augmenter vos CloudWatch frais. Envisagez d'utiliser la journalisation basée sur les ressources pour augmenter la verbosité uniquement pour les appareils d'un groupe d'objets particulier. Pour plus d'informations sur la journalisation basée sur les ressources, consultez [Configuration de la AWS IoT journalisation](configure-logging.md). De plus, une fois le dépannage terminé, réduisez le niveau du journal à un niveau moins détaillé.

Avant de commencer le dépannage, consultez [Comprendre le flux de travail d'authentification personnalisé](custom-authorizer.md) pour un aperçu général du processus d'authentification personnalisé. Cela vous aide à comprendre où chercher la source d’un problème.

Cette rubrique aborde les deux domaines suivants que vous devez étudier.
+ Problèmes liés à la fonction Lambda de votre mécanisme d'autorisation.
+ Problèmes liés à votre appareil.

## Recherchez les problèmes dans la fonction Lambda de votre mécanisme d'autorisation
<a name="custom-auth-troubleshooting-lambda"></a>

Effectuez les étapes suivantes pour vous assurer que les tentatives de connexion de vos appareils invoquent votre fonction Lambda.

1. Vérifiez quelle fonction Lambda est associée à votre mécanisme d'autorisation.

   Vous pouvez le faire en appelant l'[DescribeAuthorizer](https://docs.aws.amazon.com/iot/latest/apireference/API_DescribeAuthorizer.html)API ou en cliquant sur l'autorisateur souhaité dans la section **Secure** de la AWS IoT Core console.

1. Vérifiez les métriques d’invocation pour la fonction Lambda. Effectuez les étapes suivantes pour ce faire.

   1. Ouvrez la AWS Lambda console ([https://console.aws.amazon.com/lambda/](https://console.aws.amazon.com/lambda/)) et sélectionnez la fonction associée à votre autorisateur.

   1. Choisissez l’onglet **Surveiller** et affichez les métriques pour la période pertinente à votre problème.

1. Si vous ne voyez aucune invocation, vérifiez qu' AWS IoT Core elle est autorisée à appeler votre fonction Lambda. Si vous voyez des invocations, passez à l’étape suivante. Effectuez les étapes suivantes pour vérifier que votre fonction Lambda dispose des autorisations requises.

   1. Choisissez l'onglet **Autorisations** correspondant à votre fonction dans la AWS Lambda console.

   1. Recherchez la section **Stratégie basée sur les ressources** au bas de la page. Si votre fonction Lambda dispose des autorisations requises, la stratégie ressemble à l'exemple suivant.  
****  

      ```
      {
        "Version":"2012-10-17",		 	 	 
        "Id": "default",
        "Statement": [
          {
            "Sid": "Id123",
            "Effect": "Allow",
            "Principal": {
              "Service": "iot.amazonaws.com"
            },
            "Action": "lambda:InvokeFunction",
            "Resource": "arn:aws:lambda:us-east-1:111111111111:function:FunctionName",
            "Condition": {
              "ArnLike": {
                "AWS:SourceArn": "arn:aws:iot:us-east-1:111111111111:authorizer/AuthorizerName"
              },
              "StringEquals": {
                "AWS:SourceAccount": "111111111111"
              }
            }
          }
        ]
      }
      ```

   1. Cette politique accorde l'`InvokeFunction`autorisation d'accéder à votre fonction au AWS IoT Core directeur. Si vous ne le voyez pas, vous devrez l'ajouter à l'aide de l'[AddPermission](https://docs.aws.amazon.com/lambda/latest/dg/API_AddPermission.html)API. L'exemple suivant vous montre comment procéder en utilisant le AWS CLI.

      ```
      aws lambda add-permission --function-name FunctionName --principal iot.amazonaws.com --source-arn AuthorizerARn --statement-id Id-123 --action "lambda:InvokeFunction"
      ```

1. Si vous voyez des invocations, vérifiez qu’il n’y a pas d’erreurs. Une erreur peut indiquer que la fonction Lambda ne gère pas correctement l'événement de connexion qui AWS IoT Core lui est envoyé.

   Pour plus d'informations sur la gestion de l'événement dans votre fonction Lambda, consultez [Définir votre fonction Lambda](custom-auth-lambda.md). Vous pouvez utiliser la fonction de test de la AWS Lambda console ([https://console.aws.amazon.com/lambda/](https://console.aws.amazon.com/lambda/)) pour coder en dur les valeurs de test de la fonction afin de vous assurer que celle-ci gère correctement les événements.

1. Si vous voyez des invocations sans erreur, mais que vos appareils ne parviennent pas à se connecter (ou à publier, s'abonner et recevoir des messages), le problème peut être que la stratégie renvoyée par votre fonction Lambda n'accorde pas d'autorisations pour les actions que vos appareils effectuent. Effectuez les étapes suivantes pour déterminer si quelque chose ne va pas avec la stratégie renvoyée par la fonction.

   1. Utilisez une requête Amazon CloudWatch Logs Insights pour analyser les journaux sur une courte période afin de détecter les défaillances. L'exemple de requête suivant trie les événements par horodatage et recherche les échecs.

      ```
      display clientId, eventType, status, @timestamp | sort @timestamp desc | filter status = "Failure"    
      ```

   1. Mettez à jour votre fonction Lambda pour enregistrer les données auxquelles elle renvoie AWS IoT Core et l'événement qui déclenche la fonction. Vous pouvez utiliser ces journaux pour inspecter la stratégie créée par la fonction.

1. Si vous voyez des invocations sans erreur, mais que vos appareils ne parviennent pas à se connecter (ou à publier, s'abonner et recevoir des messages), une autre raison peut être que votre fonction Lambda a dépassé le délai d'attente. Le délai d'expiration de la fonction Lambda pour le mécanisme d'autorisation personnalisé est de 5 secondes. Vous pouvez vérifier la durée de la fonction dans CloudWatch les journaux ou les métriques. 

## Enquête sur les problèmes liés aux appareils
<a name="custom-auth-troubleshooting-investigate"></a>

Si vous ne rencontrez aucun problème lors de l’invocation de votre fonction Lambda ou avec la stratégie renvoyée par la fonction, recherchez les problèmes liés aux tentatives de connexion de vos appareils. Les demandes de connexion mal formées peuvent empêcher AWS IoT Core le déclenchement de votre autorisateur. Des problèmes de connexion peuvent survenir à la fois au niveau des couches TLS et application.

**Problèmes possibles avec la couche TLS :**
+ Les clients doivent transmettre soit un en-tête de nom d'hôte (HTTP, MQTT par-dessus WebSockets), soit l'extension TLS avec indication du nom du serveur (HTTP, MQTT over WebSockets, MQTT) dans toutes les demandes d'authentification personnalisées. Dans les deux cas, la valeur transmise doit correspondre à l'un des points de terminaison de AWS IoT Core données de votre compte. Il s'agit des points de terminaison renvoyés lorsque vous exécutez les commandes CLI suivantes.
  + `aws iot describe-endpoint --endpoint-type iot:Data-ATS`
  + `aws iot describe-endpoint --endpoint-type iot:Data`(pour les VeriSign terminaux existants)
+ Les appareils qui utilisent l’authentification personnalisée pour les connexions MQTT doivent également transmettre l’extension TLS Application Layer Protocol Négociation (ALPN) avec une valeur de `mqtt`.
+ L'authentification personnalisée est actuellement disponible uniquement sur le port 443.

**Problèmes possibles au niveau de la couche application :**
+ Si la signature est activée (le champ `signingDisabled` est faux dans votre mécanisme d'autorisation), recherchez les problèmes de signature suivants.
  + Assurez-vous de transmettre la signature du jeton dans l'en-tête `x-amz-customauthorizer-signature` ou dans un paramètre de chaîne de requête.
  + Assurez-vous que le service ne signe pas une valeur autre que le jeton.
  + Assurez-vous de transmettre le jeton dans le paramètre d'en-tête ou de requête que vous avez spécifié dans le champ `token-key-name` de votre mécanisme d'autorisation.
+ Assurez-vous que le nom du mécanisme d'autorisation que vous transmettez dans le paramètre d'en-tête `x-amz-customauthorizer-name` ou de chaîne de requête est valide ou qu'un mécanisme d'autorisation par défaut est défini pour votre compte.