تسجيل الدخول عن طريق شهادات التشفير 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

Share

Leave a Reply

Your email address will not be published. Required fields are marked *