سؤال

أريد أن أفعل ما يفعله myopenid - بمجرد تسجيل الدخول، يمكنك النقر فوق الزر الذي يولد لك شهادة SSL؛يقوم المتصفح بعد ذلك بتنزيل هذه الشهادة وتخزينها.عندما تعود لاحقًا إلى yourid.myopenid.com، يمكن لمتصفحك استخدام شهادته المخزنة للمصادقة، لذلك لن تحتاج أبدًا إلى كلمة مرور.

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

مجموعتي هي Rails on Apache باستخدام Passenger، لكنني لست دقيقًا جدًا.

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

المحلول

ويُشار إليها عادةً بالشهادات من جانب العميل.

لم أستخدمها فعليًا ولكن يمكن العثور على نسخة معدلة من المصادقة المريحة هنا هنا يبدو أن ما الخاص بك بعد.

لقد وجدت هذا عبر دكتور.مشاركة نيك

نصائح أخرى

يعتمد على الخادم، ولكن الحل الأبسط الذي أعرفه هو استخدام Apache:

FakeBasicAuth

"عند تمكين هذا الخيار، تتم ترجمة الاسم المميز للموضوع (DN) لشهادة العميل X509 إلى اسم مستخدم تخويل HTTP الأساسي.وهذا يعني أنه يمكن استخدام أساليب مصادقة Apache القياسية للتحكم في الوصول.اسم المستخدم هو مجرد موضوع شهادة X509 الخاصة بالعميل (يمكن تحديده عن طريق تشغيل أمر OpenSSL x509 الخاص بـ OpenSSL:openssl x509 -noout -subject -في الشهادة.crt).لاحظ أنه لم يتم الحصول على كلمة المرور من المستخدم..."

لست متأكدًا من القضبان، ولكن يجب أن يكون متغير البيئة REMOTE_USER المعتاد قابلاً للوصول بطريقة ما.

إذا كنت ترغب في إنشاء شهادات، فأنت بحاجة إلى جعل العميل ينشئ زوج مفاتيح، ويرسل لك المفتاح العام على الأقل.يمكنك القيام بذلك في Firefox عبر استدعاء Javascript crypto.generateCRMFRequest.أعتقد أن هناك طرقًا خاصة بالمتصفح متاحة في المتصفحات الأخرى أيضًا.لكن عليك أولاً معرفة كيفية إصدار شهادة بمجرد حصولك على المفتاح العام.

يمكنك كتابة شيء ما على الخادم باستخدام OpenSSL، ولكنه يحتوي على دعم مدمج لممثلي خدمات العملاء، وليس تنسيق CRMF الذي سيرسله لك Firefox.لذلك ستحتاج إلى كتابة بعض التعليمات البرمجية لتحويل CRMF إلى CSR، الأمر الذي سيتطلب نوعًا من قدرة معالجة DER... أنا فقط أخدش السطح هنا - إن تشغيل CA، حتى بالنسبة لتطبيق لعبة، ليس بالأمر التافه.

تتداخل حلول الدخول الموحد (SSO) مثل حلول OpenId وPKI، وهناك أناقة في PKI.لكن الشيطان يكمن في التفاصيل، وهناك أسباب وجيهة وراء استمرار هذا النهج لفترة طويلة ولكنه لم ينطلق إلا في التطبيقات الحكومية والعسكرية.

إذا كنت مهتمًا بمتابعة ذلك، تابع ببعض الأسئلة الخاصة بالنظام الأساسي الذي قد ترغب في تطوير خدمة CA الخاصة بك عليه.

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

يمكنك أيضًا إنشاء شهادات عميل SSL من جانب الخادم باستخدام OpenSSL في Ruby (انظر هذا ف).(سيعمل هذا في أي متصفح بدون تعليمات برمجية خاصة بالمتصفح، ولكن خادمك سيكون قد أنشأ المفتاح الخاص للعميل، وهو ليس مثاليًا لعشاق العملات المشفرة.)

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

لقد كنت أعمل على حل لهذه المشكلة.أردت أن أفعل الشيء نفسه وأعلم أن الكثير من مالكي مواقع الويب الآخرين يريدون هذه الميزة، مع أو بدون مزود طرف ثالث.

لقد قمت بإنشاء إعداد الخادم الضروري ومكون إضافي لمتصفح فايرفوكس للتعامل مع المصادقة المستندة إلى الشهادة.انتقل إلى mypassfree.com للحصول على البرنامج المساعد المجاني لمتصفح فايرفوكس.أرسل لي بريدًا إلكترونيًا (الرابط الموجود في تلك الصفحة) لإعداد الخادم لأنني لم أقم بتعبئته بعد باستخدام أداة تثبيت رائعة.

إعداد الخادم هو Apache2 + OpenSSL + Perl (ولكن يمكنك إعادة كتابة نصوص Perl النصية بأي لغة)

جوناثان

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