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

openssl ssl csr شهادات أس أس أل والمفاتيح الخاصة وطلبات التوقيع على الشهادة ubuntu redhat debian centos

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

الخطوة 1 – إنشاء مفتاح خاص

الخطوة الأولى هي إنشاء مفتاح خاص، والذي سيستخدم لاحقاً لإنشاء طلب التوقيع على الشهادة والمفتاح العام لشهادة SSL.

لإنشاء مفتاح خاص RSA بحجم 2048 بت:

$ openssl genrsa -out private.key 2048

سينشئ هذا ملف باسم ‘private.key’ يحتوي على المفتاح الخاص. تأكد من حماية هذا الملف وعدم مشاركته علناً.

بعض النقاط الرئيسية حول المفاتيح الخاصة:

  • يستخدم المفتاح الخاص لاحقاً للتوقيع رقمياً على طلب التوقيع على الشهادة والمفتاح العام.
  • يجب الاحتفاظ بالمفتاح الخاص سري وآمن. إذا تم اختراقه، يمكن للمهاجمين استخدام أي شهادة أنشئت بواسطته.
  • للمزيد من الأمان، يجب أن يكون حجم المفتاح 2048 بت على الأقل. وينصح بـ 4096 بت لأمان أقوى.

الخطوة 2 – إنشاء طلب توقيع على الشهادة

الآن بعد أن لدينا مفتاح خاص، يمكننا إنشاء طلب توقيع على الشهادة أو CSR. يُرسل هذا إلى سلطة الشهادات لطلب شهادة مفتاح عام.

لإنشاء طلب توقيع على الشهادة:

$ openssl req -new -key private.key -out csr.pem 

سيطلب منك إدخال معلومات تعريفية مثل اسم الدولة واسم المنظمة إلخ سيتم تضمينها في طلب التوقيع على الشهادة.

بعض النقاط حول طلبات التوقيع على الشهادة:

  • يحتوي طلب التوقيع على معلومات عن شركتك والمفتاح العام.
  • يتم التوقيع رقمياً على طلب التوقيع بواسطة مفتاحك الخاص لإثبات ملكيتك له.
  • ستستخدم سلطة الشهادات طلب التوقيع لإنشاء شهادة SSL.

الخطوة 3 – إنشاء شهادة موقّعة ذاتياً

عادةً يتم إرسال طلب التوقيع إلى سلطة شهادات موثوقة مثل Comodo أو Digicert إلخ للتوقيع على شهادة SSL وإنشائها.

لأغراض الاختبار، يمكننا إنشاء شهادة موقّعة ذاتياً بدلاً من سلطة شهادات.

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

$ openssl req -new -x509 -key private.key -out self-signed.crt -days 365

سينشئ هذا شهادة موقّعة ذاتياً باسم ‘self-signed.crt’ صالحة لمدة 365 يوم.

بعض النقاط حول الشهادات الموقّعة ذاتياً:

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

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

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

يمكن لـ OpenSSL أيضًا إنشاء كليهما في آن واحد:

$ openssl req -newkey rsa:2048 -nodes -keyout private.key -out csr.pem

سينشئ هذا مفتاح خاص RSA 2048 بت وطلب توقيع على الشهادة مع حفظهما في الملفات private.key و csr.pem على التوالي.

يشير المعلمة -nodes إلى OpenSSL بتخزين المفتاح الخاص بدون حماية كلمة مرور.

الخطوة 5 – إنشاء شهادة PKCS#12 (.pfx .p12)

في بعض الحالات، قد تحتاج إلى تخزين شهادة SSL والمفتاح الخاص معًا في ملف PKCS#12 أو .pfx.

يمكن استيراد ملف .pfx هذا مباشرة إلى خدمات مثل IIS على Windows.

لإنشاء ملف .pfx:

$ openssl pkcs12 -export -out public_key.pfx -inkey private.key -in public.crt 

حيث:

  • public_key.pfx هو ملف .pfx الناتج
  • private.key هو المفتاح الخاص المرتبط
  • public.crt هي شهادة SSL

عند تشغيل هذا الأمر، سيطلب منك OpenSSL تعيين كلمة مرور لحماية ملف .pfx.

الخطوة 6 – التحقق من طلب توقيع على الشهادة

بمجرد أن تقوم بإنشاء طلب توقيع على الشهادة، من الجيد التحقق منه قبل إرساله إلى سلطة الشهادات.

للتحقق من طلب التوقيع على الشهادة:

$ openssl req -text -noout -verify -in csr.pem

سيقوم هذا بتحليل طلب التوقيع وطباعة تفاصيله في شكل نص والتحقق من:

  • أنه طلب توقيع مهيأ بشكل صحيح
  • أنه موقّع رقمياً بواسطة المفتاح الخاص المرتبط

