Prise en charge de TLS dans le service Azure IoT Hub Device Provisioning (DPS)
DPS utilise le protocole TLS (Transport Layer Security) pour sécuriser les connexions provenant d’appareils IoT.
Les versions actuelles du protocole TLS prises en charge par DPS sont les suivantes :
- TLS 1.2
Restreindre les connexions à une version TLS minimale
Vous pouvez configurer vos instances DPS pour autoriser uniquement les connexions clientes d’appareil qui utilisent une version TLS minimale ou supérieure.
Important
Actuellement, DPS prend uniquement en charge TLS 1.2. Il n’est donc pas nécessaire de spécifier la version minimale de TLS lorsque vous créez une instance DPS. Cette fonctionnalité est fournie pour la future expansion.
Pour ce faire, provisionnez une nouvelle ressource DPS et affectez à la propriété minTlsVersion
la valeur 1.2
dans la spécification de ressource DPS de votre modèle Azure Resource Manager. L’exemple de modèle JSON suivant spécifie la propriété minTlsVersion
pour une nouvelle instance DPS.
{
"$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"resources": [
{
"type": "Microsoft.Devices/ProvisioningServices",
"apiVersion": "2020-01-01",
"name": "<provide-a-valid-DPS-resource-name>",
"location": "<any-region>",
"properties": {
"minTlsVersion": "1.2"
},
"sku": {
"name": "S1",
"capacity": 1
},
}
]
}
Vous pouvez déployer ce modèle en exécutant les commandes Azure CLI suivantes :
az deployment group create -g <your resource group name> --template-file template.json
Pour plus d’informations sur la création de ressources DPS avec des modèles Resource Manager, consultez l’article Configurer DPS avec un modèle Azure Resource Manager.
La ressource DPS créée à l’aide de cette configuration refuse les appareils qui tentent de se connecter à l’aide des versions 1.0 et 1.1 du protocole TLS.
Remarque
La propriété minTlsVersion
est en lecture seule et ne peut pas être modifiée une fois votre ressource DPS créée. C’est pourquoi il est essentiel de tester et de valider correctement que tous vos appareils IoT sont compatibles avec le protocole TLS 1.2 et les chiffrements recommandés au préalable.
Remarque
Lors des basculements, la propriété minTlsVersion
de votre DPS reste effective dans la région jumelée géographiquement après le basculement.
Chiffrements recommandés
Les instances DPS appliquent l’utilisation des suites de chiffrement recommandées et héritées suivantes :
Suites de chiffrement TLS 1.2 recommandées |
---|
TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384 TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256 |
Suites de chiffrement héritées
Ces suites de chiffrement sont encore prises en charge par DPS, mais seront bientôt déconseillées. Utilisez les suites de chiffrement recommandées dans la mesure du possible.
Option n° 1 (meilleure sécurité) |
---|
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA_P384 (uses SHA-1) TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA_P256 (uses SHA-1) TLS_RSA_WITH_AES_256_GCM_SHA384 (lack of Perfect Forward Secrecy) TLS_RSA_WITH_AES_128_GCM_SHA256 (lack of Perfect Forward Secrecy) TLS_RSA_WITH_AES_256_CBC_SHA256 (lack of Perfect Forward Secrecy) TLS_RSA_WITH_AES_128_CBC_SHA256 (lack of Perfect Forward Secrecy) TLS_RSA_WITH_AES_256_CBC_SHA (uses SHA-1, lack of Perfect Forward Secrecy) TLS_RSA_WITH_AES_128_CBC_SHA (uses SHA-1, lack of Perfect Forward Secrecy) |
Option n° 2 (meilleur niveau de performance) |
---|
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA_P256 (uses SHA-1) TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA_P384 (uses SHA-1) TLS_RSA_WITH_AES_128_GCM_SHA256 (lack of Perfect Forward Secrecy) TLS_RSA_WITH_AES_256_GCM_SHA384 (lack of Perfect Forward Secrecy) TLS_RSA_WITH_AES_128_CBC_SHA256 (lack of Perfect Forward Secrecy) TLS_RSA_WITH_AES_256_CBC_SHA256 (lack of Perfect Forward Secrecy) TLS_RSA_WITH_AES_128_CBC_SHA (uses SHA-1, lack of Perfect Forward Secrecy) TLS_RSA_WITH_AES_256_CBC_SHA (uses SHA-1, lack of Perfect Forward Secrecy) |
Prise en charge du protocole Mutual TLS
Lorsque les inscriptions DPS sont configurées pour l’authentification X.509, le protocole Mutual TLS (mTLS) est pris en charge par DPS.
Certificat TLS de serveur
Au cours de l’établissement d’une liaison TLS, DPS présente des certificats de serveur à clé RSA pour la connexion des clients. Toutes les instances DPS dans le cloud Azure global utilisent le certificat TLS émis par le certificat DigiCert Global Root G2.
Nous vous recommandons également d’ajouter les certificats Microsoft RSA Root Certificate Authority 2017 à vos appareils pour éviter les interruptions au cas où DigiCert Global Root G2 subit une mise hors service inattendue. Bien que les migrations d’autorité de certification racine soient rares, pour la résilience dans le paysage de sécurité moderne, vous devez préparer votre scénario IoT pour l’événement peu probable qu’une autorité de certification racine est compromise ou qu’une migration d’autorité de certification racine d’urgence est nécessaire.
Nous vous recommandons vivement d’approuver les 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.
Approbation de certificat dans les SDK
Les SDK d’appareil Azure IoT connectent et authentifient des appareils auprès des services Azure IoT. Les différents SDK gèrent les certificats de différentes façons en fonction de la langue et de la version, mais la plupart reposent sur le magasin de certificats approuvé de l’appareil plutôt que d’épingler des certificats directement dans la base de code. Cette approche offre une flexibilité et une résilience pour gérer des modifications futures dans les certificats racines.
Le tableau suivant résume les versions du SDK qui prennent en charge le magasin de certificats approuvé :
Azure IoT device SDK | Versions prises en charge |
---|---|
C | Toutes les versions prises en charge |
C# | Toutes les versions prises en charge |
Java | Versions 2.x et ultérieures |
Node.JS | Toutes les versions prises en charge |
Python | Toutes les versions prises en charge |
Épinglage de certificat
L’épinglage et le filtrage des certificats de serveur TLS (également appelés certificats « feuilles ») et les certificats intermédiaires associés aux points de terminaison DPS sont déconseillés, car Microsoft déploie fréquemment ces certificats avec peu ou sans préavis. Si nécessaire, épinglez uniquement les certificats racines.
Utiliser TLS 1.2 dans les kits de développement logiciel (SDK) IoT
Utilisez les liens ci-dessous pour configurer TLS 1.2 et les chiffrements autorisés dans les Kits de développement logiciel (SDK) clients Azure IoT.
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 |
Utiliser TLS 1.2 avec IoT Hub
Vous pouvez configurer IoT Hub pour utiliser TLS 1.2 durant la communication avec les appareils. Pour plus d’informations, consultez Dépréciation de TLS 1.0 et 1.1 pour IoT Hub.
Utiliser TLS 1.2 avec IoT Edge
Les appareils IoT Edge peuvent être configurés pour utiliser TLS 1.2 lors des communications avec IoT Hub et DPS. Pour plus d’informations, consultez la page de documentation IoT Edge.