إعداد SSL لأي موقع على الويب يشكل تحديًا. يكافأ زوار الموقع ومتصفحو الويب ومحركات البحث المواقع التي تكون آمنة بشكل صحيح باستخدام طبقة المقابس الآمنة (SSL). في السابق، كان هذا العمل يتضمن شراء وتثبيت وتكوين شهادة SSL. ولكن مع Cloudflare SSL، يمكنك إكمال عملية تكوين SSL ببضع نقرات فقط!
في هذا المقال، ستتعلم كيفية تكوين موقعك باستخدام تشفير SSL عبر Cloudflare. لذا اعمل على تأمين اتصالات SSL مشفرة من البداية إلى النهاية!
المتطلبات المسبقة
لمتابعة هذا البرنامج التعليمي، هناك بعض المتطلبات الأساسية المطلوبة كما يلي:
- A Cloudflare account with an existing website and domain pointed to the Cloudflare nameservers.
- خادم Ubuntu Linux مع NGINX مثبت ومكون. يوضح هذا البرنامج التعليمي استخدام نظام Linux و NGINX، ولكن نفس العملية العامة تعمل لـ IIS أو Apache.
إعداد Cloudflare Universal SSL: إنها بداية فقط
هناك عدة طرق يمكنك من خلالها تكوين SSL باستخدام Cloudflare. في كثير من الأحيان، أسرع طريقة هي اللجوء إلى Universal SSL. لماذا؟ مع Universal SSL، بدلاً من البحث عن شراء شهادة SSL، يوفر Cloudflare شهادة، ثم يتم استخدام تلك الشهادة لجميع حركة المرور التي تمر عبر Cloudflare.
بعد تمكين Universal SSL، يقدم Cloudflare شهادة SSL صالحة للزوار ومحركات البحث على حد سواء. كما أن Cloudflare لا يتطلب تكوين الخادم أو الموقع لاستخدام تلك الشهادة – رائع!
1. قم بفتح متصفح الويب الخاص بك وقم بتسجيل الدخول إلى لوحة تحكم Cloudflare.
2. انتقل إلى موقعك من قائمة نطاق الحساب، كما هو موضح أدناه.

3. الآن، انقر على SSL/TLS لعرض خيارات التشفير لموقعك.

4. اختر الخيار Flexible لتمكين Universal SSL. بمجرد اختياره، يتم تنفيذ التغيير فورًا. أصبح موقعك الآن مشفرًا بين المتصفح و Cloudflare!

تكوين التشفير الكامل من نهاية إلى نهاية
على الرغم من أن Universal SSL هو خيار رائع لبدء تأمين المواقع، إلا أنه يترك حركة المرور بين الخادم و Cloudflare بدون تأمين. لحسن الحظ، هناك وضعين لتشفير حركة المرور من Cloudflare إلى الخادم، تشفير Full و Full (strict) كل منهما مع متطلبات تثبيت شهادة مختلفة بشكل رئيسي.
- Full – يتطلب وجود شهادة على الخادم، ولكن يمكن أن تكون هذه شهادة ذاتية التوقيع.
- Full (strict) – يجب أن يكون الشهادة الخادم المثبتة على الخادم صالحة.
لنتناول الفرق بين هذه التشفيرات وكيفية إعدادها.
إعداد التشفير بالكامل SSL/TLS مع شهادة ذاتية التوقيع
على عكس SSL الشامل، يتطلب التشفير بالكامل SSL/TLS من خادم الويب لديك تقديم شهادة SSL بشكل صحيح لتشفير حركة المرور من الخادم إلى Cloudflare. هناك العديد من الطرق لتحقيق هذا الأمر، ولكن هذا البرنامج التعليمي يوضح الخطوات في خادم Linux مع NGINX.
إنشاء شهادة ذاتية التوقيع
لتشفير الاتصال بين Cloudflare وخادم المصدر الخاص بك، تحتاج إلى شهادة SSL. نظرًا لأن وضع التشفير بالكامل SSL/TLS لا يتطلب أن تكون الشهادة موثوقة بالكامل، يمكنك استخدام شهادة ذاتية التوقيع للبدء بسرعة.
١. اتصل بـ (SSH) إلى خادم الويب الخاص بك على Linux.
٢. قم بتغيير (cd
) إلى دليل SSL القياسي لـ Ubuntu (/etc/ssl
) عن طريق تشغيل الأمر التالي. cd /etc/ssl

