OpenSSL على Windows 10: دليل PowerShell شامل

إن إنشاء شهادات SSL يمكن أن يكون مهمة صعبة، ومليئة بالإحباط والحزن. ولكن لا يجب أن تكون الأمور بهذه الصعوبة! إذا كنت تستخدم ويندوز 10 و OpenSSL بالإضافة إلى قليل من المساعدة من هذا البرنامج التعليمي، فستكون على الطريق الصحيح.

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

لنبدأ في استخدام OpenSSL على ويندوز 10 باستخدام PowerShell!

ذات الصلة: إدارة الشهادات باستخدام Windows Certificate Manager و PowerShell

المتطلبات المسبقة

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

  • A Windows system with Local Administrator rights – The tutorial will be using Windows 10
  • PowerShell 5.1 لنظام التشغيل Windows (يأتي مع نظام التشغيل) أو PowerShell 7
  • Chocolatey – إدارة حزم لنظام التشغيل Windows مثبتة.
  • PowerShell ISE، Visual Studio Code أو أي محرر نصي تفضله

تم التقاط جميع لقطات الشاشة في هذا الدليل من نسخة Windows 10 الإصدار 1909 و PowerShell 7.

تثبيت OpenSSL على ويندوز 10 باستخدام PowerShell و Chocolatey

بفرض أنك قمت بتثبيت “Chocolatey” باستخدام “تعليمات التثبيت” الخاصة به، فإن مهمتك الأولى هي تثبيت OpenSSL على نظام Windows 10. للقيام بذلك، قم بفتح نافذة PowerShell وتشغيل الأمر “choco install OpenSSL.Light” كما هو مبين أدناه.

Installing OpenSSL.Light using Chocolatey package manager in PowerShell

هذا كل شيء! لقد قمت الآن بتثبيت OpenSSL باستخدام PowerShell.

إعداد دليل العمل

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

سيتم تخزين جميع الشهادات والملفات ذات الصلة في مجلد “C:\certs” في هذا البرنامج التعليمي. يمكنك إنشاء المجلد باستخدام PowerShell عن طريق تشغيل الأمر التالي.

New-Item -ItemType Directory -Path C:\certs

حان الوقت الآن لتكوين OpenSSL.

تكوين OpenSSL

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

افتح نافذة PowerShell وقم بتشغيل الأمر التالي. يقوم هذا الأمر بتنزيل ملف تكوين نموذجي من MIT ويحفظه بصيغة “openssl.cnf” في دليل العمل الحالي.

Invoke-WebRequest 'http://web.mit.edu/crypto/openssl.cnf' -OutFile .\openssl.cnf

يمكنك الآن فتح ملف “openssl.cnf” ويجب أن ترى شيئًا يشبه ما يلي.

Sample OpenSSL configuration file

سيعمل التكوين المحمل كما هو في الوقت الحالي. لا تستخدم الإعدادات الافتراضية في بيئة الإنتاج!

تحديث متغيرات بيئة ملف تعريف PowerShell

لجعل الأمور تسير بسلاسة، يجب عليك تعديل ملف تعريف PowerShell الخاص بك في Windows 10. يتيح لك إعداد بعض المتغيرات البيئية الانتقال بسهولة بين إصدارات مختلفة من OpenSSL التي يمكن أن تكون قد قمت بتثبيتها.

I suggest adding two environment variables to your PowerShell profile called path and OPENSSL_CONF. You will update the PATH environment variable to ensure you can run the openssl binary in any location while on the command line.

فيما يلي طريقة لإنشاء ملف تعريف PowerShell إذا لم يكن لديك بالفعل واحد. يقوم هذا الأمر بإضافة مسار البرنامج الثنائي لـ OpenSSL إلى مسار PATH الخاص بك وتعيين مسار ملف التكوين إلى OPENSSL_CONF.

# أضف المتغيرات البيئية إلى ملف تعريف PowerShell
# اختبر الملف التعريف، إذا لم يتم العثور عليه أنشئ واحدًا!
if (-not (Test-Path $profile) ) {
    New-Item -Path $profile -ItemType File -Force
}

# قم بتعديل الملف التعريف لإضافة هذه السطور
'$env:path = "$env:path;C:\Program Files\OpenSSL\bin"' | Out-File $profile -Append
'$env:OPENSSL_CONF = "C:\certs\openssl.cnf"' | Out-File $profile -Append

