العودة إلى المدونة

أساسيات OpenSSL: العمل مع المفاتيح الخاصة، وطلبات توقيع الشهادات، وشهادات SSL

أساسيات OpenSSL: العمل مع المفاتيح الخاصة، وطلبات توقيع الشهادات، وشهادات SSL

OpenSSL هي مكتبة تشفير مفتوحة المصدر تتضمن مجموعة متنوعة من الأوامر المستخدمة في TLS Protocol و Public Key Infrastructure. تم إصدار OpenSSL في عام 1998 وهو متاح لأنظمة Windows و Linux و macOS و BSD. سيساعدك أمر OpenSSL في أداء مهام مختلفة بما في ذلك طلب توقيع الشهادة (CSR)، وإنشاء المفاتيح الخاصة، وشهادة SSL.

يعد OpenSSL مهمًا لأنه يضمن التنفيذ السليم لـ SSL. يعد الحصول على SSL بالطريقة الصحيحة أمرًا بالغ الأهمية لأمان موقع الويب الخاص بك. علاوة على ذلك، فإن Google، وهو محرك بحث رئيسي، يعطي الأولوية لمواقع الويب التي تم تطبيق شهادات SSL عليها. قد تصنف بعض المتصفحات مثل Chrome و Firefox موقع الويب الخاص بك على أنه غير آمن إذا لم يكن لديك شهادة SSL مناسبة. وبالتالي، من الأهمية بمكان تقديم حركة مرور موقع الويب الخاص بك عبر بروتوكول HTTPS المشفر.

أولاً وقبل كل شيء

هذا البرنامج التعليمي عبارة عن دليل أسلوب ورقة غش (cheat sheet)، يتضمن بعض أوامر OpenSSL التي قد تستخدمها في السيناريوهات اليومية، ولكن ربما ليس كلها.

يوضح الجزء الأول كل ما تحتاج لمعرفته حول Certificate Signing Requests (CSR). ومع ذلك، إذا كنت معتادًا عليها بالفعل، فيمكنك الانتقال إلى أي قسم آخر ذي صلة بما تحاول تحقيقه. يحتوي كل قسم على مقتطف سطر أوامر لإنجاز ما ينص عليه العنوان الفرعي.

لنبدأ!

القسم 1: فهم طلبات توقيع الشهادات (CSRs)

يعد طلب توقيع الشهادة شرطًا أساسيًا عند الحصول على شهادة SSL من جهة إصدار الشهادات (CA). يتضمن CSR المفتاح العام لزوج المفاتيح وبعض المعلومات الإضافية. تحتاج إلى إدراجها في الشهادة أثناء عملية التوقيع.

أثناء إنشاء CSR، يُطلب منك تقديم معلومات تعريفية تُعرف باسم الاسم المميز (DN). يحتوي DN على حقول ضرورية للشهادة مثل الاسم الشائع (CN)، وهو اسم المجال المؤهل بالكامل (FQDN) الدقيق للمضيف الذي سيستخدم الشهادة. الحقول الأخرى لـ DN مخصصة لمعلومات إضافية مثل البلد، والولاية، واسم المنطقة المحلية، واسم المؤسسة أو العمل إذا كنت تقوم بإنشاء شهادات خاصة بعملك. يمكنك اختيار تخطي المطالبات عن طريق تقديم المعلومات من ملف أو عبر سطر الأوامر.

ألقِ نظرة على مثال لمطالبة معلومات CSR في لقطة الشاشة أدناه:

يمكنك تقديم المعلومات في أمر مكون من سطر واحد لتجنب المطالبات عن طريق إضافة علامة -subj كما هو موضح أدناه، وتقديم المعلومات الخاصة بالحقول:

يأخذ الأمر أعلاه نفس المعلومات المعروضة في مثال كتلة التعليمات البرمجية لمطالبات معلومات CSR.

القسم 2: إنشاء طلبات توقيع الشهادات