/etc/ssl
directory٣. الآن، قم بتوليد كل من المفاتيح العامة والخاصة لموقعك باستخدام الأمر openssl
. للقيام بذلك، قم بتشغيل الأمر openssl
التالي.
هذا الأمر ينجز بعض الأشياء:
- يطلب (
req
) شهادة X.509 المقدمة بواسطة المعلمة-x509
. - عند الإشارة إليها بواسطة NGINX، يسمح ل NGINX بقراءة الشهادة عند بدء التشغيل باستخدام المعلمة
-nodes
. - يحدد عدد الأيام، التي تكون فيها الشهادة صالحة.
- يقوم بإنشاء مفتاح عام وخاص جديد باستخدام
-newkey
بتشفير RSA بطول 2048 بت (rsa:2048
). - يحفظ المفتاح الخاص في
/etc/ssl/private/nginx-selfsigned.key
باستخدام معامل-keyout
. - يحفظ المفتاح العام في
/etc/ssl/certs/nginx-selfsigned.crt
باستخدام معامل-out
.
إذا كانت أمر
openssl
يعيد خطأ لطيفًا مثلCan't load /root/.rnd into RNG
، فيجب عليك تعليق السطر#RANDFILE = $ENV::HOME/.rnd
في/etc/ssl/openssl.cnf
. جميع الإصدارات الحديثة لـopenssl
تستخدم نظام/dev/urandom
للحصول على بيانات الفوضى العشوائية ولا تحتاج إلى ملف محدد لبذرها.
4. بعد تشغيل الأمر بنجاح، سيطلب منك OpenSSL إدخال بعض المعلومات. فيما يلي جميع القيم المقدمة في هذا البرنامج التعليمي.
- اسم الدولة:
US
- اسم الولاية أو المقاطعة:
Illinois
- اسم المنطقة:
Bloomington
- الاسم التنظيمي:
Test Company, LLC
- اسم الوحدة التنظيمية: <فارغ>
- الاسم الشائع:
test.adamlistek.me
- عنوان البريد الإلكتروني:
[email protected]

5. أخيرًا، قم بالتحقق من وجود الشهادة باستخدام أمر test
. إذا كان أمر test
يعيد (echo $?
) 0
، فإن الملف موجود كما هو متوقع. يمكنك أن ترى في اللقطة الشاشية التالية أن كل أمر قد عاد بقيمة 0.

تكوين NGINX
الآن بعد أن تم إنشاء الشهادة وتخزينها في المواقع الرئيسية لمفتاح /etc/ssl/certs
و /etc/ssl/private
، يجب تكوين NGINX لتطبيق الشهادة وخدمة محتوى الموقع.
تُعرف تكوينات مواقع NGINX في كتل server
التي غالبًا ما تكون موجودة في ملفات الاستضافة الافتراضية. في المثال أدناه، يتم تخزين تكوين الموقع الأساسي في ملف test.adamlistek.me.conf
ويتم تضمينه في ملف nginx.conf
الرئيسي.
1. أولاً، قم بإنشاء ملف استضافة افتراضي جديد باسم اختيارك، ولكن لهذا المثال، قم بتسميته test.adamlistek.me.conf
تحت الدليل /etc/nginx/vhosts.d
. ثم انسخ المحتوى أدناه إلى ملف الاستضافة الافتراضي واحفظه.
استبدل اسم النطاق
test.adamlistek.me
بالخاص بك، حيث أن هذا مجرد لأغراض التوضيح. وإذا لم يكن/etc/nginx/vhosts.d
الموقع موجودًا، قم بإنشاء الدليل عن طريق تشغيلmkdir /etc/nginx/vhosts.d
.
2. تحقق من أن ملف تكوين NGINX الأساسي، /etc/nginx/nginx.conf
، يحتوي على سطر الـ include
الضروري داخل كتلة http
، الموجودة في نهاية الكتلة.
3. أعد تشغيل NGINX باستخدام الأمر التالي إذا كنت تستخدم systemd، وهو نظام ومدير خدمات حديث لنظام Linux.
4. العودة إلى Cloudflare، تحقق من أن الشهادة الذاتية الموقعة تعمل. للقيام بذلك، قم بتعطيل “orange-cloud” لسجل DNS تحت حالة الوكيل، كما هو موضح أدناه. يتم تعطيل خيار “orange-cloud” باستثناء Cloudflare وتقديم الطلبات مباشرة من خادم الويب.

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

