دعم بروتوكول أمان طبقة النقل (TLS) فـي IoT Hub
يستخدم IoT Hub بروتوكول أمان طبقة النقل (TLS) لتأمين الاتصالات مـن أجهزة IoT وخدماته.
إشعار
سينهي Azure IoT Hub دعم TLS 1.0 و1.1 وفقا لإعلان خدمة Azure العريضة لإيقاف TLS 1.0 و1.1 في 31 أغسطس 2025.
لذلك من الضروري أن تختبر وتتحقق بشكل صحيح من توافق جميع أجهزة وخدمات IoT مع TLS 1.2 والشفرات الموصى بها مسبقا. يوصى بشدة باستخدام الحد الأدنى من ميزة فرض TLS كآلية للاختبار والتوافق
لمعرفة إصدار TLS الذي تعمل به أجهزة IoT Hub، يرجى الرجوع إلى دليل نهاية الدعم TLS 1.0 و1.1.
دعم TLS المتبادل
تضمن مصادقة TLS المتبادلة مصادقة العميل لشهادة الخادم (IoT Hub) ومصادقة الخادم (IoT Hub) للعميل باستخدام شهادة العميل X.509 أو بصمة الإبهام X.509. يقوم IoT Hub بإجراء التخويل بعد اكتمال المصادقة .
بالنسبة لبروتوكولات Advanced Message Queuing Protocol (AMQP) و Message Queuing Telemetry Transport (MQTT)، يطلب IoT Hub شهادة عميل في تأكيد اتصال TLS الأولي. إذا تم توفير واحد، يقوم IoT Hub بمصادقة شهادة العميل، ويصادق العميل على شهادة IoT Hub. تسمى هذه العملية مصادقة TLS المتبادلة. عندما يتلقى IoT Hub حزمة اتصال MQTT أو يفتح ارتباط AMQP، يقوم IoT Hub بإجراء تخويل للعميل الطالب ويحدد ما إذا كان العميل يتطلب مصادقة X.509. إذا اكتملت مصادقة TLS المتبادلة وتم تفويض العميل للاتصال كجهاز، يسمح بذلك. ومع ذلك، إذا كان العميل يتطلب مصادقة X.509 ولم يتم إكمال مصادقة العميل أثناء تأكيد اتصال TLS، فإن IoT Hub يرفض الاتصال.
بالنسبة لبروتوكول HTTP، عندما يقدم العميل طلبه الأول، يتحقق IoT Hub مما إذا كان العميل يتطلب مصادقة X.509 وإذا اكتملت مصادقة العميل، يقوم IoT Hub بإجراء التخويل. إذا لم تكتمل مصادقة العميل، فإن IoT Hub يرفض الاتصال
بعد تأكيد اتصال TLS ناجح، يمكن لـ IoT Hub مصُادقة جهاز باستخدام مفتاح متماثل أو شهادة X.509. للمصادقة المستندة إلى الشهادة، يتحقق IoT Hub من صحة الشهادة مقابل بصمة الإبهام أو المرجع المصدق (CA) الذي توفره. لمعرفة المزيد، راجع مصادقة الهويات باستخدام شهادات X.509.
شهادة TLS لـخادم IoT Hub
أثناء تأكيد اتصال TLS، يقدم IoT Hub شهادات خادم مفتاح RSA إلى العملاء المُتصلين. تستخدم جميع مراكز IoT في سحابة Azure العالمية شهادة TLS الصادرة عن DigiCert Global Root G2.
نوصي بشدة بأن تثق جميع الأجهزة في المراجع المصدقة الجذرية الثلاثة التالية:
- DigiCert Global G2 root CA
- Microsoft RSA root CA 2017
للحصول على ارتباطات لتنزيل هذه الشهادات، راجع تفاصيل مرجع شهادات Azure.
عمليات ترحيل المرجع المصدق الجذري نادرة. يجب عليك دائما إعداد حل IoT الخاص بك للحدث غير المحتمل الذي يتعرض فيه المرجع المصدق الجذري للخطر وترحيل المرجع المصدق الجذري في حالات الطوارئ ضروري.
مجموعات التشفير
للامتثال لنهج أمان Azure للاتصال الآمن، يدعم IoT Hub مجموعات تشفير RSA وECDSA التالية ل 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
يسمح حاليا بأجنحة التشفير التالية في IoT Hub. ومع ذلك، لم تعد إرشادات أمان Azure توصي باستخدام مجموعات التشفير هذه.
مجموعات التشفير | دعم إصدار 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 |
يُمكن للعميل اقتراح قائمة مجموعات تشفير أعلى لاستخدامها أثناء ClientHello
. ومع ذلك، قد لا يكون بعضها مدعومًا من قبل IoT Hub (على سبيل المثال، ECDHE-ECDSA-AES256-GCM-SHA384
). في هذه الحالة، يحاول IoT Hub اتباع تفضيل العميل، ولكن في النهاية التفاوض على مجموعة التشفير مع ServerHello
.
فرض IoT Hub لاستخدام TLS 1.2 ومجموعات التشفير القوية
لضمان أن أجهزة IoT الخاصة بك هي TLS 1.2 وتوافق مجموعات التشفير القوية، يمكنك فرض التوافق باستخدام الحد الأدنى من ميزة فرض TLS في Azure IoT Hub.
تتوفر هذه الميزة حاليا فقط في المناطق التالية وأثناء إنشاء IoT Hub (سيتم دعم مناطق Azure الأخرى في 2025):
- شرق الولايات المتحدة
- South Central US
- West US 2
- US Gov – أريزونا
- US Gov - فيرجينيا (دعم TLS 1.0/1.1 غير متوفر فـي هذه المنطقة - يجب تمكين إنفاذ TLS 1.2 أو فشل إنشاء مركز IoT)
لتمكين TLS 1.2 وتطبيق مجموعات التشفير القوية في مدخل Microsoft Azure:
التحديق باستخدام معالج إنشاء IoT Hub في مدخل Microsoft Azure
اختر منطقة مـن واحدة في القائمة أعلاه.
ضمن Management -> Advanced -> Transport Layer Security (TLS) -> الـحد الأدنى لإصدار TLS، حدد 1.2. يظهر هذا الإعداد فقط لمركز IoT الذي تم إنشاؤه فـي المنطقة المدعومة.
انقر فوق "Create"
توصيل أجهزة IoT الخاصة بك ب IoT Hub هذا
لاستخدام قالب ARM للإنشاء، قم بتوفير IoT Hub جديد فـي أي من المناطق المدعومة وتعيين minTlsVersion
الخاصية إلى 1.2
في مواصفات المورد:
{
"$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
}
}
]
}
يرفض مورد IoT Hub الذي تم إنشاؤه باستخدام هذا التكوين عملاء الجهاز والخدمة الذين يحاولون الاتصال باستخدام إصدارات TLS 1.0 و1.1. وبالمثل، يتم رفض تأكيد اتصال TLS إذا ClientHello
لم تسرد الرسالة أيا من الشفرات الموصى بها.
إشعار
minTlsVersion
الخاصية للقراءة فقط ولا يمكن تغييرها بمجرد إنشاء مورد IoT Hub. لذلك من الضروري أن تختبر وتتحقق بشكل صحيح من توافق جميع أجهزة وخدمات IoT مع TLS 1.2 والشفرات الموصى بها مسبقا.
عند تجاوز الفشل، minTlsVersion
تظل خاصية IoT Hub فعالة في المنطقة المقترنة جغرافيا بعد تجاوز الفشل.
التحقق من إصدارات TLS لأجهزة IoT Hub
يمكن أن يوفر Azure IoT Hub سجلات تشخيصية لعدة فئات يمكن تحليلها باستخدام سجلات Azure Monitor. في سجل الاتصالات، يمكنك العثور على إصدار TLS لأجهزة IoT Hub.
لعرض هذه السجلات، اتبع الخطوات التالية:
- في مدخل Microsoft Azure، انتقل إلى مركز IoT.
- في قائمة الموارد ضمن Monitoring، حدد Diagnostic settings. تأكد من وضع علامة اختيار "اتصالات" على إعدادات التشخيص.
- في قائمة الموارد ضمن Monitoring، حدد Logs.
- أدخل الاستعلام التالي:
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
- مثال على نتائج الاستعلام يبدو كما يلي:
- ملاحظة: استعلام إصدار TLS غير متوفر للأجهزة التي تستخدم اتصالات HTTPS.
تكوين TLS لـ SDK وIoT Edge
استخدم الارتباطات التالية لتكوين TLS 1.2 والشفرات المسموح بها في SDKs لعميل IoT Hub.
اللغة | الإصدارات التي تَدعم TLS 1.2 | الوثائق |
---|---|---|
C | العلامة 2019-12-11 أو أحدث | الارتباط |
Python | الإصدار 2.0.0 أو أحـدث | الارتباط |
C# | الإصـدار 1.21.4 أو أحـدث | الارتباط |
Java | الإصـدار 1.19.0 أو أحـدث | الارتباط |
Node.js | الإصـدار 1.12.2 أو أحـدث | الارتباط |
يمكن تكوين أجهزة IoT Edge لاستخدام TLS 1.2 عند الاتصال بـ IoT Hub. لهـذا الغرض، استخدم صفحة وثائق IoT Edge.
شهادة TLS لخادم منحنى القطع الناقص (ECC)
أثناء تقديم أمان مشابه لشهادات RSA، يستخدم التحقق من صحة شهادة ECC (مع مجموعات التشفير ECC فقط) ما يصل إلى 40٪ أقل مـن الحوسبة والذاكرة وعرض النطاق الترددي. تعتبر هذه المدخرات مهمة لأجهزة IoT نظرًا لصغر حجمها وذاكرتها، ولدعم حالات الاستخدام في البيئات المحدودة لعرض النطاق الترددي للشبكة.
لاستخدام شهادة خادم ECC ل IoT Hub:
- تأكد من أن جميع الأجهزة تثق في المراجع المصدقة الجذرية التالية:
- DigiCert Global G2 root CA
- Microsoft RSA root CA 2017
-
قم بتكوين العميل الخاص بك لتضمين مجموعات تشفير ECDSA فقطواستبعاد أي مجموعات RSA. هذه هي مجموعات التشفير المدعومة لشهادة 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
- قم بتوصيل عميلك بمركز IoT.
التفاوض على طول الجزء الأقصى ل TLS
يدعم IoT Hub أيضًا التفاوض على طول جزء TLS الأقصى، والذي يعرف أحيانًا باسم التفاوض على حجم إطار TLS. هذه الميزة قيد المعاينة العامة.
استخدم هذه الميزة لتحديد الحد الأقصى لطول جزء النص العادي إلـى قيمة أصغر من 2^14 بايت افتراضي. بمجرد التفاوض، يبدأ IoT Hub والعميل فـي تجزئة الرسائل لضمان أن جميع الأجزاء أصغر من طول التفاوض. هذا السلوك مفيد لحساب الأجهزة المُقيدة أو الذاكرة. لمَعرفة المزيد، راجع مواصفات ملحق TLS الرسمية.
دعم SDK الرسمي لميزة المعاينة العامة هـذه غير متوفر بعد. لبدء
- إنشاء مركز IoT.
- عند استخدام OpenSSL، استدعي SSL_CTX_set_tlsext_max_fragment_length لتحديد حجم الجزء.
- قم بتوصيل عميلك بمركز IoT.
تثبيت الشهادة
لا ينصح بشدة بتثبيت الشهادات وتصفيتها لشهادات خادم TLS والشهادات الوسيطة المرتبطة بنقاط نهاية IoT Hub حيث تقوم Microsoft بشكل متكرر بطرح هذه الشهادات مع إشعار ضئيل أو بدون إشعار. إذا كان يجب عليك تثبيت الشهادات الجذر فقط كما هو موضح في منشور مدونة Azure IoTهذا.
الخطوات التالية
- لمعرفة المزيد حول أمان IoT Hub والتحكم فـي الوصول إليه، راجع التحكم في الوصول إلى IoT Hub.
- لمَعرفة المزيد حول استخدام شهادة X509 لمصادقة الجهاز، راجع مُصادقة الجهاز باستخدام شهادات المرجع المصدق X.509