دعم TLS في خدمة توفير جهاز Azure IoT Hub (DPS)

يستخدم DPS بروتوكول أمان طبقة النقل (TLS) لتأمين الاتصالات من أجهزة IoT.

إصدارات بروتوكول TLS الحالية المدعومة من قبل DPS هي:

  • TLS 1.2

تقييد الاتصالات بحد أدنى من إصدار TLS

يمكنك تكوين مثيلات DPS للسماح فقط باتصالات عميل الجهاز التي تستخدم الحد الأدنى من إصدار TLS أو أحدث.

هام

حاليا، يدعم DPS TLS 1.2 فقط، لذلك ليست هناك حاجة لتحديد الحد الأدنى من إصدار TLS عند إنشاء مثيل DPS. يتم توفير هذه الميزة للتوسع في المستقبل.

للقيام بذلك، قم بتوفير مورد DPS جديد يقوم بتعيين الخاصية minTlsVersion إلى 1.2 في مواصفات مورد DPS الخاص بقالب Azure Resource Manager. يحدد قالب المثال التالي JSON الخاصية minTlsVersion لمثيل 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
            },
        }     
    ]
}

يمكنك نشر القالب باستخدام أمر Azure CLI التالي.

az deployment group create -g <your resource group name> --template-file template.json

لمزيد من المعلومات حول إنشاء موارد DPS باستخدام قوالب Resource Manager، راجع إعداد DPS باستخدام قالب Azure Resource Manager.

سيرفض مورد DPS الذي تم إنشاؤه باستخدام هذا التكوين الأجهزة التي تحاول الاتصال باستخدام إصدارات TLS 1.0 و1.1.

ملاحظة

minTlsVersion الخاصية للقراءة فقط ولا يمكن تغييرها بمجرد إنشاء مورد DPS الخاص بك. لذلك من الضروري أن تختبر وتتحقق بشكل صحيح من توافق جميع أجهزة IoT مع TLS 1.2 والشفرات الموصى بها مسبقا.

ملاحظة

عند تجاوز الفشل، minTlsVersion ستظل خاصية DPS فعالة في المنطقة المقترنة جغرافيا بعد تجاوز الفشل.

تفرض مثيلات DPS استخدام مجموعات التشفير الموصى بها والأرثية التالية:

مجموعات تشفير TLS 1.2 الموصى بها
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

مجموعات التشفير القديمة

لا تزال مجموعات التشفير هذه مدعومة حاليا من قبل DPS ولكن سيتم إهمالها. استخدم مجموعات التشفير الموصى بها أعلاه إن أمكن.

الخيار رقم 1 (أمان أفضل)
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)
الخيار رقم 2 (أداء أفضل)
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)

دعم TLS المتبادل

عند تكوين تسجيلات DPS لمصادقة X.509، يتم دعم TLS المتبادل (mTLS) من قبل DPS.

تثبيت الشهادة

لا ينصح بشدة بتثبيت الشهادات وتصفيتها لشهادات خادم TLS (المعروفة باسم الشهادات الطرفية) والشهادات المتوسطة المرتبطة بنقاط نهاية DPS حيث تقوم Microsoft بشكل متكرر بطرح هذه الشهادات مع إشعار بسيط أو بدون إشعار. إذا كان يجب عليك تثبيت الشهادات الجذر فقط كما هو موضح في منشور مدونة Azure IoT هذا.

استخدام TLS 1.2 في IoT SDKs

استخدم الارتباطات أدناه لتكوين TLS 1.2 والشفرات المسموح بها في SDKs لعميل Azure IoT.

اللغة الإصدارات التي تَدعم TLS 1.2 ‏‏الوثائق
C العلامة 2019-12-11 أو أحدث الرابط
Python الإصدار 2.0.0 أو أحـدث الرابط
C#‎ الإصـدار 1.21.4 أو أحـدث الرابط
Java الإصـدار 1.19.0 أو أحـدث الرابط
NodeJS الإصـدار 1.12.2 أو أحـدث الرابط

استخدام TLS 1.2 مع IoT Hub

يمكن تكوين IoT Hub لاستخدام TLS 1.2 عند الاتصال بالأجهزة. لمزيد مـن المعلومات، راجع إهمال TLS 1.0 و1.1 لـ IoT Hub.

استخدام TLS 1.2 مع IoT Edge

يمكن تكوين أجهزة IoT Edge لاستخدام TLS 1.2 عند الاتصال ب IoT Hub وDPS. لمزيد من المعلومات، راجع صفحة وثائق IoT Edge.