في هذا القسم، سنغطي أوامر OpenSSL التي يمكنك استخدامها لإنشاء CSR والمفاتيح الخاصة. تعد طلبات CSR ضرورية لطلب شهادات SSL من جهة إصدار الشهادات (CA).

إنشاء مفتاح خاص وطلب توقيع شهادة

يمكنك استخدام هذه الطريقة إذا كنت تريد أن تقوم جهة إصدار الشهادات بإصدار شهادة SSL لتأمين خادم Apache أو Nginx خادم لخدمة حركة المرور عبر HTTPS، أي HTTP مع TLS. يمكن إرسال طلب توقيع الشهادة (CSR) الذي تم إنشاؤه باستخدام الأمر إلى مرجع مصدق (CA) لطلب شهادة SSL موقعة من مرجع مصدق. يمكنك اتباع أدلتنا التفصيلية حول كيفية إعداد خوادم Apache أو Nginx الخاصة بك على Ubuntu.

أدخل الأمر التالي في الطرفية (terminal) لإنشاء مفتاح خاص بحجم 2048 بت (domain.key) وطلب توقيع شهادة (domain.csr) من الصفر:

أجب عن المطالبات بمعلومات CSR الخاصة بك. اختياريًا، يمكنك إضافة العلامة -subj إلى الأمر لتجنب المطالبات:

تحدد العلامة -newkey rsa:2048 أنه يجب إنشاء المفتاح باستخدام خوارزمية RSA بحجم 2048 بت. وتشير العلامة -nodes إلى عدم وجود تشفير بعبارة مرور للمفتاح الخاص. هناك خيار -new غير مدرج ولكنه ضمني للإشارة إلى أنه يتم إنشاء طلب توقيع شهادة (CSR) جديد.

إنشاء طلب توقيع شهادة من مفتاح خاص موجود

إذا كان لديك مفتاح خاص بالفعل، فيمكنك استخدام هذه الطريقة لإنشاء طلب توقيع شهادة (CSR). ستستخدمه بعد ذلك لطلب شهادة SSL من مرجع مصدق (CA). أدخل الأمر التالي لإنشاء طلب توقيع شهادة جديد (domain.csr) باستخدام مفتاح خاص موجود (domain.key):

أجب عن المطالبات بمعلومات CSR الخاصة بك. اختياريًا، يمكنك إضافة العلامة -subj إلى الأمر لتجنب المطالبات:

تحدد العلامة -key المفتاح الخاص الموجود (domain.key) ليتم استخدامه لإنشاء طلب توقيع شهادة (CSR) جديد. وتشير العلامة -new إلى أنه يتم إنشاء طلب توقيع شهادة (CSR) جديد.

إنشاء طلب توقيع شهادة من شهادة ومفتاح خاص موجودين

إذا كان لديك بالفعل شهادة موجودة ترغب في استخدامها لإنشاء طلب توقيع شهادة (CSR)، فيمكنك استخدام هذه الطريقة. يمكن أن تكون هذه الطريقة مفيدة إذا فقدت أنت أو المرجع المصدق (CA) طلب توقيع الشهادة الأصلي وكنت بحاجة إلى إنشائه باستخدام معلومات CSR التي تم إدخالها مسبقًا دون الحصول على إعادة إدخالها. يستخرج الأمر المعلومات من الشهادة الحالية. أدخل الأمر التالي في الطرفية لإنشاء طلب توقيع شهادة جديد (domain.csr) باستخدام شهادة موجودة (domain.crt) ومفتاح خاص موجود (domain.key):

يشير الخيار -x509toreq إلى أنك تستخدم شهادة X509 لإنشاء طلب توقيع الشهادة (CSR).

القسم 3: إنشاء شهادات SSL

في بعض الحالات، قد ترغب في استخدام شهادة SSL دون عناء الحصول على شهادة موقعة من مرجع مصدق (CA). يوضح هذا القسم كيف يمكنك توقيع شهاداتك الخاصة. إنها صالحة ومجانية. يُشار إلى هذه الشهادات باسم الشهادات الموقعة ذاتيًا، وهي شائعة جدًا.

