استخدام شهادة SSL موقعة ذاتيًا لتطوير HTTPS محلي
أثناء تطوير واختبار مواقع الويب محليًا، من الضروري محاكاة اتصال HTTPS مثل ما يحدث في بيئة الإنتاج. رغم أن شهادات SSL الموقعة ذاتيًا ليست مُعترف بها من قبل جهات التصديق (CA) العامة، إلا أنها وسيلة عملية لتفعيل HTTPS في بيئة التطوير المحلي. سنشرح في هذا المقال بالتفصيل كيفية استخدام أداة OpenSSL المدمجة في ServBay لإنشاء شهادة SSL موقعة ذاتيًا وآمنة باستخدام التشفير البيضاوي (ECC)، وكيفية تكوين هذه الشهادات لموقعك المحلي عبر ServBay. سنستخدم اسم النطاق servbay.demo
كمثال عملي.
فهم كيفية إعداد HTTPS سيسهل عليك اختبار سلوك موقعك ضمن اتصال آمن محليًا، مثل معالجة تحذيرات المحتوى المختلط وعلامات أمان الكوكيز وغير ذلك.
نظرة عامة
الشهادة الموقعة ذاتيًا هي شهادة SSL تقوم أنت بإنشائها وتوقيعها، وليس جهة تصديق عامة. هي مناسبة للسيناريوهات التي لا تُشترط فيها الثقة العامة، مثل:
- بيئة التطوير المحلي
- خوادم الاختبار الداخلية
- التطبيقات الداخلية التي لا تتعامل مع بيانات حساسة
أداة OpenSSL متكاملة داخل ServBay، مما يسهل عليك إنشاء الملفات اللازمة مباشرة من الطرفية.
المتطلبات الأساسية
- تثبيت وتشغيل ServBay.
- إلمام بأساسيات استخدام الطرفية (سطر الأوامر).
الخطوة الأولى: إنشاء شهادة ECC SSL موقعة ذاتيًا
ننصح باستخدام شهادات ECC بدلًا من RSA التقليدية لأنها تقدم قوة أمان مماثلة مع مفاتيح أصغر وسرعة أكبر في التوقيع والتحقق، مع استهلاك موارد حسابية أقل.
إليك خطوات إنشاء شهادة ECC SSL موقعة ذاتيًا:
إنشاء المفتاح الخاص (ECC Private Key)
افتح تطبيق الطرفية لديك. نفذ الأمر التالي لإنشاء ملف مفتاح خاص باستخدام منحنٍ
prime256v1
باسمservbay.demo.key
:shopenssl ecparam -genkey -name prime256v1 -out servbay.demo.key
1openssl
: استدعاء أداة OpenSSL.ecparam
: إدارة معايير مفاتيح ECC.-genkey
: إنشاء مفتاح.-name prime256v1
: تحديد اسم المنحنى ECC، حيث أنprime256v1
(NIST P-256) يعتبر منحنى شائع وآمن.-out servbay.demo.key
: اسم ملف المفتاح الخاص الناتج.
إنشاء طلب توقيع الشهادة (CSR)
باستخدام الملف الذي أنشأته في الخطوة السابقة
servbay.demo.key
، قم بإنشاء ملف CSR باسمservbay.demo.csr
. CSR يتضمن معلومات الشهادة (كنطاق الموقع أو اسم المؤسسة) ويوقَّع بواسطة مفتاحك الخاص.shopenssl req -new -key servbay.demo.key -out servbay.demo.csr
1عند تنفيذ هذا الأمر، سيطلب منك OpenSSL إدخال مجموعة من البيانات لتعبئة ملف CSR. عليك إدخالها حسب المطلوب. الأهم هو حقل
Common Name (e.g. server FQDN or YOUR name)
حيث يجب ملء اسم نطاق موقعك المحلي، مثلservbay.demo
. يمكن ملء الحقول الأخرى بحسب حالتك أو اتباع القيم الافتراضية كمثال.أدناه مثال على عملية الإدخال:
Country Name (2 letter code) [AU]:CN # رمز الدولة، مثل CN (الصين) State or Province Name (full name) [Some-State]:Hong Kong # الولاية أو المقاطعة Locality Name (eg, city) []:Kowloon # المدينة Organization Name (eg, company) [Internet Widgits Pty Ltd]:ServBay # اسم المؤسسة Organizational Unit Name (eg, section) []:Development # قسم المؤسسة Common Name (e.g. server FQDN or YOUR name) []:servbay.demo # **هام: املأ بنطاقك المحلي** Email Address []:[email protected] # بريد التواصل Please enter the following 'extra' attributes to be sent on in your certificate request A challenge password []: # اختياري، اتركه فارغًا An optional company name []: # اختياري، اتركه فارغًا
1
2
3
4
5
6
7
8
9
10
11إصدار الشهادة الموقعة ذاتيًا
أخيرًا، استخدم ملف CSR (
servbay.demo.csr
) والمفتاح الخاص (servbay.demo.key
) لإنشاء شهادة SSL موقعة ذاتيًا باسمservbay.demo.crt
. سنحدد مدة صلاحيتها 365 يومًا.shopenssl x509 -req -days 365 -in servbay.demo.csr -signkey servbay.demo.key -out servbay.demo.crt
1openssl x509
: إدارة الشهادات بصيغة X.509.-req
: يُشير أن الإدخال هو CSR.-days 365
: مدة صلاحية الشهادة (بالأيام).-in servbay.demo.csr
: ملف طلب التوقيع المراد استخدامه.-signkey servbay.demo.key
: المفتاح الخاص المستخدم في التوقيع.-out servbay.demo.crt
: اسم ملف الشهادة الناتج.
بعد تنفيذ هذه الخطوات ستجد 3 ملفات في المجلد الحالي:
servbay.demo.key
(المفتاح الخاص)،servbay.demo.csr
(طلب توقيع الشهادة)، وservbay.demo.crt
(الشهادة الموقعة ذاتيًا).
(توضيح الصورة: تنفيذ أوامر OpenSSL في الطرفية لإنشاء ملفات الشهادة)
الخطوة الثانية: إعداد شهادة SSL الموقعة ذاتيًا داخل ServBay
بعد إنشاء ملفات الشهادة، ينبغي وضعها في موقع يمكن لـ ServBay الوصول إليه وتحديد المسارات المناسبة في إعدادات ServBay الخاصة بموقعك المحلي. يُفضل وضع كافة الشهادات في المجلد /Applications/ServBay/ssl
وإنشاء مجلدات فرعية منفصلة لكل نطاق لسهولة التنظيم.
نقل ملفات الشهادة إلى المجلد المحدد
حسب توصية ServBay، انقل الملفات الثلاثة إلى المسار
/Applications/ServBay/ssl/private/tls-certs/servbay.demo/
. إذا لم يكن مجلدservbay.demo
موجودًا أنشئه أولًا.sh# لإنشاء المجلد إذا لم يكن موجودًا mkdir -p /Applications/ServBay/ssl/private/tls-certs/servbay.demo/ # نقل الملفات mv servbay.demo.key /Applications/ServBay/ssl/private/tls-certs/servbay.demo/ mv servbay.demo.crt /Applications/ServBay/ssl/private/tls-certs/servbay.demo/ # ملف CSR عادة لا يُستخدم لاحقًا، لكنه يمكن نقله لأغراض الأرشفة أو التوثيق mv servbay.demo.csr /Applications/ServBay/ssl/private/tls-certs/servbay.demo/
1
2
3
4
5
6
7
8/Applications/ServBay/ssl/
: مجلد ServBay الافتراضي لتخزين ملفات SSL.private/tls-certs/
: بنية فرعية موصى بها لملفات شهادات SSL/TLS.servbay.demo/
: مجلد خاص بكل نطاق لتسهيل الإدارة.
فتح واجهة إدارة ServBay
افتح برنامج ServBay وادخل إلى واجهة الإدارة.
إضافة أو تعديل إعدادات الموقع
من تبويب المواقع (Websites)، إذا لم يكن إعداد
servbay.demo
موجودًا، اختر إضافة موقع (Add Website). وإن كان موجودًا حرّر الإعدادات الخاصة به.إعداد SSL/HTTPS
ضمن إعدادات الموقع، ابحث عن خيار SSL/HTTPS أو ما يماثله.
اختيار مصدر الشهادة "مخصص" (Custom)
من خيارات الشهادة، حدد Custom (شهادة مخصصة).
تحديد مسارات ملفات الشهادة
في الحقول التي تظهر، أدخل مسارات الملفات كالتالي:
- Certificate Key File (ملف المفتاح الخاص):
/Applications/ServBay/ssl/private/tls-certs/servbay.demo/servbay.demo.key
- Certificate File (ملف الشهادة):
/Applications/ServBay/ssl/private/tls-certs/servbay.demo/servbay.demo.crt
- Certificate Key File (ملف المفتاح الخاص):
تحديد النطاق
تأكد من أن حقل Domain (النطاق) هو
servbay.demo
.حفظ وتطبيق التعديلات
احفظ الإعدادات. سيطلب منك ServBay تطبيق التغييرات (وقد يضطر لإعادة تشغيل خوادم الويب كـ Caddy أو Nginx). وافق على إتمام العملية.
(توضيح الصورة: إعداد مسار شهادة SSL مخصصة في واجهة إدارة ServBay)
التحقق من إعداد HTTPS
بعد ضبط الإعدادات، يمكنك التحقق من عمل الإعداد عبر زيارة https://servbay.demo/
في متصفحك.
نظرًا لكونك تستخدم شهادة موقعة ذاتيًا وليست من CA عامة يثق بها النظام أو المتصفح، سيعرض المتصفح تحذير أمان بأن الشهادة ليست موثوقة وقد تظهر رسالة عن وجود "خطر على الخصوصية". هذا أمر متوقع.
(توضيح الصورة: ظهور تحذير المتصفح عند زيارة موقع يستخدم شهادة موقعة ذاتيًا)
بإمكانك تجاوز التحذير ومواصلة التصفح (عادة يوجد خيار "متقدم" أو "تابع على مسؤوليتك")، أو لتفادي ظهور التحذير باستمرار يمكنك إضافة هذه الشهادة الموقعة ذاتيًا لمخزن الثقة في نظام التشغيل لديك.
(توضيح الصورة: عرض تفاصيل الشهادة الموقعة ذاتيًا في المتصفح)
من خلال عرض تفاصيل الشهادة يمكنك التأكد أن المتصفح يحمّل بالفعل شهادة servbay.demo
التي أعددتها.
ملاحظات هامة
- حماية المفتاح الخاص: ملف المفتاح الخاص (
.key
) حساس للغاية ويجب حفظه بشكل آمن وعدم مشاركته. احرص على أن تكون صلاحيات الوصول في بيئة التطوير المحلي محصورة لمستخدم ServBay فقط. - مسارات الملفات: تحقق دائمًا من أن المسارات المحددة في إعدادات ServBay كاملة وصحيحة.
- تطابق النطاق: يجب أن يطابق اسم النطاق الموجود في حقل Common Name (CN) أثناء إنشاء الشهادة، نفس اسم النطاق الذي حددته في إعدادات الموقع ضمن ServBay؛ وإلا ستظهر أخطاء "عدم تطابق اسم النطاق" في المتصفح.
- مدة صلاحية الشهادة: مدة صلاحية الشهادة حسب ما تحدده عند الإنشاء (
-days
). بعد انتهاء الصلاحية يجب عليك إعادة إنشاء الشهادة وإعادة ضبطها في الإعدادات.
مواضيع ذات صلة وحلول بديلة
رغم أن الشهادة الموقعة ذاتيًا مناسبة لاختبارات HTTPS محلية، إذا أردت تجربة أقرب للواقع كما لو تستخدم شهادة من CA عامة، يوفر ServBay حلولًا أخرى:
- الدالة User CA في ServBay: يتيح ServBay إنشاء CA خاص بك وإضافته إلى مخزن الثقة في نظامك. بعدها تستخدم هذا CA لتوقيع شهادات مواقعك المحلية، لتصبح موثوقة على مستوى النظام والمتصفح، ما يلغي تحذيرات المتصفح. هذا مفيد مثلًا لاختبار دعم OAuth أو Webhooks أو أي سيناريو يتطلب ثقة حقيقية في الشهادات.
- الدالة Public CA في ServBay: يوفر ServBay أيضًا إمكانية إنشاء شهادات معتمدة نطاقيًا ثم تهيئة الثقة تلقائيًا في النظام.
هذه البدائل أسرع وأكثر كفاءة من إنشاء الشهادات يدويًا، خاصة عند إدارة عدة مواقع محلية. راجع وثائق ServBay لمزيد من التفاصيل حول هذه المزايا.
الأسئلة الشائعة (FAQ)
- س: أنشأت الشهادة لكن المتصفح ما زال يعرض "غير آمن"، لماذا؟
- ج: الشهادة الموقعة ذاتيًا ليست صادرة عن CA عام موثوق، لذلك سيُظهر المتصفح التحذير. لحل ذلك أضف الشهادة (أو CA الذي أنشأها مثل ServBay User CA) إلى مخزن الثقة في نظامك.
- س: هل يمكنني استخدام شهادة RSA؟
- ج: نعم، يدعم OpenSSL إنشاء شهادات RSA. يمكنك استخدام الأمر
openssl genrsa -out servbay.demo.key 2048
ثم متابعة إنشاء CSR والشهادة بعدها. لكننا ننصح باستخدام ECC للأداء الأفضل.
- ج: نعم، يدعم OpenSSL إنشاء شهادات RSA. يمكنك استخدام الأمر
- س: كيف أضيف الشهادة الموقعة ذاتيًا إلى مخزن الثقة في macOS؟
- ج: افتح تطبيق "Keychain Access" (الوصول إلى سلسلة المفاتيح)، واختر "النظام" أو "تسجيل الدخول". اسحب ملف
.crt
إلى التطبيق. انقر مزدوجًا على الشهادة المضافة، وضمن "الثقة" اجعل خيار "SSL" على "دائمًا موثوق". أغلق النافذة وأدخل كلمة المرور عند الطلب، ثم أعد تشغيل المتصفح.
- ج: افتح تطبيق "Keychain Access" (الوصول إلى سلسلة المفاتيح)، واختر "النظام" أو "تسجيل الدخول". اسحب ملف
الخلاصة
بعد اتباعك لهذا الدليل، أصبحت قادرًا على إنشاء شهادة SSL موقعة ذاتيًا عبر OpenSSL وتهيئتها في بيئة مواقعك المحلية باستخدام ServBay. رغم أن الشهادات الموقعة ذاتيًا مخصصة للاختبارات والتطوير فقط، إلا أنها خطوة هامة لفهم عمل HTTPS وتفعيل الاتصال الآمن محليًا. للحصول على سهولة أكبر في إدارة الثقة المحلية، ننصح باستكشاف مزايا User CA و Public CA مع ServBay. نتمنى أن تساهم هذه الخطوات في جعل تطوير مواقعك أكثر أمانًا وكفاءة.