سؤال

الرغبة في تنفيذ المصادقة من قبل العميل شهادات أنا أواجه بعض القضايا.

أولا بعض الحقائق

الموقع كله باستخدام SSL.أنا باستخدام IIS 6 (على نظام التشغيل Windows Server 2003) و تكوين الموقع قبول شهادات العميل, لا تتطلب منهم.معظم المتصفحات ومع ذلك نفذت بطريقة بحيث أنها سوف يطلب من المستخدم للحصول على شهادة عندما يتم المطلوبة بدقة.لأن هذا التوثيق النموذجي ليس من المفيد حقا.

اقتراحات من بلدي

كانت فكرتي الأولى أن تعيين HttpResponse.Status الملكية ولكنه يتطلب الشخصيات قبل الفضائية الأولى أن يكون عدد صحيح.مفيدة الوضع من أجل الحصول على المتصفح لإرسال شهادة العميل 403.7 Client certificate required لذلك هذا لا يعمل (إلا إذا كنت يمكن الكتابة عليه).

أنا أيضا فكرت في أن مجرد تكوين IIS يتطلب شهادات العميل على مسارات محددة ، ولكن هذا - من cource - يعمل فقط مع الملفات الفعلية وليس مع التوجيه.

ممكن حل هو جعل مجلد معين و يتطلب شهادات العميل وهو الذي أكثر من الإختراق من الحل.إذا كنت ترغب في تجنب هذا إذا كان شخص ما لديه أفضل الاقتراح.

التوضيحات

لقد اختبرت المتصفح استجابة كل من إنترنت إكسبلورر, فايرفوكس و كروم (انا استخدم كروم الأساسي متصفح فايرفوكس الثانوي).أي من المتصفحات يسأل عن شهادة العميل إلا إذا كنت في IIS - تكوين كما هو مطلوب.

رمز حالة HTTP 403.7 يرجع إلى فهم السماح RFC 2616 يعرف سوى وضع الكود كما الأرقام الثلاثة الأولى.كما IIS 6 إرجاع 403.7 عند عميل مطلوب شهادة ظننت إرسال سيكون من القوة IIS في وضع خاص اثار الشرط.

أعتقد أن المشكلة الآن هي كيفية تكوين IIS من أجل تتطلب certficate نظرا المسار الظاهري وليس المادي.

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

المحلول

لا يوجد فرق في CertificateRequest الرسالة المرسلة من قبل الملقم عند الشهادة هو مجرد طلب وليس المطلوبة.الخادم يجعل نفس الطلب في كل الحالات, و ببساطة إنهاء المصافحة عند فشل العميل في تقديم الشهادة المطلوبة.وهكذا ، إذا كان المستعرض الخاص بك ويبدو أن تجاهل "الطلبات" ، ينبغي أن تظهر تجاهل "متطلبات" أيضا.

تحقق من التالي:

  • هو المتصفح تكوين تجاهل جميع طلبات شهادة أبدا إرسال واحدة ؟
  • هو المتصفح الخاص بك تم تكوينه لاستخدام تعطى شهادة دون المطالبة المستخدم ؟ (وبعبارة أخرى ، كيف يمكنك أن تعرف أن المتصفح لن يرسل شهادة؟)
  • هو الخادم الخاص بك في الواقع طلب الشهادة ؟

طريقة الاختبار هذه الحالة الأخيرة هو مع بينسل (متاح أيضا في Cygwin) أداة:

openssl s_client -connect server.y.com:443 -msg

بعد أن يرسل الملقم شهادة الرسالة ، فإنه سيتم إدراج CertificateRequest الطريقة التي غائب إذا لم يكن طلب مصادقة العميل.على s_client إخراج يبدو مثل هذا:

<<< TLS 1.0 Handshake [length 0008], CertificateRequest
    0d 00 00 04 01 01 00 00

لست متأكدا كيف يعمل إذا كان الملقم يستخدم مصادقة العميل فقط على مسارات محددة ، لأن الأولى تعارف SSL كاملة قبل العميل بإرسال طلب HTTP.سيكون من المعقول الملقم طلب جديد المصافحة عند هذه النقطة ، ولكن لم يسبق اختبارها لمعرفة ما خوادم الدعم هذا.

يمكنك وهمية طلب HTTP من خلال s_client من جهة ، دخول:

GET /your/path/here HTTP/1.1[Enter]
Host: server.y.com:443[Enter]
[Enter]

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

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

403.7 ليس رمز حالة HTTP.هو أن بعض Microsoft "احتضان تمديد واطفاء" الحيلة ؟ في أي حال ، فإنه لا يبدو الاتجاه الصحيح لتحقيق هذا النقل طبقة المشكلة وليس تطبيق طبقة المشكلة.

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