يتم توقيع الشهادة الموقعة ذاتيًا بمفتاحها الخاص. تعمل كل من الشهادات الموقعة ذاتيًا والموقعة من مرجع مصدق (CA) بشكل جيد لتشفير البيانات وحركة مرور موقع الويب. ومع ذلك، مع الشهادات الموقعة ذاتيًا، عادةً ما يتلقى المستخدمون تحذيرًا في متصفحاتهم يفيد بأن الشهادة غير موثوقة. وبالتالي، يمكنك استخدام الشهادات الموقعة ذاتيًا للمواقع الإلكترونية التي لا تتبادل معلومات حساسة مع المستخدمين، أو على خوادم غير مخصصة للإنتاج الفعلي. أدناه، يمكنك العثور على أوامر OpenSSL التي يمكنك استخدامها لإنشاء شهادات موقعة ذاتيًا.

  • إنشاء شهادة موقعة ذاتيًا

يمكنك استخدام هذه الطريقة لإنشاء شهادة SSL لتأمين خادم Apache أو Nginx الخاص بك. سيضمن ذلك أن تأتي حركة المرور عبر HTTPS، أو HTTP عبر TLS، دون الذهاب إلى جهة إصدار شهادات (CA) لتوقيع الشهادة:

أجب عن المطالبات بمعلومات CSR الخاصة بك. اختياريًا، يمكنك إضافة علامة -subj إلى الأمر لتجنب المطالبات:

الـ -x509 علامة تشير إلى إنشاء شهادة موقعة ذاتيًا. الـ -days 365 يحدد عدد الأيام التي ستكون فيها الشهادة صالحة. في هذه الحالة، هي 365 يومًا. يمكنك أيضًا اختيار عدد أيام مختلف. يقوم الأمر بإنشاء CSR مؤقت للاحتفاظ بالمعلومات التي يجب عليك ربطها بالشهادة.

  • إنشاء شهادة موقعة ذاتيًا من مفتاح خاص موجود

ستساعدك هذه الطريقة في إنشاء شهادة موقعة ذاتيًا من مفتاحك الخاص الموجود بالفعل. أدخل الأمر التالي لإنشاء شهادة موقعة ذاتيًا (domain.crt) باستخدام مفتاح خاص موجود (domain.key):

قدم للمطالبات معلومات CSR الخاصة بك. اختياريًا، يمكنك إضافة علامة -subj إلى الأمر لتجنب المطالبات:

الـ -x509 علامة تشير إلى إنشاء شهادة موقعة ذاتيًا. الـ -days 365 يحدد عدد الأيام التي ستكون فيها الشهادة صالحة. في هذه الحالة هي 365 يومًا. يمكنك أيضًا اختيار عدد أيام مختلف. الـ -new يبدأ مطالبة معلومات CSR.

القسم 4: عرض الشهادات

يتم ترميز الشهادات وملفات CSR وحفظها بامتداد .pem . وهو يرمز إلى Privacy-Enhanced Mail. وهو تنسيق ملف لتخزين وإرسال المفاتيح التشفيرية والشهادات والبيانات الهامة الأخرى. ملفات PEM ليست سهلة القراءة للبشر. في هذا القسم، ستجد الأوامر التي يمكنك استخدامها لعرض الإدخالات من ملفات PEM المشفرة.

  • عرض ملفات CSR

أدخل الأمر التالي لعرض والتحقق من محتويات CSR (domain.csr) على الطرفية الخاصة بك:

على سبيل المثال، قد يخرج الأمر أعلاه شيئًا كهذا:

Viewing CSR files

  • عرض إدخالات الشهادة

أدخل الأمر التالي لعرض محتويات الشهادة (domain.crt):

قد يخرج الأمر أعلاه شيئًا كهذا:

OpenSSL

  • التحقق من أن الشهادة تم توقيعها من قبل جهة إصدار شهادات

للتحقق مما إذا كانت الشهادة (domain.crt) قد تم توقيعها بواسطة شهادة CA معينة (ca.crt)، أدخل الأمر التالي:

 

