1 05 2014
تسجيل الدخول عن طريق شهادات التشفير certificate-based authentication في سيرفرات الأباتشي
أقوم الأن بأعداد تطبيق ويب يخص عملي , يحتوي التطبيق على معلومات حساسة جداً لذا طُلب مني بناء نظام يحمي البيانات الحساسة و يسمح بدخول الأشخاص المخولين فقط للتطبيق.
قمت بالبداية بأجراء قائمة بيضاء White list تسمح لبعض عنواين الـ IP المخولة فقط لدخول التطبيق, و لكن يوجد طريقة اقوى من ذلك.
الفكرة أن سيرفر الـ Apache يسمع بما يسمى certificate-based authentication و التي هي عبارة عن شهادة تشفير عامة و خاصة, تزرع الشهادة في متصفح المستخدم عندها فأن الاشخاص الذين يمتلكون ذات الـ IP address المخول لهم بدخول التطبيق لن يستطيعوا الدخول مالم يمتلكوا شهادة التشفير على متصفحهم الشخصي.
يدعم سيرفر الـ Apache ميزة التحقق من المستخدمين عن طريق الـ SSL لذا فان عملية تبادل البيانات مابين المستخدم و السيرفر ستكون مشفرة ايضاً.
يتم تفعيل الميزة بواسطة إضافة المفتاح و الشهادة بداخل مجلد أعدادات الاباتشي, و بالذات بداخل مجلد شهادات الـ SSL.
و من ثم إضافة الأسطر التالية الى ملف apache config file or httpd.conf ليتم تفعيل الميزة.
SSLEngine on
SSLCipherSuite
ALL:!ADH:!EXPORT56:RC4+RSA:
+HIGH:+MEDIUM:+LOW:+SSLv2:
+EXP:+eNULL
SSLCertificateFile conf/ssl/
myserver.crt
SSLCertificateKeyFile conf/ssl/
myserver.key
في هذه الحالة فأن سيرفر الاباتشي سيقوم بتفعيل المنفذ 443 و استقبال الأتصالات عبره, و لكن لن يسمح لأحد بالدخول مالم يمتلك الشهادة المخصصة للتشفير.
لإضافة عدة مستخدمين ( عدة شهادات ) قم بإضافة الأسطر التالية الى ملف اعدادات الاباتشي httpd.conf
SSLVerifyClient require
SSLVerifyDepth 1
SSLCACertificateFile conf/ssl/myserver.crt
في هذه الحالة, لن يسمح لأي مستخدم بالدخول ماعدا المستخدمين الذين تم توقيع شهاداتهم بواسطة السيرفر الخاص بك.
لأنشاء الشهادات للمتسخدمين , قم بتنفيذ الأوامر التالية:
openssl genrsa -des3 -out username.key 1024
openssl req -new -key username.key -out username.csr
openssl x509 -req -in username.csr -out username.crt -sha1
-CA myserver.crt -CAkey myserver.key
-CAcreateserial -days 365
openssl pkcs12-export -in username.crt -inkey username.key
-name “$USER Cert” -out username.p12
openssl pkcs12 -in username.p12 -clcerts -nokeys -info
في مرحلة التصدير Export سيتم طلب كلمة سر التصدير Export password هي مرحلة ضرورية بالأضافة لملف username.p12 , من اجل تركيب الشهادة على متصفح المستخدم.
السطر الأخير يظهر لك تفاصيل الشهادة.
و من ثم ستقوم بإرسال الشهادة للمستخدم و الذي بدوره سيقوم بتركيبها على المتصفح, او بأمكانك كمدير للنظام تركيب الشهادة على متصفحات المستخدمين يدوياً مما سيمنعهم من سحب الشهادة و تركيبها على حاسوب اخر, في سبيل زيادة الأمان.
المصادر
1- Apache website httpd.apache.org
2- Add certificate-based authentication to LAMP server http://www.tuxradar.com/answers/368
برنامج الغيمة لأرشفة صفحات الفيس بوك و قنوات اليوتيوب كيف يمكن لمايكروسوفت تشغيل لينكس بداخل نظام تشغيلها الويندوز؟
استخراج الشهادة