

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.

# Protocoles de communication des appareils
<a name="protocols"></a><a name="iot-message-broker"></a>

AWS IoT Core prend en charge les appareils et les clients qui utilisent les protocoles MQTT et MQTT over WebSocket Secure (WSS) pour publier des messages et s'y abonner, les appareils et les clients qui utilisent le protocole HTTPS pour publier des messages, et l'API de messagerie directe pour envoyer des messages à des clients connectés spécifiques. Elle prend en charge les protocoles IPv4 et IPv6. Cette section décrit les différentes options de connexion pour les appareils et les clients.

## Versions du protocole TLS
<a name="connection-protocol-tls"></a>

AWS IoT Core utilise [TLS](https://en.wikipedia.org/wiki/Transport_Layer_Security) [version 1.2](https://en.wikipedia.org/wiki/Transport_Layer_Security#TLS_1.2) et [TLS version 1.3](https://en.wikipedia.org/wiki/Transport_Layer_Security#TLS_1.3) pour chiffrer toutes les communications. Vous pouvez configurer des versions de politique TLS supplémentaires pour votre point de terminaison en [configurant les paramètres TLS dans les configurations de domaine](https://docs.aws.amazon.com//iot/latest/developerguide/iot-endpoints-tls-config.html). [Lorsqu'ils connectent des appareils à AWS IoT Core, les clients peuvent envoyer l'[extension SNI (Server Name Indication)](https://tools.ietf.org/html/rfc3546#section-3.1), qui est requise pour des fonctionnalités telles que l'[enregistrement multi-comptes](https://docs.aws.amazon.com//iot/latest/developerguide/x509-client-certs.html#multiple-account-cert), les points de [terminaison configurables, les [domaines personnalisés](https://docs.aws.amazon.com//iot/latest/developerguide/iot-custom-endpoints-configurable-custom.html) et les points de terminaison](https://docs.aws.amazon.com//iot/latest/developerguide/iot-custom-endpoints-configurable.html) VPC.](https://docs.aws.amazon.com//iot/latest/developerguide/IoTCore-VPC.html) Pour de plus amples informations, veuillez consulter [Sécurité du transport dans AWS IoT](transport-security.html).

Les [AWS IoT SDK pour appareils](iot-connect-devices.md#iot-connect-device-sdks) prennent en charge le MQTT et le MQTT sur WSS et répondent aux exigences de sécurité des connexions client. Nous vous recommandons d'utiliser le [AWS IoT SDK pour appareils](iot-connect-devices.md#iot-connect-device-sdks) pour connecter les clients à AWS IoT.

## Protocols, port mappings, and authentication (Protocoles, mappages de ports et authentification)
<a name="protocol-mapping"></a><a name="protocol-port-mapping"></a>

La façon dont un appareil ou un client se connecte au courtier de messages est configurable à l'aide d'un [type d'authentification](#connection-protocol-auth-mode). Par défaut ou lorsqu'aucune extension SNI n'est envoyée, la méthode d'authentification est basée sur le protocole d'application, le port et l'extension TLS ALPN (Application Layer Protocol Negotiation) utilisés par les appareils. Le tableau suivant répertorie l'authentification attendue en fonction du port, du port et de l'ALPN.


**Protocoles, authentification et mappages de port**  

|  Protocole | Opérations prises en charge | Authentification |  Port | Nom du protocole ALPN | 
| --- | --- | --- | --- | --- | 
| MQTT terminé WebSocket | Publier, S'abonner | Signature Version 4 | 443 | N/A | 
| MQTT terminé WebSocket | Publier/s'abonner | Authentification personnalisée | 443 | N/A | 
| MQTT | Publier/s'abonner | X.509 certificat client | 443† | `x-amzn-mqtt-ca` | 
| MQTT | Publier/s'abonner | X.509 certificat client | 8883 | N/A | 
| MQTT | Publier/s'abonner | Authentification personnalisée | 443† | `mqtt` | 
| HTTPS | Publier uniquement | Signature Version 4 | 443 | N/A | 
| HTTPS | Publier uniquement | X.509 certificat client | 443† | `x-amzn-http-ca` | 
| HTTPS | Publier uniquement | X.509 certificat client | 8443 | N/A | 
| HTTPS | Publier uniquement | Authentification personnalisée | 443 | N/A | 

**Application Layer Protocol Negotiation (ALPN)**  
† Lors de l'utilisation de configurations de point de terminaison par défaut, les clients qui se connectent sur le port 443 avec une authentification par certificat X.509 client doivent implémenter l'extension TLS [ALPN (Application Layer Protocol Negotiation)](https://tools.ietf.org/html/rfc7301) et utiliser le [nom du protocole ALPN](https://tools.ietf.org/html/rfc7301#section-3.1) indiqué dans l'ALPN ProtocolNameList envoyé par le client dans le cadre du message. `ClientHello`  
Sur le port 443, le [IoT:Data-ATS](iot-connect-devices.md#iot-connect-device-endpoint-table)point de terminaison prend en charge le protocole HTTP ALPN x-amzn-http-ca, mais pas le point de terminaison. [IoT:Jobs](iot-connect-devices.md#iot-connect-device-endpoint-table)  
Sur le port 8443 HTTPS et le port 443 MQTT avec ALPN x-amzn-mqtt-ca, [l'authentification personnalisée](custom-authentication.md) ne peut pas être utilisée.

Les clients se connectent aux terminaux Compte AWS de leurs appareils. Consultez la section [AWS IoT données de l'appareil et points de terminaison de service](iot-connect-devices.md#iot-connect-device-endpoints) pour plus d'informations sur la façon de trouver les points de terminaison de l'appareil de votre compte.

**Note**  
AWS Les SDK ne nécessitent pas l'URL complète. Ils ont uniquement besoin du nom d'hôte du point de terminaison, tel que l'[`pubsub.py`exemple du AWS IoT Device SDK for Python](https://github.com/aws/aws-iot-device-sdk-python-v2/blob/master/samples/pubsub.py#L100) on. GitHub La transmission de l'URL complète comme indiqué dans le tableau suivant peut générer une erreur telle qu'un nom d'hôte non valide.


**Connexion à AWS IoT Core**  

|   Protocole  |  Point de terminaison ou URL  | 
| --- | --- | 
| MQTT | `{{iot-endpoint}}` | 
| MQTT via WSS | `wss://{{iot-endpoint}}/mqtt` | 
| HTTPS | `https://{{iot-endpoint}}/topics` | 

## Choix d'un protocole d'application pour la communication de votre appareil
<a name="protocol-selection"></a>

Pour la plupart des communications entre appareils IoT via les points de terminaison de l'appareil, vous devez utiliser les protocoles Secure MQTT ou MQTT over WebSocket Secure (WSS) ; toutefois, les points de terminaison des appareils prennent également en charge le protocole HTTPS.

Le tableau suivant compare l' AWS IoT Core utilisation des deux protocoles de haut niveau (MQTT et HTTPS) pour la communication entre appareils.


**AWS IoT protocoles de périphérique (MQTT et HTTPS) côte à côte**  

|  Fonctionnalité  |  [MQTT](mqtt.md)  |  [HTTPS](http.md)  | 
| --- | --- | --- | 
| Publish/Subscribe soutien | Publication et d'abonnement | Publier uniquement | 
| Prise en charge de SDK | [AWS Les SDK des appareils prennent en charge les](iot-connect-devices.md#iot-connect-device-sdks) protocoles MQTT et WSS | Pas de prise en charge du SDK, mais vous pouvez utiliser des méthodes spécifiques à la langue pour effectuer des requêtes HTTPS | 
| Prise en charge de la qualité de service | [QoS MQTT niveaux 0 et 1](mqtt.md#mqtt-qos) | La QoS est prise en charge en transmettant un paramètre de chaîne de requête ?qos=qos dont la valeur peut être 0 ou 1. Vous pouvez ajouter cette chaîne de requête pour publier un message avec la valeur de QoS souhaitée. | 
| Les messages de réception peuvent-ils être manqués lorsque l'appareil était hors ligne | Oui | Non | 
| Soutien sur le terrain `clientId` | Oui | Non | 
| Détection de déconnexion de l'appareil | Oui | Non | 
| Communications sécurisées | Oui. Consultez [Protocols, port mappings, and authentication (Protocoles, mappages de ports et authentification)](#protocol-mapping) | Oui. Consultez [Protocols, port mappings, and authentication (Protocoles, mappages de ports et authentification)](#protocol-mapping) | 
| Définitions de rubriques | Application définie | Application définie | 
| Format des données des messages | Application définie | Application définie | 
| Surcharge de protocole | Inférieur | Supérieur | 
| Consommation d’énergie | Inférieur | Supérieur | 

## Choix d'un type d'authentification pour les communications avec votre appareil
<a name="connection-protocol-auth-mode"></a>

Vous pouvez configurer le type d'authentification pour votre point de terminaison IoT à l'aide de points de terminaison configurables. Vous pouvez également utiliser la configuration par défaut et déterminer comment vos appareils s'authentifient à l'aide du protocole d'application, du port et de la combinaison d'extensions TLS ALPN. Le type d'authentification que vous choisissez détermine la manière dont vos appareils s'authentifieront lors de la connexion. AWS IoT Core Il existe cinq types d'authentification : 

**X.509 certificat**

Authentifiez les appareils à l'aide de [certificats X.509 clients](https://docs.aws.amazon.com//iot/latest/developerguide/x509-client-certs.html), qui AWS IoT Core valident l'authentification de l'appareil. Ce type d'authentification fonctionne avec les protocoles Secure MQTT (MQTT over TLS) et HTTPS.

**X.509 certificat avec autorisateur personnalisé**

Authentifiez les appareils à l'aide de [certificats X.509 clients](https://docs.aws.amazon.com//iot/latest/developerguide/x509-client-certs.html) et effectuez des actions d'authentification supplémentaires à l'aide d'un [autorisateur personnalisé](https://docs.aws.amazon.com//iot/latest/developerguide/config-custom-auth.html), qui recevra les informations relatives aux certificats X.509 clients. Ce type d'authentification fonctionne avec les protocoles Secure MQTT (MQTT over TLS) et HTTPS. Ce type d'authentification n'est possible qu'à l'aide de points de terminaison configurables dotés d'une authentification X.509 personnalisée. Il n'existe pas d'option ALPN.

**AWS Version 4 de la signature (SigV4)**

Authentifiez les appareils à l'aide de Cognito ou de votre service principal, en soutenant la fédération sociale et d'entreprise. Ce type d'authentification fonctionne avec les protocoles MQTT over WebSocket Secure (WSS) et HTTPS.

**Autorisateur personnalisé**

Authentifiez les appareils en configurant une fonction Lambda pour traiter les informations d'authentification personnalisées envoyées à. AWS IoT Core Ce type d'authentification fonctionne avec les protocoles Secure MQTT (MQTT over TLS), HTTPS et MQTT over WebSocket Secure (WSS).

**Par défaut**

Authentifiez les appareils en fonction de l'extension ALPN (Port and/or Application Layer Protocol Negotiation) utilisée par les appareils. Certaines options d'authentification supplémentaires ne sont pas prises en charge. Pour de plus amples informations, veuillez consulter [Protocols, port mappings, and authentication (Protocoles, mappages de ports et authentification)](#protocol-mapping).

Le tableau ci-dessous présente toutes les combinaisons de types d'authentification et de protocoles d'application prises en charge.


**Combinaisons prises en charge de types d'authentification et de protocoles d'application**  

| Type d’authentification | MQTT sécurisé (MQTT sur TLS) | MQTT sur WebSocket Secure (WSS) | HTTPS | Par défaut | 
| --- | --- | --- | --- | --- | 
| X.509 certificat | ✓ |  | ✓ |  | 
| X.509 certificat avec autorisateur personnalisé | ✓ |  | ✓ |  | 
| AWS Version 4 de la signature (SigV4) |  | ✓ | ✓ |  | 
| Autorisateur personnalisé | ✓ | ✓ | ✓ |  | 
| Par défaut |  |  |  | ✓ | 

## Limites de durée de connexion
<a name="connection-duration"></a>

Il n'est pas garanti que les connexions HTTPS durent plus longtemps que le temps nécessaire pour recevoir et répondre aux demandes.

La durée de connexion MQTT dépend de la fonctionnalité d'authentification que vous utilisez. Le tableau suivant répertorie la durée maximale de connexion dans des conditions idéales pour chaque fonctionnalité.


**Durée de connexion MQTT par fonction d'authentification**  

|  Fonctionnalité  |  Durée maximum \*  | 
| --- | --- | 
| X.509 certificat client | 1 à 2 semaines | 
| Authentification personnalisée | 1 à 2 semaines | 
| Signature Version 4 | Jusqu'à 24 heures | 

\* Non garanti

Avec X.509 les certificats et l'authentification personnalisée, la durée de connexion n'a pas de limite stricte, mais elle peut être aussi courte que quelques minutes. Ces erreurs peuvent se produire pour diverses raisons. La liste suivante contient certaines des raisons les plus courantes.
+ Wi-Fi interruptions de disponibilité
+ Interruptions de connexion du fournisseur de services Internet (FSI)
+ Correctifs de service
+ Déploiements de services
+ Mise à l'échelle automatique du service
+ Service hôte non disponible
+ Problèmes et mises à jour de l'équilibreur de charge
+ Client-side erreurs

Vos appareils doivent mettre en œuvre des stratégies pour détecter les déconnexions et les reconnexions. Pour plus d'informations sur les événements de déconnexion et des conseils sur la façon de les gérer, consultez [Connect/Disconnect événements](life-cycle-events.md#connect-disconnect) à[Événements du cycle de vie](life-cycle-events.md).