Prise en charge de TLS (Transport Layer Security) dans IoT Hub
IoT Hub utilise le protocole TLS (Transport Layer Security) pour sécuriser les connexions provenant d’appareils et de services IoT.
Remarque
Azure IoT Hub met fin à la prise en charge de TLS 1.0 et 1.1 conformément à l’annonce du service étendu Azure pour TLS 1.0 et 1.1 le 31 août 2025.
C’est pourquoi il est essentiel de tester et de valider correctement que tous vos appareils et services IoT sont compatibles avec le protocole TLS 1.2 et les chiffrements recommandés au préalable. Il est vivement recommandé d’utiliser la fonctionnalité d’application TLS minimale comme mécanisme de test et de conformité
Pour connaître la version de TLS que vos appareils IoT Hub sont en cours d’exécution, reportez-vous à guide de fin de support TLS 1.0 et 1.1.
Prise en charge du protocole Mutual TLS
L’authentification TLS mutuelle garantit que le client authentifie le certificat de serveur (IoT Hub) et le serveur (IoT Hub) authentifie le client à l’aide certificat client X.509 ou du certificat client X.509. IoT Hub effectue une autorisation une fois l’ authentification terminée.
Pour les protocoles AMQP (Advanced Message Queuing Protocol) et MQTT (Message Queuing Telemetry Transport), IoT Hub demande un certificat client dans la négociation TLS initiale. Si un certificat est fourni, IoT Hub authentifie le certificat client, et le client authentifie le certificat IoT Hub. Ce processus est appelé authentification TLS mutuelle. Chaque fois qu’IoT Hub reçoit un paquet de connexion MQTT ou qu’un lien AMQP s’ouvre, IoT Hub effectue l’autorisation pour le client demandeur et détermine si le client a besoin d’une authentification X.509. Si l’authentification TLS mutuelle a été effectuée et que le client est autorisé à se connecter en tant qu’appareil, il est autorisé. Toutefois, si le client nécessite une authentification X.509 et que l’authentification du client n’a pas été effectuée pendant la négociation TLS, IoT Hub rejette la connexion.
Pour le protocole HTTP, lorsque le client effectue sa première demande, IoT Hub vérifie si le client nécessite l’authentification X.509 et si l’authentification du client a été terminée, IoT Hub effectue l’autorisation. Si l’authentification du client n’a pas été terminée, IoT Hub rejette la connexion
Après l’établissement de la liaison TLS, IoT Hub peut authentifier un appareil à l’aide d’une clé symétrique ou d’un certificat X.509. Pour l’authentification basée sur les certificats, IoT Hub valide le certificat par rapport à l’empreinte numérique ou à l’autorité de certification que vous fournissez. Pour plus d’informations, consultez Certificats X.509 pris en charge.
Certificat TLS du serveur d’IoT Hub
Au cours de l’établissement d’une liaison TLS, IoT Hub présente des certificats de serveur à clé RSA pour la connexion des clients. Tous les IoT Hubs dans le cloud Azure global utilisent le certificat TLS émis par DigiCert Global Root G2.
Nous vous recommandons vivement d’approuver les trois autorités de certification racines suivantes :
- Autorité de certification racine DigiCert Global G2
- Autorité de certification racine Microsoft RSA 2017
Pour obtenir des liens vers le téléchargement de ces certificats, consultez détails de l’autorité de certification Azure.
Les migrations d’autorité de certification racine sont rares. Vous devez toujours préparer votre solution IoT pour l’événement peu probable où une autorité de certification racine est compromise et qu’une migration d’autorité de certification racine d’urgence est nécessaire.
Suites de chiffrement
Pour respecter la stratégie de sécurité Azure pour une connexion sécurisée, IoT Hub prend en charge les suites de chiffrement RSA et ECDSA suivantes pour TLS 1.2 :
- TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256
- TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384
- TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256
- TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384
- TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
- TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384
- TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256
- TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384
Les suites de chiffrement suivantes sont actuellement autorisées dans IoT Hub. Toutefois, ces suites de chiffrement ne sont plus recommandées par les instructions de sécurité Azure.
Suites de chiffrement | Prise en charge de la version TLS |
---|---|
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256 | TLS 1.2 |
TLS_DHE_RSA_WITH_AES_256_GCM_SHA384 | TLS 1.2 |
TLS_DHE_RSA_WITH_AES_128_GCM_SHA256 | TLS 1.2 |
TLS_RSA_WITH_AES_256_GCM_SHA384 | TLS 1.2 |
TLS_RSA_WITH_AES_128_GCM_SHA256 | TLS 1.2 |
TLS_RSA_WITH_AES_256_CBC_SHA256 | TLS 1.2 |
TLS_RSA_WITH_AES_128_CBC_SHA256 | TLS 1.2 |
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA | TLS 1.0/1.1/1.2 |
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA | TLS 1.0/1.1/1.2 |
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA | TLS 1.0/1.1/1.2 |
TLS_RSA_WITH_3DES_EDE_CBC_SHA | TLS 1.0/1.1/1.2 |
TLS_RSA_WITH_3DES_EDE_CBC_SHA | TLS 1.0/1.1/1.2 |
TLS_RSA_WITH_AES_128_CBC_SHA | TLS 1.0/1.1/1.2 |
TLS_RSA_WITH_AES_256_CBC_SHA | TLS 1.0/1.1/1.2 |
Un client peut suggérer une liste de suites de chiffrement plus élevées à utiliser pendant ClientHello
. Toutefois, certaines d’entre elles peuvent ne pas être prises en charge par IoT Hub (par exemple, ECDHE-ECDSA-AES256-GCM-SHA384
). Dans ce cas, IoT Hub tente de suivre la préférence du client, mais finit par négocier seulement la suite de chiffrement avec ServerHello
.
Appliquer IoT Hub pour utiliser TLS 1.2 et des suites de chiffrement fortes
Pour vous assurer que vos appareils IoT sont conformes à TLS 1.2 et aux suites de chiffrement fortes, vous pouvez imposer la conformité à l'aide de la fonction d'application minimale de TLS dans Azure IoT Hub.
Actuellement, cette fonctionnalité est disponible uniquement dans les régions suivantes et lors de la création d’IoT Hub (d’autres régions Azure seront prises en charge en 2025) :
- USA Est
- États-Unis - partie centrale méridionale
- USA Ouest 2
- Gouvernement des États-Unis – Arizona
- US Gov Virginie (La prise en charge de TLS 1.0/1.1 n’est pas disponible dans cette région. L’application de TLS 1.2 doit être activée, sinon la création d’un hub IoT échoue.)
Pour activer l’application des suites de chiffrement TLS 1.2 et fortes dans le portail Azure :
Démarrer avec l'assistant de création d'IoT Hub dans Azure Portal
Choisissez une région dans la liste ci-dessus.
Sous Gestion -> Avancé -> Protocole TLS -> Version TLS minimale, sélectionnez 1.2. Ce paramètre s’affiche uniquement pour les hubs IoT créés dans une région prise en charge.
Cliquez sur Créer
Connecter vos appareils IoT à ce hub IoT
Afin d’utiliser le modèle ARM pour la création, approvisionnez un nouveau hub IoT dans l’une des régions prises en charge et définissez la propriété minTlsVersion
sur 1.2
dans la spécification de ressource :
{
"$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"resources": [
{
"type": "Microsoft.Devices/IotHubs",
"apiVersion": "2020-01-01",
"name": "<provide-a-valid-resource-name>",
"location": "<any-of-supported-regions-below>",
"properties": {
"minTlsVersion": "1.2"
},
"sku": {
"name": "<your-hubs-SKU-name>",
"tier": "<your-hubs-SKU-tier>",
"capacity": 1
}
}
]
}
La ressource IoT Hub créée à l’aide de cette configuration refuse les clients d’appareil et de service qui tentent de se connecter à l’aide des versions 1.0 et 1.1 du protocole TLS. De même, la négociation TLS est refusée si le message ClientHello
ne liste aucun des chiffrements recommandés.
Remarque
La propriété minTlsVersion
est en lecture seule et ne peut pas être modifiée une fois que votre ressource IoT Hub est créée. C’est pourquoi il est essentiel de tester et de valider correctement que tous vos appareils et services IoT sont compatibles avec le protocole TLS 1.2 et les chiffrements recommandés au préalable.
Lors des basculements, la propriété minTlsVersion
de votre Hub IoT reste efficace dans la région géo-jumelée après le basculement.
Vérification des versions TLS pour les appareils IoT Hub
Azure IoT Hub peut fournir des journaux de diagnostic pour plusieurs catégories qui peuvent être analysées à l’aide des journaux Azure Monitor. Dans le journal des connexions, vous trouverez la version TLS de vos appareils IoT Hub.
Pour afficher ces journaux, procédez comme suit :
- Accédez à votre IoT Hub dans le Portail Azure.
- Dans le menu des ressources, sous Supervision, sélectionnez paramètres de diagnostic. Vérifiez que les paramètres de diagnostic ont la case « Connexions » cochée.
- Dans le menu de la ressource, sous Surveillance, sélectionnez Journaux d'activité.
- Entrez la requête suivante :
AzureDiagnostics
| where ResourceProvider == "MICROSOFT.DEVICES" and ResourceType == "IOTHUBS"
| where Category == "Connections"
| where OperationName == "deviceConnect"
| extend props_json = parse_json(properties_s)
| project DeviceId = props_json.deviceId, TLSVersion = props_json.tlsVersion
- Voici un exemple de résultats de requête :
- Remarque : la requête de version TLS n’est pas disponible pour les appareils utilisant des connexions HTTPS.
Configuration TLS pour le Kit de développement logiciel (SDK) et IoT Edge
Utilisez les liens ci-dessous pour configurer TLS 1.2 et les chiffrements autorisés dans les Kits de développement logiciel (SDK) clients IoT Hub.
Langue | Versions prenant en charge TLS 1.2 | Documentation |
---|---|---|
C | Balise 2019-12-11 ou ultérieure | Lien |
Python | Version 2.0.0 ou ultérieure | Lien |
C# | Version 1.21.4 ou ultérieure | Lien |
Java | Version 1.19.0 ou ultérieure | Lien |
NodeJS | Version 1.12.2 ou ultérieure | Lien |
Les appareils IoT Edge peuvent être configurés pour utiliser TLS 1.2 lors des communications avec IoT Hub. À cet effet, consultez la page de documentation d’IoT Edge.
Certificat TLS du serveur ECC (Chiffrement à courbe elliptique)
Tout en offrant une sécurité similaire aux certificats RSA, la validation des certificats ECC (avec les suites de chiffrement exclusivement ECC) utilise jusqu’à 40 % moins de calcul, de mémoire et de bande passante. Ces économies sont importantes pour les appareils IoT en raison de leur profil et de leur mémoire plus petits, et pour prendre en charge les cas d’usage dans des environnements où la bande passante est limitée.
Pour utiliser le certificat de serveur ECC d’IoT Hub :
- Vérifiez que tous les appareils approuvent les autorités de certification racines suivantes :
- Autorité de certification racine DigiCert Global G2
- Autorité de certification racine Microsoft RSA 2017
- Configurez votre client pour qu’il inclue uniquement des suites de chiffrement ECDSA et exclue toute suite RSA. Voici les suites de chiffrement prises en charge pour le certificat ECC :
TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256
TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384
TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256
TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384
- Connectez votre client au hub IoT.
Négociation de longueur de fragment maximale TLS
IoT Hub prend également en charge la négociation de longueur maximale des fragments TLS, parfois appelée négociation de la taille de images TLS. Cette fonctionnalité est en version préliminaire publique.
Utilisez cette fonctionnalité pour spécifier la longueur maximale du fragment de texte en clair sur une valeur inférieure à 2^14 octets par défaut. Une fois la négociation terminée, IoT Hub et le client commencent à fragmenter les messages pour s’assurer que tous les fragments sont plus petits que la longueur négociée. Ce comportement est utile pour le calcul ou les appareils ayant une mémoire restreinte. Pour plus d’informations, consultez la spécification officielle de l’extension TLS.
La prise en charge officielle du Kit de développement logiciel (SDK) pour cette fonctionnalité d’évaluation publique n’est pas encore disponible. Pour commencer
- Créez un IoT Hub.
- Quand vous utilisez OpenSSL, appelez SSL_CTX_set_tlsext_max_fragment_length pour spécifier la taille du fragment.
- Connectez votre client au hub IoT.
Épinglage de certificat
L’épinglage de certificats et le filtrage des certificats de serveur TLS et des certificats intermédiaires associés aux points de terminaison IoT Hub est fortement déconseillé, car Microsoft déploie fréquemment ces certificats avec peu ou pas de notification. Si vous devez le faire, épinglez uniquement les certificats racines comme décrit dans ce billet de blog Azure IoT.
Étapes suivantes
- Pour en savoir plus sur la sécurité et le contrôle d’accès d’IoT Hub, consultez Contrôler l’accès à IoT Hub.
- Pour en savoir plus sur l’utilisation du certificat X.509 pour l’authentification des appareils, consultez Authentification des appareils à l’aide de certificats d’autorité de certification X.509.