لاستخدام المتغيرات البيئية، أعد تحميل الملف التعريف بكتابة . $profile أو مجرد إغلاق PowerShell وفتحه مرة أخرى.

الآن يمكنك استدعاء برنامج OpenSSL الثنائي openssl بسهولة أينما كنت في PowerShell كما هو موضح أدناه.

Verifying OpenSSL version in PowerShell

استخدام OpenSSL على Windows 10 لإنشاء CSR ومفتاح خاص

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

ذات صلة: دليلك لشهادات X509 للبشر

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

openssl req -new -out MyFirst.csr
Generating a CSR and Private Key using OpenSSL in PowerShell

بمجرد الانتهاء ، ستحصل على CSR صالح ومفتاح خاص يمكن استخدامه لإصدار شهادة SSL لك.

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

يمكنك قراءة المزيد عن خيارات CSR المتاحة و عرض أمثلة للتكوينات في صفحات الرجل. كما يحتوي OpenSSL على مستودع نشط في مستودع GitHub مع أمثلة أيضًا.

إنشاء أزواج مفاتيح RSA

يمكنك أيضًا إنشاء أزواج مفاتيح RSA (عام / خاص) باستخدام OpenSSL. للقيام بذلك ، أنشئ أولاً مفتاحًا خاصًا باستخدام الأمر الفرعي genrsa كما هو موضح أدناه.

عند تشغيل الأمر أدناه ، ستقوم OpenSSL على نظام Windows 10 بتوليد مفتاح خاص RSA بطول 2048 بت. يتم إنشاء هذا المفتاح تقريبًا على الفور على الأجهزة الحديثة. يتم إخراج المفتاح الناتج في دليل العمل

# توليد مفتاح خاص باستخدام أقصى حجم للمفتاح 2048
# يمكن أن تكون أحجام المفاتيح 512 و 758 و 1024 و 1536 أو 2048. 
openssl genrsa -out rsa.private 2048

بعد ذلك ، قم بتوليد مفتاح عام باستخدام المفتاح الخاص الذي تم إنشاؤه للتو باستخدام الفرع rsa. ستنشئ الجملة التالية مفتاحًا عامًا يسمى rsa.public في دليل العمل من المفتاح الخاص rsa.private.

# توليد مفتاح عام باستخدام المفتاح الخاص
openssl rsa -in rsa.private -out rsa.public -pubout -outform PEM

توليد شهادة ذاتية

في بعض الأحيان قد تحتاج إلى إنشاء شهادة ذاتية. الشهادات الذاتية ملائمة للاستخدام في المختبرات ولكنها ليست ممارسة آمنة للاستخدام في بيئة إنتاجية.

دعنا نقوم بإنشاء شهادة ذاتية قبل المتابعة إلى المهمة التالية. للقيام بذلك ، أدخل الأمر أدناه لإنشاء شهادة SSL X509. ستستخدم هذه الشهادة تشفير SHA256 وستكون صالحة لمدة 365 يومًا باستخدام طول مفتاح RSA 2048 بت. ستتم حفظ الشهادة في دليل العمل.

openssl req -x509 -sha256 -nodes -days 365 -newkey rsa:2048 -keyout privateKey.key -out certificate.crt

أنت الآن جاهز لاستيراد الشهادة في متصفح أو خادم.

التحقق من CSRs والشهادات والمفاتيح باستخدام OpenSSL

التحقق من المعلومات في CSR، المفتاح الخاص، الشهادة أو PKCS#12 يمكن أن يوفر لك الوقت في حل مشاكل أخطاء SSL. في بعض الأحيان يمكن أن يتم استخدام مفتاح خاطئ لإنشاء شهادة، على سبيل المثال. قد يكون لديك معلومات تعريفية خاطئة في الشهادة.

لنبدأ بفحص CSR باستخدام الأمر req وبعض المعلمات:

openssl req -text -noout -verify -in .\MyFirst.csr
Checking a CSR with OpenSSL in PowerShell

يجب أن تتطابق التفاصيل مثل اسم البلد، واسم المؤسسة، وعنوان البريد الإلكتروني الذي قمت بإدخاله عند إنشاء CSR في بداية هذا الدليل تمامًا.

يمكنك أيضًا فحص الشهادة باستخدام الأمر الفرعي x509 مع بعض المعلمات:

openssl x509 -in .\certificate.crt -text -noout | more
Checking a certificate with OpenSSL with the x509 command in PowerShell

تحويل الشهادات باستخدام OpenSSL

هناك مناسبات يتطلب فيها التطبيق استخدام تنسيق شهادة معين. يمكن أن تواجه هذه المشكلة مع تطبيق يسمى HAproxy، على سبيل المثال، الذي يتطلب شهادة PEM عندما يكون لديك شهادة بتنسيق DER (.crt .cer .der).

لتوضيح عملية تحويل الشهادة، دعنا نقوم بتحويل الشهادة الموقعة ذاتيًا التي تم إنشاؤها سابقًا بتنسيق DER (certificate.crt) إلى PEM. استخدم الشيفرة في مقطع الشيفرة التالي للقيام بذلك.

يستخدم الأمر أدناه الأمر الفرعي x509 مع المعلمة -inform التي يجب أن تتطابق مع تنسيق الملف -in تليها تنسيق -out.

openssl x509 -inform der -in .\certificate.crt -out .\certificate.pem

يمكنك أيضًا عكس الترتيب إذا أردت تحويل التنسيق من PEM إلى DER كما هو موضح أدناه.

openssl x509 -outform der -in .\certificate.pem -out .\certificate.der

وأخيرًا ، يمكنك تحويل PKCS#12 إلى PEM و PEM إلى PKCS#12. هذا هو نوع ملف يحتوي على المفاتيح الخاصة والشهادات. لتحويله إلى تنسيق PEM ، استخدم الأمر الفرعي pkcs12.

openssl pkcs12 -in .\SomeKeyStore.pfx -out .\SomeKeyStore.pem -nodes

يمكنك أيضًا تحويل شهادة PEM ومفتاح خاص إلى تنسيق PKCS#12 باستخدام -export مع بعض الخيارات الإضافية. أدناه ، يتم تصدير شهادة بتنسيق PKCS#12 باستخدام المفتاح الخاص الخاص بك باستخدام SomeCertificate.crt كمصدر الإدخال. باستخدام قيمة الخيار -certfile MyCACert.crt ، يمكنك التحقق من صحة SomeCertificate.crt.

openssl pkcs12 -export -out SomeCertificate.pfx -inkey SomePrivateKey.key -in SomeCertificate.crt -certfile MyCACert.crt

استكشاف الأخطاء وإصلاحها وتصحيحها

الآن بعد أن يمكنك إنشاء وتحويل CSR’s والشهادات وأزواج المفاتيح ، حان الوقت لمعرفة كيفية استكشاف الأخطاء وإصلاحها وتصحيحها. يأتي OpenSSL مع أوامر تجعل من السهل استكشاف المشاكل.

يتيح لك OpenSSL أيضًا التحقق من صحة الشهادات من حيث سلامة الملف واختبار التلف المحتمل للبيانات. باستخدام البصمة MD5 ، يمكنك استخدام أمثلة الكود التالية لاختبار الشهادات والمفاتيح و CSR’s المولدة:

# الشهادات
openssl x509 -noout -modulus -in .\certificate.crt | openssl md5

# المفاتيح العامة / الخاصة
openssl rsa -noout -modulus -in .\privateKey.key | openssl md5

# طلب خادم الشهادات
openssl req -noout -modulus -in .\MyFirst.csr | openssl md5

# التحقق من اتصال SSL الخارجي
openssl s_client -connect www.google.com:443

بمجرد الحصول على البصمة الأصلية ، يمكنك مقارنتها مع البصمة الحالية للتحقق من أن الشهادة لم يتم تعديلها أو تلفها.

إليك نموذج لمظهر هذا الكود عند تشغيله في برنامج PowerShell:

Sample troubleshooting command output with OpenSSL in PowerShell

ملخص

في هذه المقالة، تعلمت كيفية تثبيت وتكوين OpenSSL على نظام Windows 10، وإنشاء CSR، وزوج مفاتيح، وشهادة SSL. كما تعلمت كيفية التحويل بين تنسيقات الشهادات المختلفة وأجراء بعض عمليات الإصلاح الأساسية باستخدام الأوامر الفرعية المضمنة.

موارد إضافية

Source:
https://adamtheautomator.com/openssl-windows-10/