القسم 5: المفاتيح الخاصة

إذا كنت تبحث عن أوامر OpenSSL اللازمة لإنشاء والتحقق من المفاتيح الخاصة، فهذا القسم مخصص لك.

  • إنشاء مفتاح خاص

لإنشاء مفتاح خاص محمي بكلمة مرور بحجم 2048 بت (domain.key)، أدخل الأمر التالي في الطرفية الخاصة بك:

سيطلب منك الأمر كلمة مرور لإكمال العملية. انظر لقطة الشاشة أدناه:

Creating a Private Key

  • التحقق من مفتاح خاص

للتحقق من صلاحية مفتاح خاص (domain.key)، أدخل الأمر التالي في الطرفية الخاصة بك:

بعد ذلك، ستحتاج إلى تقديم كلمة مرور. إذا كان المفتاح الخاص مشفرًا وأدخلت عبارة المرور الصحيحة، فسيتم عرض المفتاح غير المشفر على الطرفية. انظر لقطة الشاشة أدناه:

Verifying a Private Key

  • التحقق من مطابقة المفتاح الخاص لشهادة وطلب توقيع شهادة (CSR)

إذا كنت ترغب في التحقق مما إذا كان المفتاح الخاص (domain.key) يطابق شهادة (domain.crt) وطلب توقيع شهادة (domain.csr)، فأدخل الأوامر التالية في الطرفية الخاصة بك:

إذا لاحظت أن مخرجات الأوامر المذكورة أعلاه متطابقة، فمن المحتمل أن يكون المفتاح الخاص والشهادة و CSR مرتبطة ببعضها البعض.

  • تشفير مفتاح خاص

إذا كان لديك مفتاح خاص غير مشفر (unencrypted.key) وتريد الحصول على النسخة المشفرة من المفتاح (encrypted.key)، فأدخل الأمر التالي في الطرفية الخاصة بك:

سيطلب منك الأمر عبارة مرور لتشفير المفتاح الخاص.

  • فك تشفير مفتاح خاص

إذا كان لديك مفتاح خاص مشفر (encrypted.key) وتريد الحصول على النسخة غير المشفرة منه (decrypted.key)، فأدخل الأمر التالي في الطرفية الخاصة بك:

سيطلب منك الأمر عبارة مرور للمفتاح المشفر. إذا أدخلت عبارة المرور الصحيحة، فسيتم فك تشفيره. سيتم إرسال المخرجات إلى decrypted.key.

 

القسم 6: تحويل تنسيقات الشهادات

قد تلاحظ أننا كنا نعمل حتى الآن مع شهادات X.509 المشفرة بـ ASCII PEM. ورغم أن هذا أمر جيد، إلا أن هناك مجموعة متنوعة من أنواع ترميز الشهادات والحاويات الأخرى التي يمكنك استخدامها. في بعض التطبيقات، قد تفضل استخدام تنسيقات معينة على غيرها. علاوة على ذلك، قد تحتوي بعض التنسيقات المختلفة على عناصر متعددة مثل المفتاح الخاص، و CSR، والشهادة الموقعة من جهة إصدار الشهادات (CA) في ملف واحد. يمكنك أيضًا استخدام OpenSSL للتحويل بين تنسيقات الشهادات المختلفة. تابع القراءة للتعرف على بعض أوامر OpenSSL لتحويل تنسيق الشهادات.

  • تحويل PEM إلى DER

تنسيق DER (قواعد الترميز المتميزة) هو ترميز ثنائي لشهادات X.509 والمفاتيح الخاصة. لتحويل شهادة مرمزة بتنسيق PEM (domain.crt) إلى شهادة مرمزة بتنسيق DER (domain.der)، أدخل الأمر التالي:

ستجد معظم حالات استخدام تنسيق ترميز DER في لغة البرمجة جافا (Java). اتبع هذا البرنامج التعليمي لإعداد سريع لجافا على خادم أوبونتو (Ubuntu) الخاص بك.

  • تحويل DER إلى PEM

