"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > لماذا أتلقى خطأ مصافحة TLS بعد ترقية قاعدة بيانات Azure SQL الخاصة بي إلى الإصدار 12؟

لماذا أتلقى خطأ مصافحة TLS بعد ترقية قاعدة بيانات Azure SQL الخاصة بي إلى الإصدار 12؟

تم النشر بتاريخ 2024-12-21
تصفح:934

Why am I getting a TLS Handshake error after upgrading my Azure SQL Database to v12?

خطأ مصافحة TLS لقاعدة بيانات Azure SQL بعد ترقية الإصدار 12

قد تواجه خطأ مصافحة TLS بعد ترقية مثيل قاعدة بيانات Azure SQL إلى الإصدار 12 . يحدث هذا الخطأ عندما لا تتطابق الشهادة المقدمة من الخادم مع اسم المضيف المحدد في سلسلة اتصال العميل.

تفاصيل الخطأ

تشير رسالة الخطأ عادةً إلى أن الشهادة صالحة لاسم مضيف غير الاسم المستخدم في اتصال العميل. على سبيل المثال:

TLS Handshake failed: x509: certificate is valid for
tr12.northcentralus1-a.worker.database.windows.net,
*.tr12.northcentralus1-a.worker.database.windows.net, not [server-name].database.windows.net

الحل

لحل هذه المشكلة المشكلة، قم بتحديث سلسلة اتصال العميل لتشمل ما يلي المعلمات:

  • TrustServerCertificate=True: تخبر هذه المعلمة العميل أن يثق في شهادة الخادم، حتى لو لم تتطابق مع اسم المضيف.
  • hostNameInCertificate=*.database.windows.net: تحدد هذه المعلمة اسم المضيف الذي يجب أن يكون موجودًا في الخادم الشهادة.

سلسلة الاتصال المحدثة

يجب أن تبدو سلسلة الاتصال المحدثة كما يلي:

الخادم = [اسم الخادم]. data.windows.net;Port=1433;Database=[dbname];User المعرف=[المستخدم];كلمة المرور=[pass];Trusted_Connection=False;Encrypt=True;الاتصال Timeout=30;TrustServerCertificate=True;hostNameInCertificate=*.database.windows.net;
Server=[server-name].database.windows.net;Port=1433;Database=[dbname];User
ID=[user];Password=[pass];Trusted_Connection=False;Encrypt=True;Connection
Timeout=30;TrustServerCertificate=True;hostNameInCertificate=*.database.windows.net;

شرح

في الإصدارات السابقة من قاعدة بيانات Azure SQL، كانت شهادة الخادم متطابقة دائمًا اسم المضيف المحدد في سلسلة اتصال العميل. ومع ذلك، في الإصدار 12، لم يعد هذا مضمونًا. من خلال ضبط TrustServerCertificate على True وتحديد اسم المضيف الصحيح في hostNameInCertificate، يمكنك توجيه العميل لقبول الشهادة وتأسيس الاتصال بشكل صحيح.

ملاحظة:

على الرغم من أن تقترح بوابة Azure تعيين TrustServerCertificate على False، وقد يؤدي ذلك إلى أخطاء مصافحة TLS في بعض الحالات. إذا واجهت هذه الأخطاء، فيجب أن يؤدي تعيين TrustServerCertificate إلى True وإضافة hostNameInCertificate إلى سلسلة الاتصال إلى حل المشكلة.

أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3