إنشاء والتعامل مع شهادات SSL

عام 0 geek4arab
Spread the love

غالباً في أي سيرفر، الأدمن يحتاج يجهز ويركب شهادة SSL لزيادة أمان خدمة معينة تشتغل على السيرفر الخاص به، أما لتشفير الموقع WWW أو لزيادة مستوى أمان خادم FTP الخاص به، وغيرها من الخوادم.
لندرة المصادر العربية المتطرقة لهذا الموضوع، وهو كيفية إنشاء شهادة SSL خاصة بك، وشخصية، قررت أفرد له هذة التدوينة.
تدوينتي راح تتكون من المحاور هذي:
1- تعريف بـ SSL، وتبيان ماهو ومافائدته.

2- إنشاء شهادة SSL شخصية غير معتمدة:

2.1 توضيح معنى “غير معتمدة”.

2.2 البدء بإنشاء الشهادة:

2.2.1 إنشاء المفتاح الخاص.

2.2.2 إنشاء Certificate Signing Request -طلب توقيع الشهادة-.

2.2.3 إنشاء الشهادة.

3- إنشاء شهادة SSL معتمدة.

قبل ابدأ، لوحات التحكم الخاصة بالسيرفرات تقدم لك خدمة إنشاء شهادات SSL، التدوينة هذي مخصصة للتعامل مع الشهادات وإنشائها بدون لوحات تحكم، عن طريق الشيل Shell الخاصة بالسيرفر، الطريقة المفضلة لدي :).
1- تعريف بـ SSL، وتبيان ماهو ومافائدته:

SSL هو إختصار لعبارة Secure Socket Layer -طبقة الإتصال الآمن-، و أهم وظائف هذة الطبقة:
أ- توثيق المصدر:

تستطيع تعتبرها مثل التوقيع أو الختم الشخصي، كل شخص له توقيعختم خاص فيه يثبت إنه هو نفسه، وليس شخص أخر منتحل شخصيته.
ب- التشفير:

تشفير البيانات الواردة والصادرة من وإلى السيرفر لمنع التنصص عليها وسرقتها.
لكن السؤال، كيف تعمل؟
السؤال هذا راح يجيب عليه وبشكل مفصل مركز التميز الرقمي، من خلال المقال” SSL, Secure Socket Layer“، وأيضاً مدونة فهد الدريبي، “كيف يعمل التشفير في الانترنت SSL؟“.
2- إنشاء شهادة SSL شخصية غير معتمدة.

2.1 توضيح معنى “غير معتمدة”:

مقصدي بعبارة “غير معتمدة”، أي إن الشهادة ليست مقدمة من أحد الجهات المعتمدة والمرخص لها تقديم شهادات SSL، مثل شركة Thawte وشركة VeriSign وغيرهم من الشركات.
وعدم الأعتماد راح يظهر لك أثره في حالة تركيبك لهذة الشهادة مثلاً على خادم الويب WWW، وهو أنه في حالة تصفح الموقع الخاص بك، راح تظهر رسالة للمستخدم المتصفح لموقعك بأن الشهادة غير معتمدة وموثقة من جهة مرخصة، وأحتمال أن يكون هذا الموقع مزور أو تم التلاعب به. مثل هذة الرسالة:

http://weblog.verwilst.be/wp-content/uploads/2008/03/ff3cert1.pngFireFox Self Signed Certificate

وتستطيع أن تطلع على الشركات المعتمدة لتقديم خدمة توثيق شهادات SSL المدعومة في متصفح فايرفوكس من خلال هذا الرابط 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- رمز مكون من حرفين، وهو يرمز للدولة التابعة لمالك الموقع، على سبيل المثال راح نستخدم الرمز SA لالدلالة على أن الموقع سعودي.
2- اسم المنطقةالمقاطعة، راح نكتب الرياض Riyadh.
3- المدينة، نكتب الرياض Riyadh.
4- اسم الشركة المالكة للموقع، مثلاُ Jerais Company < إن شاءالله :).
5- اسم القسم المدير للموقع، مثلاً قسم تقنية المعلومات IT.
6- اسم الموقع الذي تريد أن تسجل الشهادة باسمه، مثلاً www.jerais.com.
7- إيميل صاحب الموقع.
الخيارات التالية إضافية، ممكن تدعها فارغة.
8- لوضع كلمة مرور على طلب توقيع الشهادة، وهو مفيد في حالة سرقة ملف الطلب، لن يتمكن من إستخدامه إلا بوجود كلمة المرور.
9- اسم إضافي للشركة.
بعد إدخالك للبيانات بالأعلى، راح يتم إنشاء طلب الشهادة.
2.2.3 إنشاء الشهادة:

فقط أمر واحد لإنشاء الشهادة، وهو كالتالي:
openssl x509 -req -days 365 -in ssl.csr -signkey ssl.key -out ssl.crt
openssl: برنامج إنشاء الشهادات والتعامل مع ssl.
x509: إنشاء شهادة بمعيار x509.
-req: خيار طلب الشهادة، من كلمة request.
-days: مدة صلاحية الشهادة بالأيام، وكما هو موضح بالأعلى الشهادة ستكون صالحة لمدة سنة ثم تنتهي.
-in ssl.csr: إنشاء الشهادة بناء على المعلومات الموجودة في ملف طلب توقيع الشهادة ssl.csr
-signkey: ملف المفتاح الخاص بالشهادة.
-out: خيار حفظ الشهادة بالاسم ssl.crt.
إنتهينا! مبروك عليك شهادة SSL الخاصة فيك.
3- إنشاء شهادة SSL معتمدة:

لأجل تكون شهادة SSL الخاصة فيك معتمدة في المتصفحات، وتتفادى الرسائل التحذيرية التي تواجه المستخدم عند الدخول إلى موقعك، تحتاج إن توقعها من جهة معتمدة لتوقيع شهادات SSL، مثل شركة Thawte وشركة VeriSign وغيرهم من الشركات.
ترسل لهم ملف طلب توقيع الشهادة CSR، وبعد دفع التكاليف، سوف يرسلون لك الشهادة بعد مدة تختلف من شركة لشركة.
نقاط مهمة:

1- في حالة سرقة الشهادة، السارق يستطيع إستخدامه بكل سهولة في الخادم الخاص فيه. لذلك تحتاج تشفيرها بواسطة DES.
2- في حالة التشفير بواسطة DES، كلما أردت أعادة تشغيل خادم الويب، تحتاج إدخال كلمة المرور الخاص بتشفير DES. تستطيع تفادي هذة المشكلة بدمج المفتاح مع الشهادة لينتج ملف من نوع PEM.
3- توجد أكثر من طريقة لإنشاء الشهادات، لكن أدرت توضيحها بشكل مفصل لتفهم الفكرة بأدق تفاصيلها للقارئ.
4- راح أتطرق إن شاء الله بتدوينات قادمة عن كيفية الإستفادة من الشهادات هذة في الويبالإيميلFTP.
5- تأكد من وجود برنامج openssl في الخادم.

الكاتب geek4arab

geek4arab

مواضيع متعلقة

التعليقات مغلقة