6. في النهاية، قم بتمكين تشفير TLS/SSL الكامل على Cloudflare. للقيام بذلك، قم بإعادة تمكين حالة وكيل Cloudflare “orange-cloud” على سجل DNS الذي قمت بتعطيله مسبقًا. ثم انتقل إلى علامة SSL/TLS وانقر على زر الاختيار Full كما هو موضح أدناه.

إنشاء شهادات الأصل لتشفير TLS/SSL الكامل (الصارم)
وضع التشفير الكامل لا يضمن أن الشهادة التي يقدمها خادم الويب تحتوي على سلسلة شهادات صالحة فعليًا. لذا، انتقل بدلاً من ذلك مع التشفير غير الصارم، وسوف تقبل Cloudflare أي شهادة يقدمها الخادم.
تقدم Cloudflare القدرة على إنشاء شهادة TLS مجانية لتأمين اتصال الخادم الأصلي الخاص بك. ولكن هناك عيوبان في استخدام شهادة المصدر المقدمة من قبل Cloudflare. الأولى هي أنه يتعين عليك إنشاء الشهادة وتثبيتها يدويًا. الثانية هي أن الشهادة تبدو مثل شهادة موقعة ذاتيًا لا يثق فيها أي متصفح غير Cloudflare.
من الممكن أن يتمتع توليد الشهادة تلقائيًا باستخدام واجهة برمجة التطبيقات “Origin CA Create Certificate API”، ولكن هذا خارج نطاق هذا البرنامج التعليمي.
1. انتقل إلى الخادم الأصلي من خلال الانتقال إلى علامة SSL/TLS —> Original Server، كما هو موضح أدناه، وانقر على زر Create Certificate.

2. كما يمكنك رؤية أدناه، فإن الخيارات الافتراضية مُعينة بالفعل لإنشاء شهادة واسعة النطاق للنطاق مع صلاحية تبلغ 15 عامًا – رائع! لذا اترك الخيارات الافتراضية وقم بإنشاء الشهادة بالنقر فوق الزر إنشاء في الزاوية السفلية اليمنى من الصفحة.
A wildcard certificate, shown as
*.domain.com
, means that any subdomain will also be covered by this certificate including www.

3. أضف الشهادة التي تم إنشاؤها حديثًا إلى نظام Linux الخاص بك عن طريق حفظ المفاتيح الخاصة والعامة أولاً باستخدام محرر النصوص GNU nano. نظرًا لوجود مفتاحين للحفظ، ستحتاج إلى حفظ ملفات المفاتيح واحد تلو الآخر.
تأكد من حفظ المفتاح الخاص لأنه متاح فقط في الوقت الذي تم فيه إنشاء الشهادة الأصلية. إذا فقدت هذا المفتاح عن طريق الخطأ، فقم بإلغاء الشهادة وإصدار شهادة جديدة.
افتح نافذة الطرفية، ثم قم بإنشاء وفتح ملف المفتاح العام (nginx-test.adamlistek.me.crt
) في nano عن طريق تشغيل الأمر الأول أدناه.
بعد ذلك، عد إلى Cloudflare وانسخ مفتاح الشهادة الأصلية (المفتاح العام) بالنقر على الخيار انقر للنسخ، كما هو موضح أدناه. ثم الصق (Ctrl+U) المفتاح العام الذي نسخته في الملف المفتوح في nano. احفظ التغييرات (Ctrl+O) واخرج (Ctrl+X) من nano.
بعد حفظ ملف المفتاح العام، كرر نفس العملية بدءًا من إنشاء ملف المفتاح، ونسخ المفتاح من Cloudfare، وحفظه في ملف المفتاح. ولكن هذه المرة تقوم بإنشاء ملف المفتاح الخاص (nginx-test.adamlistek.me.key
).

