الأحد، فبراير 14، 2010

كيف تنشىءشهادة SSL شخصية خاصة بك


غالباً في أي سيرفر، الأدمن يحتاج يجهز ويركب شهادة SSL لزيادة أمان خدمة معينة تشتغل على السيرفر الخاص به، إما لتشفير الموقع WWW أو لزيادة مستوى أمان خادم FTP الخاص به، وغيرها من الخوادم.

لوحات التحكم الخاصة بالسيرفرات تقدم لك خدمة إنشاء شهادات SSL، هذه هي الطريقة :
1- تعريف بـ SSL، وتبيان ما هو وما فائدته:
SSL هو اختصار لعبارة Secure Socket Layer -طبقة الاتصال الآمن-، و أهم وظائف هذه الطبقة:
أ- توثيق المصدر:
تستطيع أن تعدها مثل التوقيع أو الختم الشخصي، كل شخص له توقيع\ختم خاص فيه يثبت إنه هو نفسه، وليس شخص أخر منتحل شخصيته.
ب- التشفير:
تشفير البيانات الواردة والصادرة من وإلى السيرفر لمنع التنصص عليها وسرقتها.
لكن السؤال، كيف تعمل؟
السؤال هذا سوف يجيب عليه وبشكل مفصل مركز التميز الرقمي، من خلال المقال” SSL, Secure Socket Layer“، وأيضاً مدونة فهد الدريبي، “كيف يعمل التشفير في الانترنت SSL؟“.
2- إنشاء شهادة SSL شخصية غير معتمدة.
2.1 توضيح معنى “غير معتمدة”:
غير معتمدة، أي أن الشهادة ليست مقدمة من إحدى الجهات المعتمدة والمرخص لها تقديم شهادات SSL، مثل شركة Thawte وشركة VeriSign وغيرهم من الشركات.
وعدم الاعتماد سوف يظهر لك أثره في حالة تركيبك لهذه الشهادة مثلاً على خادم الويب WWW، وهو أنه في حالة تصفح الموقع الخاص بك، سوف تظهر رسالة للمستخدم المتصفح لموقعك بأن الشهادة غير معتمدة وموثقة من جهة مرخصة، واحتمال أن يكون هذا الموقع مزور أو تم التلاعب به. مثل هذه الرسالة:

وتستطيع أن تطلع على الشركات المعتمدة لتقديم خدمة توثيق شهادات SSL المدعومة في متصفح فايرفوكس من خلال هذا الرابط : http://www.mozilla.org/projects/security/certs/included/Included Certificate List.
2.2 البدء بإنشاء الشهادة:
2.2.1 إنشاء المفتاح الخاص.
المفتاح الخاص هو ملف يحتوي على بيانات مشفرة بخوارزمية RSA، هذه البيانات يتم إنشائها عشوائياً لبدء إنشاء الشهادة.

openssl genrsa -out ssl.key 2048
openssl: برنامج openssl
genrsa: خيار إنشاء المفتاح بخوارزمية RSA.
-out ssl.key: خيار حفظ المفتاح الخاص بالاسم ssl.key
2048: طول المفتاح بالبت، ويفضل وضعه 2048 أو أكثر لتفادي الكسر في حالة السرقة.
بعد تنفيذك للأمر، سيتم إنشاء المفتاح الخاص بك ويحفظ بالاسم ssl.key.

