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 refusera 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.

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 actuellement encore prises en charge par DPS, mais seront bientôt déconseillées. Utilisez les suites de chiffrement recommandées ci-dessus 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.

É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 fortement déconseillés, car Microsoft déploie fréquemment ces certificats avec peu ou pas de préavis. Si vous devez le faire, épinglez uniquement les certificats racines comme décrit dans ce billet de blog Azure IoT.

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.

Langage 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.