في
أحد مقالاتنا السابقة ، تحدثنا عن أهمية المصادقة ثنائية العامل على بوابات الشركات التابعة للشركة. آخر مرة ، أظهرنا كيفية تكوين المصادقة الآمنة في خادم الويب IIS.
في التعليقات ، طُلب منا كتابة تعليمات لخوادم الويب الأكثر شيوعًا لنظامي Linux - nginx و Apache.
لقد طلبت - كتبنا.
ماذا تحتاج لتبدأ؟
- أي توزيع لينكس الحديثة. أجريت إعداد اختبار على MX Linux 18.2_x64. هذا بالتأكيد ليس توزيعًا للخادم ، ولكن لا توجد أي اختلافات في دبيان. بالنسبة إلى التوزيعات الأخرى ، قد تختلف المسارات إلى المكتبات / التكوينات قليلاً.
- رمزية. نستمر في استخدام نموذج PKI Rutoken EDS ، والذي يعتبر مثاليًا للأداء عالي السرعة لتطبيقات الشركات.
- للعمل مع الرمز المميز على Linux ، تحتاج إلى تثبيت الحزم التالية:
libccid libpcsclite1 pcscd pcsc-tools opensc
كتابة الشهادة
في المقالات السابقة ، اعتمدنا على حقيقة أن شهادات الخادم والعميل ستصدر باستخدام Microsoft CA. ولكن نظرًا لأننا نقوم بتكوين كل شيء في Linux ، فسنتحدث في الوقت نفسه عن طريقة بديلة لإصدار هذه الشهادات - دون مغادرة Linux.
سوف نستخدم XCA بمثابة مرجع مصدق (
https://hohnstaedt.de/xca/ ) ، والذي يتوفر في أي توزيع Linux حديث. يمكن أيضًا تنفيذ جميع الإجراءات التي سننفذها في XCA في وضع سطر الأوامر باستخدام الأدوات المساعدة OpenSSL و pkcs11 ، ولكن من أجل البساطة والوضوح ، لن نقدمها في هذه المقالة.
الابتداء
- تعيين:
$ apt-get install xca
- وتشغيل:
$ xca
- نحن ننشئ قاعدة بياناتنا الخاصة بـ CA - /root/CA.xdb
نوصي بتخزين قاعدة بيانات "المرجع المصدق" في مجلد حيث يمكن للمسؤول فقط الوصول. هذا مهم لحماية المفاتيح الخاصة لشهادات الجذر ، والتي تستخدم لتوقيع جميع الشهادات الأخرى.
إنشاء مفاتيح وشهادة المرجع المصدق الجذر
تعتمد البنية الأساسية للمفتاح العام (PKI) على نظام هرمي. المركزية لهذا النظام هو المرجع المصدق الجذر أو المرجع المصدق الجذر. يجب أن يتم إنشاء شهادته أولاً.
- نقوم بإنشاء المفتاح الخاص RSA-2048 لـ 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. في حالتي ، \ usr \ lib \ librtpkcs11ecp.so.
- نحن بحاجة إلى رمز مميز مهيأ Rutoken EDS PKI. قم بتنزيل الأداة المساعدة rtAdmin - https://dev.rutoken.ru/pages/viewpage.action؟pageId=7995615
- نقوم بها
$ rtAdmin -f -q -z /usr/lib/librtpkcs11ecp.so -u <PIN- >
- كنوع المفتاح نختار - مفتاح RSA-2048 على PKI Rutoken EDS. لقد سميت هذا المفتاح Client Key.
- أدخل رمز PIN. ونحن في انتظار الانتهاء من إنشاء الأجهزة من زوج المفاتيح
- نقوم بإنشاء الشهادة للمستخدم عن طريق القياس مع شهادة الخادم. حدد هذه المرة القالب [الافتراضي] HTTPS_client ولا تنس النقر على تطبيق الكل .
- في علامة تبويب الموضوع ، أدخل معلومات المستخدم. نرد بالإيجاب على طلب حفظ شهادة الرمز المميز.
نتيجة لذلك ، في علامة التبويب
شهادات في XCA ، يجب أن تحصل على شيء مثل هذا.
مجموعة الحد الأدنى من المفاتيح والشهادات كافية لبدء إعداد الخوادم مباشرةً.
للتهيئة ، نحتاج إلى تصدير شهادة المرجع المصدق (CA) وشهادة الخادم والمفتاح الخاص بالخادم.
للقيام بذلك ، حدد الإدخال المطلوب في علامة التبويب المناسبة في XCA وانقر فوق
تصدير .
إنجن إكس
كيفية تثبيت خادم nginx وتشغيله ، لن أكتب - فهناك مقالات كافية على الإنترنت حول هذا الموضوع ، ناهيك عن الوثائق الرسمية. دعنا ننكب على إعداد HTTPS ومصادقة رمزية ثنائية العامل.
أضف الأسطر التالية إلى قسم الخادم في nginx.conf:
server { listen 443 ssl; ssl_verify_depth 1; ssl_certificate /etc/nginx/Server.crt; ssl_certificate_key /etc/nginx/ServerKey.pem; ssl_client_certificate /etc/nginx/CA.crt; ssl_verify_client on; }
يمكن العثور هنا على وصف تفصيلي لجميع المعلمات المتعلقة بتهيئة ssl في nginx -
https://nginx.org/en/docs/http/ngx_http_ssl_module.html#ssl_client_certificateسوف أصف بإيجاز فقط تلك التي طلبتها بنفسي:
- ssl_verify_client - يشير إلى أن سلسلة ثقة الشهادة تحتاج إلى التحقق منها.
- ssl_verify_depth - لتحديد عمق البحث عن شهادة الجذر الموثوق بها في السلسلة. نظرًا لأن شهادة العميل موقعة فورًا على شهادة الجذر ، يتم تعيين العمق على 1. إذا كانت شهادة المستخدم موقعة على مرجع مصدق وسيط ، فيجب تحديد 2 في هذه المعلمة ، وهكذا.
- ssl_client_certificate - لتحديد المسار إلى شهادة الجذر الموثوق بها ، والتي يتم استخدامها للتحقق من الثقة في شهادة المستخدم.
- ssl_certificate / ssl_certificate_key - تشير إلى المسار إلى شهادة الخادم / المفتاح الخاص.
لا تنس تشغيل nginx -t للتحقق من عدم وجود أخطاء مطبعية في التكوين ، وجميع الملفات موجودة عند الضرورة وما إلى ذلك.
وفي الواقع كل شيء! كما ترون ، فإن الإعداد بسيط للغاية.
فحص العمل في فايرفوكس
نظرًا لأننا نفعل كل شيء بشكل كامل على نظام Linux ، فإننا نفترض أن مستخدمينا يعملون أيضًا على Linux (إذا كان لديهم Windows ،
فراجع الإرشادات الخاصة بإعداد المتصفحات في المقالة السابقة .
- نبدأ فايرفوكس.
- دعنا نحاول تسجيل الدخول بدون رمز مميز في البداية. نحصل على الصورة التالية:
- انتقل إلى : تفضيلات # privacy ، وانتقل إلى أجهزة الأمان ...
- انقر على تحميل لإضافة برنامج تشغيل الجهاز PKCS # 11 الجديد وتحديد المسار إلى librtpkcs11ecp.so.
- للتحقق من أن الشهادة مرئية ، يمكنك الانتقال إلى مدير الشهادات . تتم مطالبتك برمز PIN. بعد الإدخال الصحيح ، يمكنك التحقق من ظهور شهادة لدينا في علامة التبويب شهاداتك.
- الآن نذهب مع الرمز. يقترح Firefox اختيار شهادة يتم تحديدها على الخادم. اختيار شهادة لدينا.
- PROFIT!
يتم الإعداد مرة واحدة ، وكما ترون في نافذة طلب الشهادة ، يمكننا حفظ خيارنا. بعد ذلك ، في كل مرة تدخل فيها البوابة ، نحتاج فقط إلى إدراج رمز مميز وإدخال رمز 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 دقائق. يعتقد الكثير من الناس أن الإعداد والعمل باستخدام مصادقة ثنائية أمر صعب وغير مفهوم. آمل أن يكون مقالتنا على الأقل قليلاً ، ولكن الكشف عن هذه الأسطورة.