سؤال

أحاول إجراء مكالمة SSL باستخدام HTTPWebRequest وفشلها المستمر في القول إنها لا تستطيع بناء الثقة.لقد أضفت رد اتصال إلى ServicePointManager.ServerCertificateValidationCallback والعودة true يعمل دائما.ومع ذلك، أود أن تكون الأمور أكثر أمانًا من ذلك بقليل.أنظر إلى SslPolicyErrors في طريقة التحقق من الصحة يبدو أنني أحصل على RemoteCertificateNameMismatch خطأ.ما الذي لا يتطابق بشكل صحيح ليسبب هذا النوع من الأخطاء؟

(يحرر:انظر التعليقات في الجواب) يستخدم الموقع الذي أقوم بالوصول إليه HTTPBasic عبر SSL وعنوان URL يشبه v1.api.serviceprovider.com ، مع إصدار شهادة إلى * .serviceprovider.com.

هل كانت مفيدة؟

المحلول

مشاكل الشهادات العامة:

  • شهادة لم يتم إصدارها من قبل موفر شهادات موثوق به (يجب أن تكون ضمن سلسلة الثقة الخاصة بك)
  • انتهت صلاحية الشهادة

يعني هذا الخطأ المحدد عادةً أن الشهادة لم يتم إصدارها للموقع الذي تزوره.أمثلة:

  • الفرق بين "www.yoursite.com" و"yoursite.com" (هما مختلفان؛بعض الأسماء الكبيرة تخطئ في هذا الأمر، وهو ما يزعجني حقًا...)
  • الوصول كعنوان IP بدلاً من الاسم الموجود في الشهادة؛أو الخامس / الخامس
  • موازن التحميل يعيد توجيهك إلى "server1,yoursite.com" ولكنه يمنحك الشهادة من "yoursite.com"
  • يقوم موازن التحميل بتمريرك بصمت إلى "server1"، الذي يصدر شهادات لـ "server1"، وليس الموقع
  • (تحرير انظر التعليقات) شهادة بدل تم إصدارها لمستويات متعددة - على سبيل المثال.تم إصداره إلى *.somesite.org، عندما تضغط على foo.bar.somesite.org

ويمكن التعرف على معظمها بسهولة من خلال الانتقال إلى الموقع وقراءة التحذيرات التي يقدمها لك متصفحك، وفحص الشهادة التي تم إصدارها.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top