4. الآن بعد أن قمت بإنشاء المفاتيح العامة والخاصة، قم بتوجيه NGINX إلى مكان الشهادات. افعل ذلك عن طريق تعديل ملف التكوين test.adamlistek.me.conf
بالسطور التالية، معدلة لدعم نطاقك.
5. لتطبيق الشهادات الجديدة، أعد تشغيل NGINX باستخدام الأمر التالي.
6. الآن عودًا إلى علامة SSL/TLS في Cloudflare، قم بتحديث وضع التشفير SSL/TLS بالنقر على Full (strict)، كما ترى أدناه.

تمكين التشفير SSL/TLS الكامل (strict) مع LetsEncrypt
أكبر عيب في استخدام شهادة أصل Cloudflare هو أنها معتمدة فقط من قبل Cloudflare. فلو كنت بحاجة إلى شهادة معتمدة بالكامل من قبل المتصفح، سواء كانت كبديل أو لمزيد من التحكم، فإن LetsEncrypt توفر القدرة على إنشاء شهادة صحيحة.
على الرغم من أنه يمكنك استخدام أي شهادة صالحة، إلا أن LetsEncrypt هي اختيار شائع لإنشاء شهادة صالحة. هناك عدة عملاء LetsEncrypt متاحة، ولكن هذا البرنامج التعليمي يوضح العميل acme.sh.
بما أنك بالفعل على Cloudflare، فإن أحد أفضل الطرق لتوفير DNS مع LetsEncrypt هو عبر الخيار DNS.
1. أولاً، افتح الطرفية الخاصة بك وقم بتثبيت acme.sh عبر الأمر curl
.

2. الخطوة التالية هي إنشاء أو تعديل ملف account.conf
الموجود في دليل التثبيت لإضافة مفاتيح API Cloudflare المحفوظة. يمكن العثور على هذه المفاتيح في قسم الملف الشخصي —> رموز API في لوحة التحكم الخاصة بـ Cloudflare.
على الرغم من أنه يمكنك إنشاء رمز محدد بأذونات محددة ، يُفضل في هذا الدرس استخدام المفتاح العام الرئيسي بدلاً من ذلك ، كما هو موضح أدناه.
3. قم بإنشاء الشهادة عبر الأمر التالي. لاحظ أن الأمر أدناه يخبر عميل acme.sh
باستخدام خدمة Cloudflare (dns_cf
) للتحقق (--dns
) من ملكية الشهادة. ثم يحدد وقت الانتظار (--dnsslep
) إلى 20 ثانية قبل إصدار (--issue
) الشهادة للنطاق (-d
) test.adamlistek.me
.
عند اكتمال الأمر ، سترى أدناه المسارات التي يمكنك من خلالها العثور على الشهادة ومفتاح الشهادة وشهادة السلطة الشهادة الفرعية وشهادات السلسلة الكاملة.

4. مثل السابق ، قم بتعديل تكوين موقع NGINX لتغيير موقع ssl_certificate
و ssl_certificate_key
. تأكد من استبدال /home/user
بموقع تثبيت acme.sh الخاص بك.
5. قم بتطبيق التكوين الجديد عن طريق إعادة تشغيل NGINX بالأمر التالي.
6. في النهاية ، قم بتحديث وضع التشفير SSL/TLS الخاص بك في Cloudflare عن طريق الانتقال إلى علامة SSL/TLS ، ثم انقر على Full (strict).

الختام
خلال هذا البرنامج التعليمي، لقد تعلمت كيفية تأمين موقعك باستخدام خيارات SSL/TLS المقدمة من Cloudflare المختلفة. إضافة LetsEncrypt إلى تكوين SSL الخاص بـ Cloudflare يضيف خيار شهادة أصلية مرنة ومُدارة من قبل المستخدم أيضًا!
مع المعرفة بالخيارات المختلفة لتأمين اتصال زائر الموقع، هل ستعمل على تحقيق اتصال آمن بشكل كامل إلى خادمك باستخدام SSL من Cloudflare؟