دعم 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 للخادم
أثناء تأكيد اتصال TLS، يقدم DPS شهادات خادم بمفتاح RSA لتوصيل العملاء. تستخدم جميع مثيلات DPS في سحابة Azure العالمية شهادة TLS الصادرة عن شهادة DigiCert Global Root G2.
نوصي أيضا بإضافة شهادات المرجع المصدق الجذر ل Microsoft RSA 2017 إلى أجهزتك لمنع الاضطرابات في حالة إيقاف DigiCert Global Root G2 بشكل غير متوقع. على الرغم من أن عمليات ترحيل المرجع المصدق الجذري نادرة، فمن أجل المرونة في مشهد الأمان الحديث، يجب إعداد سيناريو IoT الخاص بك للحدث غير المحتمل الذي يتعرض فيه المرجع المصدق الجذري للخطر أو أن ترحيل المرجع المصدق الجذري في حالات الطوارئ ضروري.
نوصي بشدة بأن تثق جميع الأجهزة في المراجع المصدقة الجذرية التالية:
- DigiCert Global G2 root CA
- Microsoft RSA root CA 2017
للحصول على ارتباطات لتنزيل هذه الشهادات، راجع تفاصيل مرجع شهادات Azure.
شهادة الثقة في SDKs
تقوم SDKs لجهاز Azure IoT بتوصيل الأجهزة بخدمات Azure IoT ومصادقتها. تدير حزم SDK المختلفة الشهادات بطرق مختلفة اعتمادا على اللغة والإصدار، ولكن تعتمد معظمها على مخزن الشهادات الموثوق به للجهاز بدلا من تثبيت الشهادات مباشرة في قاعدة التعليمات البرمجية. يوفر هذا النهج المرونة والمرونة للتعامل مع التغييرات المستقبلية في الشهادات الجذر.
يلخص الجدول التالي إصدارات SDK التي تدعم مخزن الشهادات الموثوق به:
SDK لجهاز Azure IoT | الإصدارات المدعومة |
---|---|
C | جميع الإصدارات المدعومة حاليا |
C# | جميع الإصدارات المدعومة حاليا |
Java | الإصدار 2.x.x والإصدارات الأحدث |
Node.js | جميع الإصدارات المدعومة حاليا |
Python | جميع الإصدارات المدعومة حاليا |
تثبيت الشهادة
لا ينصح بتثبيت الشهادات وتصفيتها لشهادات خادم TLS (المعروفة أيضا باسم الشهادات الطرفية) والشهادات المتوسطة المقترنة بنقاط نهاية DPS حيث تقوم Microsoft بشكل متكرر بطرح هذه الشهادات مع إشعار ضئيل أو بدون إشعار. إذا كان يجب عليك تثبيت الشهادات الجذر فقط.
استخدام 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 أو أحـدث | الارتباط |
Node.js | الإصـدار 1.12.2 أو أحـدث | الارتباط |
استخدام TLS 1.2 مع IoT Hub
يمكن تكوين IoT Hub لاستخدام TLS 1.2 عند الاتصال بالأجهزة. لمزيد من المعلومات، راجع فرض بروتوكول أمان طبقة النقل ل IoT Hub.
استخدام TLS 1.2 مع IoT Edge
يمكن تكوين أجهزة IoT Edge لاستخدام TLS 1.2 عند الاتصال ب IoT Hub وDPS. لمزيد من المعلومات، راجع صفحة وثائق IoT Edge.