هذا يساعد على التقاط أي أخطاء في إنشاء طلب التوقيع قبل إرساله إلى سلطة الشهادات.

الخطوة 7 – التحقق من شهادة SSL

بمجرد الحصول على شهادة SSL من سلطة الشهادات، يجب دائماً التحقق منها قبل تثبيتها على الخادم.

للتحقق من شهادة:

$ openssl x509 -in public.crt -text -noout 

سيطبع هذا جميع تفاصيل الشهادة كنص ويمكنك مراجعة:

  • صدرت إلى – الاسم الشائع يتطابق مع نطاقك
  • صدرت بواسطة – سلطة شهادات ذات سمعة جيدة مثل Comodo أو Digicert إلخ
  • صالحة من وتاريخ انتهاء الصلاحية – الشهادة صالحة حالياً
  • التوقيع / بصمة الإصبع – يستخدم التوقيع هاش آمن مثل SHA-256

مراجعة هذه التفاصيل مهمة للتأكد من أن لديك شهادة صالحة من سلطة شهادات موثوقة.

الخطوة 8 – التحقق من تطابق طلب التوقيع على الشهادة والمفتاح الخاص

عند إرسال طلب التوقيع على الشهادة إلى سلطة الشهادات، ترسل فقط طلب التوقيع نفسه وتحتفظ بالمفتاح الخاص سريًا.

لكن كيف يمكنك التحقق من تطابق طلب التوقيع والمفتاح الخاص عند استلام الشهادة الموقّعة؟

يوفر OpenSSL طريقة للتحقق من ذلك:

$ openssl rsa -noout -modulus -in private.key | openssl md5
$ openssl x509 -noout -modulus -in public.crt | openssl md5  

سينشئ هذا بصمة MD5 للمعامل السري لكل من المفتاح الخاص والشهادة. إذا تطابقت البصمات، فهذا يثبت أن طلب التوقيع والشهادة ينتميان إلى نفس المفتاح الخاص.

قم دائمًا بهذا الفحص قبل تثبيت شهادة SSL لمزيد من الأمان.

الخطوة 9 – التحقق من كون شهادة SSL موثوقة

بعد تثبيت شهادة SSL، يجب التحقق من أنها موثوقة من قبل متصفحات وأنظمة تشغيل رئيسية.

يمكن القيام بذلك باستخدام اختبار SSL من SSL Labs:

https://www.ssllabs.com/ssltest/analyze.html

قم بإرسال نطاقك وسيقوم بتحليل شهادة SSL والتحقق من مسارات

الثقة وتوفير درجة من A إلى F حول مستوى الثقة بها.

يجب أن تظهر الشهادة موثوقة على جميع المتصفحات الرئيسية مثل IE وكروم وفايرفوكس وغيرها.

الخطوة 10 – إلغاء شهادة SSL

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

ستحتوي سلطة الشهادات على عملية إلغاء الشهادة التي ستسمح لك بطلب إلغاء الشهادة.

بمجرد إلغائها، سيفشل العملاء في التحقق من صحة الشهادة وسيظهرون تحذيرات إذا ما زالت مستخدمة على موقع ويب.

  • تتحقق المتصفحات مثل كروم وفايرفوكس من حالة إلغاء الشهادات قبل الاعتماد عليها.
  • تأكد من استبدال الشهادة الملغاة بأخرى جديدة لتجنب التأثير على موقع الويب الخاص بك.

الخطوة 11 – إنشاء طلب توقيع على شهادة SSL باستخدام بطاقة عامة

تؤمن شهادة SSL البطاقة العامة عدد غير محدود من النطاقات الفرعية على شهادة واحدة.

على سبيل المثال، ستؤمّن *.example.com كل من www.example.com و mail.example.com وغيرها.

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

$ openssl req -newkey rsa:2048 -nodes -keyout private.key -out csr.pem -subj "/CN=*.example.com"

الجزء الرئيسي هو تحديد CN=*.example.com في الموضوع لطلب نطاق بطاقة عامة.

بعض الحقائق الرئيسية حول الشهادات ذات البطاقة العامة:

  • تدعم عدد غير محدود من النطاقات الفرعية على شهادة واحدة.
  • أكثر تكلفة من الشهادات الفردية ولكنها فعالة من حيث التكلفة لإدارة العديد من النطاقات الفرعية.
  • تحتوي كل من Comodo و Digicert على خيارات بطاقة عامة جيدة موثوقة من قبل جميع المتصفحات.

الخطوة 12 – إنشاء شهادة متعددة النطاقات (SAN)

تؤمن شهادات الـ SAN متعددة النطاقات عدة نطاقات على شهادة واحدة.

