ProHoster > بلوق > إدارة > المصادقة الثنائية على الموقع باستخدام رمز USB. الآن أيضًا لنظام التشغيل Linux
المصادقة الثنائية على الموقع باستخدام رمز USB. الآن أيضًا لنظام التشغيل Linux
В إحدى مقالاتنا السابقة تحدثنا عن أهمية المصادقة الثنائية على بوابات الشركات. في المرة الأخيرة، أوضحنا كيفية إعداد المصادقة الآمنة في خادم الويب IIS.
في التعليقات، طُلب منا كتابة تعليمات لخوادم الويب الأكثر شيوعًا لنظام التشغيل Linux - nginx وApache.
لقد سألت - كتبنا.
ماذا تحتاج لتبدأ؟
أي توزيعة لينكس حديثة. لقد قمت بإجراء اختبار الإعداد على MX Linux 18.2_x64. هذا بالطبع ليس توزيع خادم، لكن من غير المرجح أن يكون هناك أي اختلافات بالنسبة لديبيان. بالنسبة للتوزيعات الأخرى، قد تختلف المسارات إلى مكتبات التكوين قليلاً.
رمز مميز. نواصل استخدام النموذج Rutoken EDS PKIوهو مثالي من حيث خصائص السرعة للاستخدام في الشركات.
للعمل مع رمز مميز في Linux، تحتاج إلى تثبيت الحزم التالية:
libccid libpcsclite1 pcscd pcsc-tools openc
إصدار الشهادات
اعتمدنا في المقالات السابقة على أنه سيتم إصدار شهادات الخادم والعميل باستخدام Microsoft CA. ولكن نظرًا لأننا نقوم بإعداد كل شيء في Linux، فسنخبرك أيضًا عن طريقة بديلة لإصدار هذه الشهادات - دون مغادرة Linux.
سوف نستخدم XCA كـ CA (https://hohnstaedt.de/xca/) ، وهو متاح في أي توزيعة Linux حديثة. يمكن تنفيذ جميع الإجراءات التي سنقوم بتنفيذها في XCA في وضع سطر الأوامر باستخدام الأدوات المساعدة OpenSSL وpkcs11-tool، ولكن لمزيد من البساطة والوضوح، لن نقدمها في هذه المقالة.
الشروع في العمل
تثبيت:
$ apt-get install xca
ونركض:
$ xca
قمنا بإنشاء قاعدة البيانات الخاصة بنا لـ CA - /root/CA.xdb
نوصي بتخزين قاعدة بيانات المرجع المصدق في مجلد يمكن للمسؤول فقط الوصول إليه. يعد هذا أمرًا مهمًا لحماية المفاتيح الخاصة للشهادات الجذرية، والتي تُستخدم لتوقيع جميع الشهادات الأخرى.
إنشاء مفاتيح وشهادة CA الجذر
تعتمد البنية التحتية للمفتاح العام (PKI) على نظام هرمي. الشيء الرئيسي في هذا النظام هو المرجع المصدق الجذري أو المرجع المصدق الجذري. يجب إنشاء شهادتها أولاً.
نقوم بإنشاء مفتاح خاص RSA-2048 لـ CA. للقيام بذلك، في علامة التبويب مفاتيح خاصة يدفع مفتاح جديد واختر النوع المناسب.
قم بتعيين اسم لزوج المفاتيح الجديد. لقد أسميته مفتاح CA.
نقوم بإصدار شهادة CA نفسها باستخدام زوج المفاتيح الذي تم إنشاؤه. للقيام بذلك، انتقل إلى علامة التبويب الشهادات ودفع شهادة جديدة.
تأكد من الاختيار SHA-256لأن استخدام SHA-1 لم يعد من الممكن اعتباره آمنًا.
تأكد من الاختيار كقالب [افتراضي] كاليفورنيا. لا تنسى أن تضغط على تطبيق جميعوإلا فلن يتم تطبيق القالب.
في علامة التبويب الموضوع اختر زوج المفاتيح الخاص بنا. هناك يمكنك ملء جميع الحقول الرئيسية للشهادة.
إنشاء المفاتيح وشهادة خادم https
وبطريقة مماثلة، قمنا بإنشاء مفتاح خاص RSA-2048 للخادم، أسميته Server Key.
عند إنشاء شهادة، نختار أن شهادة الخادم يجب أن تكون موقعة بشهادة CA.
لا تنسى أن تختار SHA-256.
نختار كقالب [افتراضي] HTTPS_server. انقر فوق تطبيق جميع.
ثم على علامة التبويب الموضوع حدد مفتاحنا واملأ الحقول المطلوبة.
إنشاء مفاتيح وشهادة للمستخدم
سيتم تخزين المفتاح الخاص للمستخدم على الرمز المميز الخاص بنا. للعمل معها، تحتاج إلى تثبيت مكتبة PKCS#11 من موقعنا. للتوزيعات الشعبية، نقوم بتوزيع الحزم الجاهزة الموجودة هنا - https://www.rutoken.ru/support/download/pkcs/. لدينا أيضًا تجميعات لـarm64، وarmv7el، وarmv7hf، وe2k، وmipso32el، والتي يمكن تنزيلها من SDK الخاص بنا - https://www.rutoken.ru/developers/sdk/. بالإضافة إلى تجميعات Linux، هناك أيضًا تجميعات لنظام التشغيل macOS وfreebsd وandroid.
إضافة موفر PKCS#11 جديد إلى XCA. للقيام بذلك، انتقل إلى القائمة مزيد من الخيارات إلى علامة التبويب مزود PKCS#11.
نضغط أضف وحدد المسار إلى مكتبة PKCS#11. في حالتي هو usrliblibrtpkcs11ecp.so.
نختار مفتاح RSA-2048 لـ Rutoken EDS PKI كنوع المفتاح. لقد اتصلت بمفتاح العميل الرئيسي هذا.
أدخل رمز PIN. ونحن ننتظر الانتهاء من إنشاء الأجهزة لزوج المفاتيح
نقوم بإنشاء شهادة للمستخدم عن طريق القياس مع شهادة الخادم. هذه المرة نختار القالب [افتراضي] HTTPS_client ولا تنس النقر تطبيق جميع.
في علامة التبويب الموضوع أدخل معلومات عن المستخدم. نجيب بالإيجاب على طلب حفظ الشهادة للرمز المميز.
ونتيجة لذلك، على علامة التبويب الشهادات في XCA يجب أن تحصل على شيء مثل هذا.
يعد هذا الحد الأدنى من المفاتيح والشهادات كافيًا لبدء إعداد الخوادم نفسها.
للتكوين، نحتاج إلى تصدير شهادة CA وشهادة الخادم والمفتاح الخاص للخادم.
للقيام بذلك، حدد الإدخال المطلوب في علامة التبويب المقابلة في XCA وانقر فوق تصدير.
إنجن إكس
لن أكتب كيفية تثبيت وتشغيل خادم Nginx - هناك مقالات كافية حول هذا الموضوع على الإنترنت، ناهيك عن الوثائق الرسمية. دعنا ننتقل مباشرة إلى إعداد HTTPS والمصادقة الثنائية باستخدام رمز مميز.
ssl_verify_client - يحدد ضرورة التحقق من سلسلة الثقة الخاصة بالشهادة.
ssl_verify_عمق - يحدد عمق البحث لشهادة الجذر الموثوق بها في السلسلة. نظرًا لأن شهادة العميل الخاصة بنا تم توقيعها على الفور على شهادة الجذر، فسيتم تعيين العمق على 1. إذا تم توقيع شهادة المستخدم على مرجع مصدق وسيط، فيجب تحديد 2 في هذه المعلمة، وهكذا.
ssl_client_certificate - يحدد المسار إلى شهادة الجذر الموثوق بها، والتي يتم استخدامها عند التحقق من الثقة في شهادة المستخدم.
ssl_certificate/ssl_certificate_key - حدد المسار إلى شهادة الخادم/المفتاح الخاص.
لا تنس تشغيل nginx -t للتأكد من عدم وجود أخطاء إملائية في التكوين، وأن جميع الملفات في المكان الصحيح، وما إلى ذلك.
دعنا نحاول تسجيل الدخول بدون رمز مميز أولاً. نحصل على هذه الصورة:
نحن نذهب الي حول: تفضيلات # الخصوصية، ونذهب إلى الأجهزة الأمنية…
نضغط حمللإضافة برنامج تشغيل جهاز PKCS#11 جديد وتحديد المسار إلى librtpkcs11ecp.so.
للتأكد من أن الشهادة مرئية، يمكنك الذهاب إلى شهادة مدير. سيُطلب منك إدخال رقم التعريف الشخصي (PIN) الخاص بك. بعد الإدخال الصحيح، يمكنك التحقق مما هو موجود في علامة التبويب شهاداتك ظهرت شهادتنا من الرمز المميز.
الآن دعنا نذهب مع الرمز المميز. يطالبك Firefox بتحديد الشهادة التي سيتم تحديدها للخادم. اختر شهادتنا.
ربح!
يتم الإعداد مرة واحدة، وكما ترون في نافذة طلب الشهادة، يمكننا حفظ اختيارنا. بعد ذلك، في كل مرة نقوم فيها بتسجيل الدخول إلى البوابة، سنحتاج فقط إلى إدخال رمز مميز وإدخال رمز PIN الخاص بالمستخدم الذي تم تحديده أثناء التنسيق. بعد هذه المصادقة، يعرف الخادم بالفعل المستخدم الذي قام بتسجيل الدخول ولم يعد بإمكانك إنشاء أي نوافذ إضافية للتحقق، ولكن يمكنك السماح للمستخدم بالدخول إلى حسابه الشخصي على الفور.
أباتشي
تمامًا كما هو الحال مع nginx، لا ينبغي أن يواجه أي شخص أي مشكلة في تثبيت Apache. إذا كنت لا تعرف كيفية تثبيت خادم الويب هذا، فما عليك سوى استخدام الوثائق الرسمية.
ونبدأ في إعداد HTTPS والمصادقة الثنائية:
تحتاج أولاً إلى تفعيل mod_ssl:
$ a2enmod ssl
ثم قم بتمكين إعدادات HTTPS الافتراضية للموقع:
$ a2ensite default-ssl
نقوم الآن بتحرير ملف التكوين: /etc/Apache2/sites-enabled/default-ssl.conf:
SSLEngine on
SSLProtocol all -SSLv2
SSLCertificateFile /etc/apache2/sites-enabled/Server.crt
SSLCertificateKeyFile /etc/apache2/sites-enabled/ServerKey.pem
SSLCACertificateFile /etc/apache2/sites-enabled/CA.crt
SSLVerifyClient require
SSLVerifyDepth 10
كما ترون، فإن أسماء المعلمات تتطابق عمليا مع أسماء المعلمات في nginx، لذلك لن أشرحها. مرة أخرى، أي شخص مهتم بالتفاصيل مرحب به في الوثائق.
الآن نقوم بإعادة تشغيل الخادم الخاص بنا:
$ service apache2 reload
$ service apache2 restart
كما ترون، فإن إعداد المصادقة الثنائية على أي خادم ويب، سواء في نظام التشغيل Windows أو Linux، يستغرق ساعة واحدة كحد أقصى. ويستغرق إعداد المتصفحات حوالي 5 دقائق. يعتقد العديد من الأشخاص أن إعداد المصادقة الثنائية والعمل بها أمر صعب وغير واضح. آمل أن يفضح مقالتنا هذه الأسطورة، على الأقل قليلا.
يمكن للمستخدمين المسجلين فقط المشاركة في الاستطلاع. تسجيل الدخول، من فضلك.
هل تحتاج إلى تعليمات لإعداد TLS بشهادات وفقًا لـ GOST 34.10-2012:
نعم، TLS-GOST ضروري جدًا
لا، الضبط باستخدام خوارزميات GOST ليس أمرًا مثيرًا للاهتمام