لتحويل شهادة مرمزة بتنسيق DER (domain.der) إلى شهادة PEM (domain.crt)، أدخل الأمر التالي:

 

  • تحويل PEM إلى PKCS7

قد ترغب في إضافة شهادات PEM، على سبيل المثال، domain.crt و ca-chain.crt إلى ملف PKCS7 (domain.p7b). إليك الأمر لتحقيق ذلك:

يمكنك استخدام الخيار -certfile عدة مرات لتحديد الشهادات المراد إضافتها إلى ملف PKCS7. ملفات PKCS7 ذات صلة في الغالب بمخازن مفاتيح جافا (Java Key stores) و Microsoft IIS. تُعرف أيضًا باسم ملفات P7B، وهي ملفات ASCII يمكن أن تشتمل على شهادات وشهادات موقعة من جهة إصدار الشهادات (CA).

  • تحويل PKCS7 إلى PEM

لتحويل ملف PKCS7 (domain.p7b) إلى ملف مرمّز بتنسيق PEM (domain.crt)، أدخل الأمر التالي في الطرفية الخاصة بك:

 

  • تحويل PEM إلى PKCS12

لدمج مفتاح خاص (domain.key) وشهادة (domain.crt) في PKCS12 ملف (domain.pfx)، أدخل الأمر التالي:

سيطلب منك الأمر إدخال كلمات مرور التصدير، والتي يمكنك تركها فارغة اختياريًا. يمكنك ربط العديد من الشهادات بملف PKCS12 عن طريق دمج الشهادات في ملف PEM واحد (domain.crt). يُعرف PKCS12 أيضًا باسم PFX ويُستخدم غالبًا في Microsoft IIS.

  • تحويل PKCS12 إلى PEM

لتحويل ملف PKCS12 (domain.pfx) إلى تنسيق مشفر بـ PEM (domain.combined.crt)، أدخل الأمر التالي:

يحتوي ملف PEM الذي تم إنشاؤه بواسطة الأمر أعلاه على جميع العناصر المتعددة التي كان يحتوي عليها ملف PKCS12.

القسم 7: التحقق من إصدار OpenSSL

قد يؤثر إصدار أي برنامج تقوم بتشغيله على إمكانيات التطبيقات التي تقوم بتشغيلها. وبالتالي، هناك حاجة للتأكد من الإصدار. وينطبق الشيء نفسه على OpenSSL. قد تكون بعض خيارات سطر الأوامر مفقودة في إصدار ومتاحة في إصدار آخر. لعرض إصدار OpenSSL الذي تقوم بتشغيله، أدخل الأمر التالي:

أدناه هو المخرج الذي حصلنا عليه عندما قمنا بتشغيل الأمر أعلاه أثناء إنشاء هذا البرنامج التعليمي:

أدناه يمكنك العثور على لقطة الشاشة الفعلية:

OpenSSL

الخاتمة

في هذا البرنامج التعليمي، شرحنا ما هو OpenSSL، وغطينا طلبات توقيع الشهادات (CSR) وبعض أوامر OpenSSL الهامة التي يمكنك استخدامها في بيئة الخادم الخاصة بك.

هل نفتقد أمرًا هامًا أو هل تواجه مشكلات مع أي من الأوامر في إعداد الخادم الخاص بك على CloudSigma؟ لا تتردد في الاتصال بـ فريق دعم العملاء لدينا على مدار الساعة طوال أيام الأسبوع عبر الدردشة الفورية لمناقشة ذلك.

حوسبة سعيدة!

author

Manpreet Singh

المؤلف · CloudSigma

Preslav Dobrev هو مصمم إبداعي في CloudSigma، يركز على هوية أعمال متسقة باستخدام قنوات التسويق التقليدية والمبتكرة. هو بارع في دمج الرؤية الفنية مع التسويق الاستراتيجي لخلق سرد قصصي مؤثر للعلامة التجارية.

التعليقات

لا توجد تعليقات بعد. كن أول من يعلق.