على سبيل المثال، يمكن لشهادة SAN تأمين كل من example.com و www.example.com معًا.

لإنشاء طلب توقيع SAN:

$ openssl req -newkey rsa:2048 -nodes -keyout private.key -out csr.pem -subj "/" -reqexts SAN -config <(cat /etc/ssl/openssl.cnf <(printf "[SAN]\nsubjectAltName=DNS:example.com,DNS:www.example.com"))

يستخدم هذا ملف تكوين OpenSSL لتحديد تفاصيل SAN.

بعض الحقائق الرئيسية حول شهادات SAN:

  • يمكنها تأمين ما يصل إلى 100 نطاق على شهادة واحدة.
  • أكثر مرونة من البطاقات العامة لتأمين عدة نطاقات محددة.
  • مدعومة على جميع المتصفحات والمنصات الرئيسية.
  • فعالة من حيث التكلفة لإدارة العديد من النطاقات.

الخطوة 13 – إنشاء شهادات موقّعة ذاتياً للأنظمة الداخلية

يمكن أن تكون الشهادات الموقّعة ذاتياً مفيدة لتأمين الاتصالات الداخلية بين الخوادم والأنظمة والخدمات داخل المؤسسة.

على سبيل المثال، تأمين حركة المرور بين موزع الحمل وخوادم الويب أو بين خدمات الميكرو الداخلية.

فيما يلي كيفية إنشاء شهادة موقّعة ذاتياً للاستخدام الداخلي:

$ openssl req -newkey rsa:2048 -nodes -keyout private.key -x509 -days 365 -out self-signed.crt

وبعض النقاط الرئيسية حول استخدام الشهادات الموقّعة ذاتياً داخلياً:

  • يجب استخدامها فقط داخل الشبكات الداخلية، وليس لحركة الإنترنت العامة.
  • توفر التشفير والأمان دون الحاجة إلى سلطات شهادات خارجية.
  • أكثر فعالية من حيث التكلفة من الشهادات التجارية لعدد كبير من الخوادم الداخلية.
  • يمكن إنشاؤها برمجياً وتدويرها تلقائياً حسب الحاجة.

الخطوة 14 – استخدام OpenSSL لاختبار اتصالات SSL

يمكن لـ OpenSSL اختبار اتصالات SSL للتحقق من صحة الشهادات وإصدارات البروتوكول المقبولة والتشفير المدعوم وما إلى ذلك.

لاختبار الاتصال SSL الأساسي إلى خادم:

$ openssl s_client -connect example.com:443

سيقوم هذا بإجراء مصافحة TLS مع الخادم وإخراج تفاصيل مثل:

  • تفاصيل الشهادة
  • إصدار بروتوكول SSL/TLS
  • التشفير المدعوم
  • معلومات الجلسة

يعد s_client مفيدًا لتصحيح الأخطاء المتعلقة بـ SSL الخاصة بخادم أو تطبيق ما.

الخطوة 15 – استخدام OpenSSL لقياس أداء تشفير SSL

يتضمن OpenSSL أداة لقياس الأداء لاختبار سرعة تشفير الخوارزميات مثل AES و SHA256 وغيرها.

أمر قياس الأداء الأساسي:

$ openssl speed

سيختبر هذا الخوارزميات الافتراضية. لاختبار بعض الخوارزميات المحددة:

$ openssl speed -evp aes-128-cbc aes-256-cbc  

مثال على الإخراج:

aes-128-cbc     14768.94k   14678.37k   14672.28k
aes-256-cbc     10528.08k   10506.25k   10475.97k
  • مفيد لمقارنة الأداء المادي لتشفير SSL.
  • يساعد على تحديد أكثر تشفيرات الدعم كفاءة.
  • تأكد من اختباره على الأجهزة الإنتاجية للحصول على قياسات دقيقة.

الخلاصة

يغطي هذا الأساسيات الجوهرية لاستخدام OpenSSL مع شهادات ومفاتيح SSL.

النقاط الرئيسية:

  • استخدام الأوامر genrsa و req لإنشاء مفاتيح خاصة وطلبات توقيع على الشهادات.
  • فهم أنواع الشهادات المختلفة مثل الموقّعة ذاتياً مقابل الموقّعة من سلطة شهادات.
  • التحقق من صحة الشهادات قبل تثبيتها على خوادم الإنتاج.
  • استخدام أدوات مثل s_client و speed للتصحيح وقياس الأداء.

OpenSSL عبارة عن مجموعة أدوات قوية يجب أن يشعر كل متخصص أمن بالراحة عند استخدامها. إتقان هذه الأساسيات سيجعلك مستعدًا لتنفيذ SSL بأمان في بنيتك التحتية.

LEAVE A COMMENT