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

غالباً في أي سيرفر، الأدمن يحتاج يجهز ويركب شهادة 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، وهو أنه في حالة تصفح الموقع الخاص بك، راح تظهر رسالة للمستخدم المتصفح لموقعك بأن الشهادة غير معتمدة وموثقة من جهة مرخصة، وأحتمال أن يكون هذا الموقع مزور أو تم التلاعب به. مثل هذة الرسالة:

متصفح الفايرفوكس وشهادة SSL غير موثقة

FireFox 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 في الخادم.

10 ردود في 'إنشاء والتعامل مع شهادات SSL'

تابع التعليقات بإستخدام RSS

  1. هل هي خاصة بسيرفرات لينكس ؟

    ولا ينفع على سيرفرات الويندوز ؟

  2. @يزن على،
    مو لينكس فقط، برضوا يونكس نفس الفكرة تنطبق عليه.
    أما ويندوز، تستطيع تنشئ الشهادت إما بإستخدام OpenSSL:
    http://www.openssl.org/related/binaries.html
    أو بواسطة ويندوز سيفر بنفسه:
    http://support.microsoft.com/kb/299875

    لكن، إذا كان سؤالك “هل الشهادات هذي راح تركب على ويندوز سيرفر؟”.
    فجوابي بيكون -إفتراضياً- نعم.

  3. hammad Alzaabi ,

    بكل حق كنت ابحث عن مقاله كهذه شكراً لك
    تم اضافتها للمفضله

  4. ابعاد الحياة ,

    السلام عليكم …

    شرح وافي اخوي جريس …

    مع اني ما عندي خبره بهذي الاشياء بس اعجبني الشرح المفصل …

    مشكور على ما قدمت …

    جزاك الله الجنه …

    و بنتظار جديدك …

  5. محمد ,

    انا شتريت شهادة RapidSSL® من GeoTrust

    بس ما عرفت اركبها و الدعم الفني لهم ما يرد

    ممكن تشرح لي الطريقة

    جزاك الله خير

  6. @hammad Alzaabi,
    شكراً لك، أتمنى إني أفدتك.
    @ابعاد الحياة ,
    جزاك الله خير أختي أبعاد على تشجعيك الدائم، وأعتذر لك وللمتابعين تأخرنا و -كثرة وعودنا- بطرح دروس أنظمة لينكس للمبتدائين.

    @محمد,
    تركيبها سهل، وتستطيع تركبها عن طريق cPanel بما إنك ذكرت إنك تستخدمها، شوف الطريقة هذي:
    http://bit.ly/2TeUQk
    وإذا كنت تحتاج عن طريق ال shell، راح أتكلم عنها إن شاء الله في تدوينة قادمة.

  7. مشكور اخوي جريس..
    بالنسبة للدمج من أجل تفادي السؤال عن كلمة المرور والذي ينتج عنه ملف PEM..ألا يشكل خطورة من ناحية سرقته

  8. @عبدالله,
    كلامك صحيح، لكن لما تتم عملية السرقة، راح يستطيع يسرق المفتاح والشهادة.
    لأجل كذا، من الأفضل إنك تشفرها بالـ DES، لأن لو تمت السرقة، ما راح يستطيع إستخدام الشهادة إلا بوجود الباسوورد الخاص بها.

  9. رائع اخي الفاضل شرح مهم ومفيد

    سهلت الموضوع علي

    جزاك الله الف الف خير

:: Trackbacks/Pingbacks ::

  1. Pingback by Tweets that mention إنشاء والتعامل مع شهادات SSL | RJP | مدونة الرووت جريس -- Topsy.com - on October 12th, 2009 at 14:46