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 في لقطة الشاشة أدناه:
|
1 2 3 4 5 6 7 |
البلد اسم (2 حرف رمز) [AU]:CH الولاية أو المقاطعة اسم (كامل اسم) [Some-State]:Zürich المنطقة المحلية اسم (مثال, مدينة) []:Old Town المؤسسة اسم (مثال, شركة) [Internet Widgits Pty Ltd]:Example Cloudsigma الشركة التنظيمية الوحدة اسم (مثال, قسم) []:Cloud Technology الشائع الاسم (e.g. خادم FQDN أو الخاص بك اسم) []:cloudsigma.com البريد الإلكتروني عنوان []:info@cloudsigma.com |
يمكنك تقديم المعلومات في أمر مكون من سطر واحد لتجنب المطالبات عن طريق إضافة علامة -subj كما هو موضح أدناه، وتقديم المعلومات الخاصة بالحقول:
|
1 |
-subj "/C=CH/ST=Zürich/L=Old Town/O=Example Cloudsigma Company/CN=cloudsigma.com" |
يأخذ الأمر أعلاه نفس المعلومات المعروضة في مثال كتلة التعليمات البرمجية لمطالبات معلومات 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) من الصفر:
|
1 |
openssl req -newkey rsa:2048 -nodes -keyout domain.key -out domain.csr |
أجب عن المطالبات بمعلومات CSR الخاصة بك. اختياريًا، يمكنك إضافة العلامة -subj إلى الأمر لتجنب المطالبات:
|
1 |
openssl req -newkey rsa:2048 -nodes -keyout domain.key -out domain.csr -subj "/C=CH/ST=Zürich/L=Old Town/O=Example Cloudsigma Company/CN=cloudsigma.com" |
تحدد العلامة -newkey rsa:2048 أنه يجب إنشاء المفتاح باستخدام خوارزمية RSA بحجم 2048 بت. وتشير العلامة -nodes إلى عدم وجود تشفير بعبارة مرور للمفتاح الخاص. هناك خيار -new غير مدرج ولكنه ضمني للإشارة إلى أنه يتم إنشاء طلب توقيع شهادة (CSR) جديد.
إنشاء طلب توقيع شهادة من مفتاح خاص موجود
إذا كان لديك مفتاح خاص بالفعل، فيمكنك استخدام هذه الطريقة لإنشاء طلب توقيع شهادة (CSR). ستستخدمه بعد ذلك لطلب شهادة SSL من مرجع مصدق (CA). أدخل الأمر التالي لإنشاء طلب توقيع شهادة جديد (domain.csr) باستخدام مفتاح خاص موجود (domain.key):
|
1 |
openssl req -key domain.key -new -out domain.csr |
أجب عن المطالبات بمعلومات CSR الخاصة بك. اختياريًا، يمكنك إضافة العلامة -subj إلى الأمر لتجنب المطالبات:
|
1 |
openssl req -key domain.key -new -out domain.csr -subj "/C=CH/ST=Zürich/L=Old Town/O=Example Cloudsigma Company/CN=cloudsigma.com" |
تحدد العلامة -key المفتاح الخاص الموجود (domain.key) ليتم استخدامه لإنشاء طلب توقيع شهادة (CSR) جديد. وتشير العلامة -new إلى أنه يتم إنشاء طلب توقيع شهادة (CSR) جديد.
إنشاء طلب توقيع شهادة من شهادة ومفتاح خاص موجودين
إذا كان لديك بالفعل شهادة موجودة ترغب في استخدامها لإنشاء طلب توقيع شهادة (CSR)، فيمكنك استخدام هذه الطريقة. يمكن أن تكون هذه الطريقة مفيدة إذا فقدت أنت أو المرجع المصدق (CA) طلب توقيع الشهادة الأصلي وكنت بحاجة إلى إنشائه باستخدام معلومات CSR التي تم إدخالها مسبقًا دون الحصول على إعادة إدخالها. يستخرج الأمر المعلومات من الشهادة الحالية. أدخل الأمر التالي في الطرفية لإنشاء طلب توقيع شهادة جديد (domain.csr) باستخدام شهادة موجودة (domain.crt) ومفتاح خاص موجود (domain.key):
|
1 |
openssl x509 -in domain.crt -signkey domain.key -x509toreq -out domain.csr |
يشير الخيار -x509toreq إلى أنك تستخدم شهادة X509 لإنشاء طلب توقيع الشهادة (CSR).
القسم 3: إنشاء شهادات SSL
في بعض الحالات، قد ترغب في استخدام شهادة SSL دون عناء الحصول على شهادة موقعة من مرجع مصدق (CA). يوضح هذا القسم كيف يمكنك توقيع شهاداتك الخاصة. إنها صالحة ومجانية. يُشار إلى هذه الشهادات باسم الشهادات الموقعة ذاتيًا، وهي شائعة جدًا.
يتم توقيع الشهادة الموقعة ذاتيًا بمفتاحها الخاص. تعمل كل من الشهادات الموقعة ذاتيًا والموقعة من مرجع مصدق (CA) بشكل جيد لتشفير البيانات وحركة مرور موقع الويب. ومع ذلك، مع الشهادات الموقعة ذاتيًا، عادةً ما يتلقى المستخدمون تحذيرًا في متصفحاتهم يفيد بأن الشهادة غير موثوقة. وبالتالي، يمكنك استخدام الشهادات الموقعة ذاتيًا للمواقع الإلكترونية التي لا تتبادل معلومات حساسة مع المستخدمين، أو على خوادم غير مخصصة للإنتاج الفعلي. أدناه، يمكنك العثور على أوامر OpenSSL التي يمكنك استخدامها لإنشاء شهادات موقعة ذاتيًا.
- إنشاء شهادة موقعة ذاتيًا
يمكنك استخدام هذه الطريقة لإنشاء شهادة SSL لتأمين خادم Apache أو Nginx الخاص بك. سيضمن ذلك أن تأتي حركة المرور عبر HTTPS، أو HTTP عبر TLS، دون الذهاب إلى جهة إصدار شهادات (CA) لتوقيع الشهادة:
|
1 |
openssl req -newkey rsa:2048 -nodes -keyout domain.key -x509 -days 365 -out domain.crt |
أجب عن المطالبات بمعلومات CSR الخاصة بك. اختياريًا، يمكنك إضافة علامة -subj إلى الأمر لتجنب المطالبات:
|
1 |
openssl req -newkey rsa:2048 -nodes -keyout domain.key -x509 -days 365 -out domain.crt -subj "/C=CH/ST=Zürich/L=Old Town/O=Example Cloudsigma Company/CN=cloudsigma.com" |
الـ -x509 علامة تشير إلى إنشاء شهادة موقعة ذاتيًا. الـ -days 365 يحدد عدد الأيام التي ستكون فيها الشهادة صالحة. في هذه الحالة، هي 365 يومًا. يمكنك أيضًا اختيار عدد أيام مختلف. يقوم الأمر بإنشاء CSR مؤقت للاحتفاظ بالمعلومات التي يجب عليك ربطها بالشهادة.
- إنشاء شهادة موقعة ذاتيًا من مفتاح خاص موجود
ستساعدك هذه الطريقة في إنشاء شهادة موقعة ذاتيًا من مفتاحك الخاص الموجود بالفعل. أدخل الأمر التالي لإنشاء شهادة موقعة ذاتيًا (domain.crt) باستخدام مفتاح خاص موجود (domain.key):
|
1 |
openssl req -key domain.key -new -x509 -days 365 -out domain.crt |
قدم للمطالبات معلومات CSR الخاصة بك. اختياريًا، يمكنك إضافة علامة -subj إلى الأمر لتجنب المطالبات:
|
1 |
openssl req -key domain.key -new -x509 -days 365 -out domain.crt -subj "/C=CH/ST=Zürich/L=Old Town/O=Example Cloudsigma Company/CN=cloudsigma.com" |
الـ -x509 علامة تشير إلى إنشاء شهادة موقعة ذاتيًا. الـ -days 365 يحدد عدد الأيام التي ستكون فيها الشهادة صالحة. في هذه الحالة هي 365 يومًا. يمكنك أيضًا اختيار عدد أيام مختلف. الـ -new يبدأ مطالبة معلومات CSR.
القسم 4: عرض الشهادات
يتم ترميز الشهادات وملفات CSR وحفظها بامتداد .pem . وهو يرمز إلى Privacy-Enhanced Mail. وهو تنسيق ملف لتخزين وإرسال المفاتيح التشفيرية والشهادات والبيانات الهامة الأخرى. ملفات PEM ليست سهلة القراءة للبشر. في هذا القسم، ستجد الأوامر التي يمكنك استخدامها لعرض الإدخالات من ملفات PEM المشفرة.
- عرض ملفات CSR
أدخل الأمر التالي لعرض والتحقق من محتويات CSR (domain.csr) على الطرفية الخاصة بك:
|
1 |
openssl req -text -noout -verify -in domain.csr |
على سبيل المثال، قد يخرج الأمر أعلاه شيئًا كهذا:

- عرض إدخالات الشهادة
أدخل الأمر التالي لعرض محتويات الشهادة (domain.crt):
|
1 |
openssl x509 -text -noout -in domain.crt |
قد يخرج الأمر أعلاه شيئًا كهذا:

- التحقق من أن الشهادة تم توقيعها من قبل جهة إصدار شهادات
للتحقق مما إذا كانت الشهادة (domain.crt) قد تم توقيعها بواسطة شهادة CA معينة (ca.crt)، أدخل الأمر التالي:
|
1 |
openssl verify -verbose -CAfile ca.crt domain.crt |
القسم 5: المفاتيح الخاصة
إذا كنت تبحث عن أوامر OpenSSL اللازمة لإنشاء والتحقق من المفاتيح الخاصة، فهذا القسم مخصص لك.
- إنشاء مفتاح خاص
لإنشاء مفتاح خاص محمي بكلمة مرور بحجم 2048 بت (domain.key)، أدخل الأمر التالي في الطرفية الخاصة بك:
|
1 |
openssl genrsa -des3 -out domain.key 2048 |
سيطلب منك الأمر كلمة مرور لإكمال العملية. انظر لقطة الشاشة أدناه:

- التحقق من مفتاح خاص
للتحقق من صلاحية مفتاح خاص (domain.key)، أدخل الأمر التالي في الطرفية الخاصة بك:
|
1 |
openssl rsa -check -in domain.key |
بعد ذلك، ستحتاج إلى تقديم كلمة مرور. إذا كان المفتاح الخاص مشفرًا وأدخلت عبارة المرور الصحيحة، فسيتم عرض المفتاح غير المشفر على الطرفية. انظر لقطة الشاشة أدناه:

- التحقق من مطابقة المفتاح الخاص لشهادة وطلب توقيع شهادة (CSR)
إذا كنت ترغب في التحقق مما إذا كان المفتاح الخاص (domain.key) يطابق شهادة (domain.crt) وطلب توقيع شهادة (domain.csr)، فأدخل الأوامر التالية في الطرفية الخاصة بك:
|
1 2 3 |
openssl rsa -noout -modulus -in domain.key | openssl md5 openssl x509 -noout -modulus -in domain.crt | openssl md5 openssl req -noout -modulus -in domain.csr | openssl md5 |
إذا لاحظت أن مخرجات الأوامر المذكورة أعلاه متطابقة، فمن المحتمل أن يكون المفتاح الخاص والشهادة و CSR مرتبطة ببعضها البعض.
- تشفير مفتاح خاص
إذا كان لديك مفتاح خاص غير مشفر (unencrypted.key) وتريد الحصول على النسخة المشفرة من المفتاح (encrypted.key)، فأدخل الأمر التالي في الطرفية الخاصة بك:
|
1 |
openssl rsa -des3 -in unencrypted.key -out encrypted.key |
سيطلب منك الأمر عبارة مرور لتشفير المفتاح الخاص.
- فك تشفير مفتاح خاص
إذا كان لديك مفتاح خاص مشفر (encrypted.key) وتريد الحصول على النسخة غير المشفرة منه (decrypted.key)، فأدخل الأمر التالي في الطرفية الخاصة بك:
|
1 |
openssl rsa -in encrypted.key -out decrypted.key |
سيطلب منك الأمر عبارة مرور للمفتاح المشفر. إذا أدخلت عبارة المرور الصحيحة، فسيتم فك تشفيره. سيتم إرسال المخرجات إلى decrypted.key.
القسم 6: تحويل تنسيقات الشهادات
قد تلاحظ أننا كنا نعمل حتى الآن مع شهادات X.509 المشفرة بـ ASCII PEM. ورغم أن هذا أمر جيد، إلا أن هناك مجموعة متنوعة من أنواع ترميز الشهادات والحاويات الأخرى التي يمكنك استخدامها. في بعض التطبيقات، قد تفضل استخدام تنسيقات معينة على غيرها. علاوة على ذلك، قد تحتوي بعض التنسيقات المختلفة على عناصر متعددة مثل المفتاح الخاص، و CSR، والشهادة الموقعة من جهة إصدار الشهادات (CA) في ملف واحد. يمكنك أيضًا استخدام OpenSSL للتحويل بين تنسيقات الشهادات المختلفة. تابع القراءة للتعرف على بعض أوامر OpenSSL لتحويل تنسيق الشهادات.
- تحويل PEM إلى DER
تنسيق DER (قواعد الترميز المتميزة) هو ترميز ثنائي لشهادات X.509 والمفاتيح الخاصة. لتحويل شهادة مرمزة بتنسيق PEM (domain.crt) إلى شهادة مرمزة بتنسيق DER (domain.der)، أدخل الأمر التالي:
|
1 |
openssl x509 -in domain.crt -outform der -out domain.der |
ستجد معظم حالات استخدام تنسيق ترميز DER في لغة البرمجة جافا (Java). اتبع هذا البرنامج التعليمي لإعداد سريع لجافا على خادم أوبونتو (Ubuntu) الخاص بك.
- تحويل DER إلى PEM
لتحويل شهادة مرمزة بتنسيق DER (domain.der) إلى شهادة PEM (domain.crt)، أدخل الأمر التالي:
|
1 |
openssl x509 -inform der -in domain.der -out domain.crt<code> |
- تحويل PEM إلى PKCS7
قد ترغب في إضافة شهادات PEM، على سبيل المثال، domain.crt و ca-chain.crt إلى ملف PKCS7 (domain.p7b). إليك الأمر لتحقيق ذلك:
|
1 |
openssl crl2pkcs7 -nocrl -certfile domain.crt -certfile ca-chain.crt -out domain.p7b |
يمكنك استخدام الخيار -certfile عدة مرات لتحديد الشهادات المراد إضافتها إلى ملف PKCS7. ملفات PKCS7 ذات صلة في الغالب بمخازن مفاتيح جافا (Java Key stores) و Microsoft IIS. تُعرف أيضًا باسم ملفات P7B، وهي ملفات ASCII يمكن أن تشتمل على شهادات وشهادات موقعة من جهة إصدار الشهادات (CA).
- تحويل PKCS7 إلى PEM
لتحويل ملف PKCS7 (domain.p7b) إلى ملف مرمّز بتنسيق PEM (domain.crt)، أدخل الأمر التالي في الطرفية الخاصة بك:
|
1 |
openssl pkcs7 -in domain.p7b -print_certs -out domain.crt |
- تحويل PEM إلى PKCS12
لدمج مفتاح خاص (domain.key) وشهادة (domain.crt) في PKCS12 ملف (domain.pfx)، أدخل الأمر التالي:
|
1 |
openssl pkcs12 -inkey domain.key -in domain.crt -export -out domain.pfx |
سيطلب منك الأمر إدخال كلمات مرور التصدير، والتي يمكنك تركها فارغة اختياريًا. يمكنك ربط العديد من الشهادات بملف PKCS12 عن طريق دمج الشهادات في ملف PEM واحد (domain.crt). يُعرف PKCS12 أيضًا باسم PFX ويُستخدم غالبًا في Microsoft IIS.
- تحويل PKCS12 إلى PEM
لتحويل ملف PKCS12 (domain.pfx) إلى تنسيق مشفر بـ PEM (domain.combined.crt)، أدخل الأمر التالي:
|
1 |
openssl pkcs12 -in domain.pfx -nodes -out domain.combined.crt |
يحتوي ملف PEM الذي تم إنشاؤه بواسطة الأمر أعلاه على جميع العناصر المتعددة التي كان يحتوي عليها ملف PKCS12.
القسم 7: التحقق من إصدار OpenSSL
قد يؤثر إصدار أي برنامج تقوم بتشغيله على إمكانيات التطبيقات التي تقوم بتشغيلها. وبالتالي، هناك حاجة للتأكد من الإصدار. وينطبق الشيء نفسه على OpenSSL. قد تكون بعض خيارات سطر الأوامر مفقودة في إصدار ومتاحة في إصدار آخر. لعرض إصدار OpenSSL الذي تقوم بتشغيله، أدخل الأمر التالي:
|
1 |
openssl version -a |
أدناه هو المخرج الذي حصلنا عليه عندما قمنا بتشغيل الأمر أعلاه أثناء إنشاء هذا البرنامج التعليمي:
|
1 2 3 4 5 6 7 8 |
OpenSSL 1.1.1i 8 Dec 2020 built on: Sat Dec 19 15:39:47 2020 UTC platform: linux-x86_64 options: bn(64,64) rc4(16x,int) des(int) idea(int) blowfish(ptr) compiler: gcc -fPIC -pthread -m64 -Wa,--noexecstack -Wall -O3 -DOPENSSL_USE_NODELETE -DL_ENDIAN -DOPENSSL_PIC -DOPENSSL_CPUID_OBJ -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5 -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DKECCAK1600_ASM -DRC4_ASM -DMD5_ASM -DAESNI_ASM -DVPAES_ASM -DGHASH_ASM -DECP_NISTZ256_ASM -DX25519_ASM -DPOLY1305_ASM -DNDEBUG OPENSSLDIR: "/usr/local/ssl" ENGINESDIR: "/usr/local/lib/engines-1.1" Seeding source: os-specific |
أدناه يمكنك العثور على لقطة الشاشة الفعلية:

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