2.2.2 إنشاء Certificate Signing Request -طلب توقيع شهادة-:
في المرحلة ما قبل الأخيرة، وبعد ما تم إنشاء المفتاح الخاص، الآن ننشئ ملف Certificate Signing Request ويختصر له بـ CSR، وهو ملف يحتوي على معلومات الشهادة المراد إنشائها، يحتوي على اسم الدومين، المالك، الدولة و الإيميل وغيرها من التفاصيل، وتتم بالطريقة التالية:
openssl req -new -key ssl.key -out ssl.csr
req: من كلمة request طلب.
-new: خيار طلب إنشاء طلب توقيع شهادة جديد.
ssl.key: المفتاح الخاص بالشهادة.
-out ssl.csr: خيار حفظ طلب توقيع الشهادة في ملف اسمه ssl.csr.
بعد تنفيذك للأمر، سوف يظهر لك طلب تسجيل الشهادة، بالشكل التالي:
Country Name (2 letter code) [GB]:1
State or Province Name (full name) [Berkshire]:2
Locality Name (eg, city) [Newbury]:3
Organization Name (eg, company) [My Company Ltd]:4
Organizational Unit Name (eg, section) []:5
Common Name (eg, your name or your server's hostname) []:6
Email Address []:7
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:8
An optional company name []:9
1- رمز مكون من حرفين، وهو يرمز للدولة التابعة لمالك الموقع، على سبيل المثال سوف نستخدم الرمز eg للدلالة على أن الموقع مصري.
2- اسم المنطقة\المقاطعة، سوف نكتب القاهره cairo
3- المدينة، نكتب cairo
4- اسم الشركة المالكة للموقع
5- اسم القسم المدير للموقع
6- اسم الموقع الذي تريد أن تسجل الشهادة باسمه
7- أيميل صاحب الموقع.
الخيارات التالية إضافية، ممكن ان ندعها فارغة.
8- لوضع كلمة مرور على طلب توقيع الشهادة، وهو مفيد في حالة سرقة ملف الطلب، لن يتمكن من استخدامه إلا بوجود كلمة المرور.
9- اسم إضافي للشركة.
بعد إدخالك للبيانات بالأعلى، راح يتم إنشاء طلب الشهادة.
2.2.3 إنشاء الشهادة:
فقط أمر واحد لإنشاء الشهادة، وهو كالتالي:
openssl x509 -req -days 365 -in ssl.csr -signkey ssl.key -out ssl.crt
openssl: برنامج إنشاء الشهادات والتعامل مع ssl.
x509: إنشاء شهادة بمعيار x509.http://en.wikipedia.org/wiki/X.509
-req: خيار طلب الشهادة، من كلمة request.
-days: مدة صلاحية الشهادة بالأيام، وكما هو موضح بالأعلى الشهادة ستكون صالحة لمدة سنة ثم تنتهي.
-in ssl.csr: إنشاء الشهادة بناء على المعلومات الموجودة في ملف طلب توقيع الشهادة ssl.csr
-signkey: ملف المفتاح الخاص بالشهادة.
-out: خيار حفظ الشهادة بالاسم ssl.crt.
انتهينا! مبروك عليك شهادة SSL الخاصة بك.
3- إنشاء شهادة SSL معتمدة:
لأجل تكون شهادة SSL الخاصة فيك معتمدة في المتصفحات، وتتفادى الرسائل التحذيرية التي تواجه المستخدم عند الدخول إلى موقعك، تحتاج إن توقعها من جهة معتمدة لتوقيع شهادات SSL، مثل شركة Thawte http://www.thawte.com/وشركة VeriSign http://www.verisign.com/ وغيرهم من الشركات.
ترسل لهم ملف طلب توقيع الشهادة CSR، وبعد دفع التكاليف، سوف يرسلون لك الشهادة بعد مدة , والمدة تختلف من شركة لشركة أخرى.
نقاط مهمة:
1- في حالة سرقة الشهادة، السارق يستطيع استخدامه بكل سهولة في الخادم الخاص به. لذلك تحتاج تشفيرها بواسطة http://httpd.apache.org/docs/2.0/ssl/ssl_intro.htmlDES.
2- في حالة التشفير بواسطة DES، كلما أردت أعادة تشغيل خادم الويب، تحتاج إدخال كلمة المرور الخاص بتشفير DES. تستطيع تفادي هذه المشكلة بدمج المفتاح مع الشهادة لينتج ملف من نوع http://en.wikipedia.org/wiki/Privacy_Enhanced_MailPEM
3- تأكد من وجود برنامج openssl في الخادم.