WordPress HTTPS، SSL & TLS - دليل لمسؤولي مواقع الويب

نشرت: 2021-02-01

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

إذا كان المهاجم على نفس الشبكة التي يمكنك اعتراضها وقراءتها حركة مرور HTTP الخاصة بك. يمكنهم أيضًا تعديل طلباتك إلى الخادم ، وكذلك ردود الخادم عليك. يُعرف هذا بهجوم Man-in-the-Middle (MitM). يمكن أن يحدث هذا بسهولة على شبكات WiFi العامة ، مثل تلك الموجودة في ردهات الفنادق والأماكن العامة.

لهذا السبب يجب أن يكون موقع الويب على HTTPS - لذلك لا يمكن اعتراض حركة المرور. تشرح هذه المقالة ماهية HTTPS و SSL و TLS. يشرح أيضًا كيف يمكنك تكوين موقع WordPress الخاص بك للعمل على HTTPS.

جدول المحتويات

  • ما هو SSL و TLS؟
  • ما هو HTTPS؟
    • كيف يعمل HTTPS؟
      • مصافحة TLS
      • المفاتيح العامة والخاصة (زوج المفاتيح)
  • هل أحتاج حقًا إلى HTTPS على موقع الويب الخاص بي على WordPress؟
    • الحصول على شهادة HTTPS TLS (المعروفة أيضًا باسم شهادة SSL)
    • HTTPS على استضافة WordPress المشتركة والمدارة
  • تكوين ووردبريس HTTPS
    • تكوين خادم الويب
    • تكوين عنوان URL لـ WordPress إلى HTTPS
    • فرض TLS على لوحة معلومات WordPress (نصائح إضافية)
  • إضافة بروتوكول HTTP Strict Transport Security (HSTS)
    • تكوين HSTS على خادم الويب
    • TLS Ciphers
    • يعمل My WordPress على HTTPS ، هل هو آمن؟

ما هو SSL و TLS؟

بمجرد أن بدأ الإنترنت في النمو ، أصبح من الواضح أننا بحاجة إلى آلية لنقل المعلومات بشكل آمن بين العميل والخادم دون أن يتمكن أي شخص من التنصت على حركة المرور أو تعديلها - أدخل SSL أو Secure Socket Layer. SSL هو بروتوكول أمان للإنترنت ، طورته Netscape لأول مرة في عام 1995 لحل هذه المشكلة.

وبشكل أكثر تحديدًا ، شرعت طبقة المقابس الآمنة (SSL) في تحقيق ما يلي:

  • التشفير - لتشفير حركة المرور بحيث لا يمكن اعتراضها من قبل طرف ثالث غير مصرح له عن طريق التنصت ،
  • المصادقة - للتأكد من أن الخادم الذي يتحدث إليه العميل هو بالفعل الخادم الذي يقوله ،
  • النزاهة - لضمان عدم تعديل البيانات المرسلة بين العميل والخادم من قبل شخص آخر على طول الطريق.

ومع ذلك ، مع مرور الوقت ، حدد الباحثون الأمنيون عددًا من مشكلات الأمان في SSL. لذلك تم استبدال SSL بـ TLS (بروتوكول أمان طبقة النقل). في حين أن الاختلافات بين SSL و TLS تحت غطاء المحرك جذرية ، يظل الغرض من TLS كما هو إلى حد كبير.

ملاحظة: قد ترى بشكل متكرر استخدام SSL للإشارة إلى TLS. SSL هو بروتوكول قديم ولم يعد آمنًا للاستخدام. ومع ذلك ، نظرًا لشعبيتها ، لا يزال الكثيرون يستخدمون SSL كاختصار ، لكنهم يقصدون TLS .

ما هو HTTPS؟

HTTPS ، أو Hypertext Transfer Protocol Secure هو إصدار آمن من بروتوكول HTTP. يعتمد HTTPS على بروتوكول أمان طبقة النقل (TLS) ، وهو بروتوكول محسن وأكثر أمانًا من البروتوكول المستخدم سابقًا ، وهو طبقة مآخذ التوصيل الآمنة (SSL). يوفر TLS التشفير والمصادقة والتكامل لطلبات واستجابات HTTPS.

يمكنك التفكير في HTTPS على أنه طلبات واستجابات HTTP (وهي نسخة النص العادي من البروتوكول) تمر عبر نفق TLS. المصطلح التقني لهذا هو التغليف . من المناسب ملاحظة أنه يمكن استخدام TLS لتغليف البروتوكولات الأخرى ، وليس HTTP فقط.

يمكنك اكتشاف مواقع الويب التي تستخدم HTTPS إما بالنظر إلى بداية عنوان URL (يبدأ بـ HTTPS) في شريط التنقل بالمستعرض أو عن طريق القفل الأخضر. إذا كنت تتصفح موقعًا إلكترونيًا على HTTP ، فإن المتصفحات تحدده على أنه غير آمن .

تم وضع علامة على مواقع HTTP على أنها غير آمنة

كيف يعمل HTTPS؟

عندما تطلب صفحة ويب باستخدام HTTPS ، يبدأ المتصفح وخادم الويب عملية تسمى مصافحة TLS . مصافحة TLS هي وسيلة للعميل والخادم ليقرروا ما إذا كان ينبغي عليهم التواصل وكيف. أثناء سير مصافحة TLS ، يقوم العميل والخادم بما يلي:

  • تحديد إصدار بروتوكول TLS المراد استخدامه (TLS 1.0 ، 1.2 ، 1.3 ...) ،
  • الاتفاق على مجموعات التشفير (مجموعة من خوارزميات التشفير المستخدمة لإنشاء اتصالات آمنة) لاستخدامها ،
  • مصادقة هوية الخادم ،
  • إنشاء مفاتيح تشفير لاستخدامها بعد اكتمال المصافحة ، من أجل التواصل بشكل آمن.

مصافحة TLS

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

المفاتيح العامة والخاصة (زوج المفاتيح)

تحتوي شهادة TLS (التي يشار إليها غالبًا باسم شهادة SSL) التي يرسلها خادم الويب إلى العميل على المفتاح العام . المفتاح العمومي هو أحد مفتاحين خاصين يسمى keypair . يتكون زوج المفاتيح من مفتاحين ؛ المفتاح العام والمفتاح الخاص . أثناء مشاركة المفتاح العام مع العملاء ، يتم الاحتفاظ بالمفتاح الخاص سرًا على الخادم ولا يتم الكشف عنه مطلقًا. تم تشكيل أزواج المفاتيح معًا.

لزوج المفاتيح العامة والخاصة علاقة مثيرة للاهتمام بشكل خاص - دون معرفة المفتاح الخاص للخادم (هذا سر ولا يعرفه سوى الخادم) ، يمكن للعميل تشفير البيانات باستخدام المفتاح العام للخادم الذي قد يفك تشفيره الخادم باستخدام مفتاحه الخاص .

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

هل أحتاج حقًا إلى HTTPS على موقع الويب الخاص بي على WordPress؟

نعم. بغض النظر عن نوع حركة المرور التي يقدمها موقع الويب الخاص بك (سواء كانت معلومات التعريف الشخصية (PII) أو بيانات حامل البطاقة أو صور القطط) ، فلا يوجد سبب على الإطلاق لعدم تقديمك لموقع الويب الخاص بك عبر HTTPS.

بادئ ذي بدء ، عند تشغيل موقع الويب الخاص بك على HTTP ، يمكن للقراصنة بسهولة سرقة كلمات مرور وبيانات اعتماد WordPress الخاصة بك واختراق موقع الويب الخاص بك. يمكنهم القيام بكل هذا باستخدام الأدوات المتاحة مجانًا.

بصرف النظر عن مزايا الأمان وتجربة مستخدم أفضل ، لا يمكن استخدام بروتوكول HTTP / 2 الجديد ، الذي يوفر العديد من مزايا الأداء ، بدون TLS داخل متصفحات الويب. علاوة على ذلك ، يتمتع HTTPS أيضًا بفوائد تحسين محرك البحث (SEO) وهو جزء من خوارزمية تصنيف بحث Google.

الحصول على شهادة HTTPS TLS (المعروفة أيضًا باسم شهادة SSL)

لإعداد HTTPS ، ستحتاج إلى شهادة TLS إذا كنت تقوم بتعيين كل شيء بنفسك. بينما سترى العشرات من عروض شهادات TLS المدفوعة ، يمكنك الحصول على شهادة TLS مجانية من هيئة تصديق غير ربحية تسمى Let's Encrypt. لا يوجد شيء مختلف تمامًا بين الشهادة التي تحصل عليها من Let's Encrypt مجانًا والشهادة التي تدفع مقابلها.

HTTPS على استضافة WordPress المشتركة والمدارة

يرجى ملاحظة أنه بالنسبة لحلول الاستضافة المُدارة أو المشتركة ، قد يقوم مزود الاستضافة الخاص بك أو لا يتقاضى رسومًا مقابل إضافة HTTPS - إذا كان هذا هو الحال ، قبل صرف الأموال للحصول على شهادة ، اسأل دعم العملاء إذا كان بإمكانك استخدام شهادة Let's Encrypt مع الخدمة بدلا من ذلك. تعد منتديات مجتمع Let's Encrypt أيضًا مصدرًا رائعًا قد يساعدك.

تكوين WordPress HTTPS (فرض TLS عبر موقع WordPress الخاص بك)

هناك عدة طرق لفرض TLS عبر موقع WordPress الخاص بك اعتمادًا على إعدادك. في معظم الحالات ، يمكنك إما تكوين خادم الويب الخاص بك لإعادة توجيه كل حركة مرور HTTP إلى HTTPS (راجع منشئ تكوين SSL الخاص بـ Mozilla.

تحتاج أيضًا إلى تكوين WordPress للاستماع على HTTPS. يمكنك القيام بذلك باستخدام المكونات الإضافية مثل Really Simple SSL أو WP Force SSL. في هذا المثال ، سنرى كيفية القيام بذلك دون استخدام أي مكونات إضافية.

تكوين خادم الويب

انتباه

  • كن حذرًا عند نسخ / لصق تكوينات خادم الويب وتأكد من أنك تعرف بالضبط ما يفعلونه من خلال الرجوع إلى وثائق خادم الويب الخاص بك
  • قد تجد العديد من الأمثلة على الإنترنت باستخدام٪ {HTTP_HOST} (خادم Apache HTTP) ، أو $ http_host (Nginx) - كلاهما قد يجعل موقع الويب الخاص بك عرضة لهجمات رأس مضيف HTTP - بدلاً من ذلك ، اكتب اسم المضيف الخاص بك في التكوين الخاص بك كما رأينا أقل.

إذا كنت تستخدم Nginx ، فيمكنك تكوين ما يلي:

server {
  listen 80;
  server_name example.com www.example.com;
  return 301 https://example.com$request_uri;
}

بدلاً من ذلك ، إذا كنت تستخدم خادم Apache HTTP ، فيمكنك تكوين ما يلي:

<IfModule mod_rewrite.c>
  RewriteEngine On
  RewriteCond %{HTTPS} off
  RewriteRule ^(.*)$ https://www.example.com%{REQUEST_URI} [L,R=301]
<IfModule>

تكوين عنوان URL لـ WordPress إلى HTTPS

بمجرد تمكين HTTPS على خادم الويب الخاص بك ، ستحتاج أيضًا إلى إعداد WordPress. من الناحية النظرية ، يمكنك القيام بذلك يدويًا: ما عليك سوى تغيير عنوان WordPress وعنوان الموقع في الإعدادات العامة لـ WordPress. تحتاج أيضًا إلى إجراء بحث واستبدال في قاعدة البيانات لتغيير جميع روابط موقع الويب الخاص بك من HTTP إلى HTTPS.

[لقطة شاشة]

لذلك على الأرجح أنه من الأسهل بكثير استخدام مكون إضافي لتبديل موقع WordPress الخاص بك إلى HTTPS. يمكنك استخدام مكون إضافي شائع مثل Really Simple SSL لمساعدتك خلال العملية.

فرض TLS على لوحة معلومات WordPress

يكون TLS مفيدًا فقط في حالة استخدامه. على هذا النحو ، تريد التأكد من أن موقع WordPress الخاص بك لا يدعم TLS فحسب ، بل يفرضه أيضًا. نظرًا لأنه يجب دائمًا الوصول إلى لوحة معلومات WordPress عبر HTTPS ، فإن WordPress يتضمن خيار التكوين الخاص FORCE_SSL_ADMIN ، والذي يمكن ضبطه على true في wp-config.php.

define('FORCE_SSL_ADMIN', true);

انتباه

  • اعتمادًا على إعداد موقع الويب الخاص بك وتكوينه (على وجه التحديد ، إذا كنت تستخدم وكيلًا عكسيًا) ، فقد يتسبب ذلك في طلبات إلى لوحة تحكم WordPress للدخول في حلقة إعادة توجيه لا نهائية. لمزيد من المعلومات حول كيفية إصلاح ذلك ، راجع وثائق WordPress واختبر دائمًا تغييراتك في بيئة التدريج قبل طرحها في الإنتاج.
  • بالإضافة إلى ذلك ، تأكد من تكوين TLS بالفعل والعمل بشكل صحيح قبل تعيين FORCE_SSL_ADMIN على true.

نصيحة المكافأة 1: إضافة أمان نقل HTTP صارم (HSTS)

في حين أن إعادة توجيه كل حركة المرور الخاصة بك إلى HTTPS هي خطوة رائعة ، لسوء الحظ ، قد لا يزال لدى المهاجمين بعض الحيل في جعبتهم. سيسمح الهجوم المعروف باسم شريط SSL للمهاجم بخداع المتصفح لتصفح الموقع في HTTP بدلاً من HTTPS الآمن ، مما يؤدي بشكل فعال إلى إلحاق الهزيمة بعملك الشاق تمامًا.

لمزيد من التفاصيل (عالية التقنية) حول هجمات شريط SSL ، شاهد حديث Moxie Marlinspike أدناه.

نتيجة لذلك ، تطبق المتصفحات الآن بروتوكول HTTP Strict Transport Security أو HSTS. HSTS ليس سوى رأس HTTP بسيط يخبر المتصفح أنه لا ينبغي الوصول إلى موقع الويب هذا عبر HTTP ، مما يؤدي إلى هزيمة أي هجمات لشريط SSL.

تكوين HSTS على خادم الويب

انتباه

  • لا تقم بتمكين HSTS حتى تكون واثقًا من استخدام HTTPS - فلن يتمكن أي زائر يتلقى رأس HTTP هذا إلا من عرض موقعك عبر HTTPS
  • قم دائمًا بتعيين سمة max-age - اختياريًا ، يمكنك اختيار تعيين قيمة منخفضة في المرة الأولى التي تنشر فيها HSTS (للحد من أي مشكلات محتملة) وزيادتها عندما تكون أكثر ثقة باستخدام HSTS

إذا كنت تستخدم Nginx ، فيمكنك تكوين ما يلي داخل كتلة الخادم للاستماع على المنفذ 443:

# HSTS (ngx_http_headers_module is required) (63072000 seconds)
add_header Strict-Transport-Security "max-age=63072000" always;

بدلاً من ذلك ، إذا كنت تستخدم خادم Apache HTTP ، فيمكنك تكوين ما يلي ضمن استماع VirtualHost الخاص بك على المنفذ 443:

# HTTP Strict Transport Security (mod_headers is required) 
(63072000 seconds)
Header always set Strict-Transport-Security "max-age=63072000"

نصيحة إضافية 2: تكوين TLS Ciphers

للتأكد من أن نقل البيانات بين المتصفح والخادم آمن ، يتفق الطرفان على الاستفادة مما يعرف بمجموعة التشفير - مزيج من خوارزميات المصادقة والتشفير ورمز مصادقة الرسائل (MAC) - للتفاوض على إعدادات الأمان ، فضلا عن نقل البيانات بشكل آمن.

لسوء الحظ ، فإن العديد من الأصفار القديمة بها ثغرات أمنية وليست آمنة بشكل خاص للاستخدام بعد الآن. في حين أن تحديد الأصفار التي يجب استخدامها هو عمل صعب ، فإن منشئ تكوين Mozilla SSL يجعله قطعة من الكعكة لاختيار مجموعة تشفير TLS التي تناسب احتياجاتك. حيثما أمكن ، حاول استخدام ملفات التعريف الحديثة أو المتوسطة ، ومع ذلك ، بناءً على حالة الاستخدام الخاصة بك ، خاصة إذا كنت بحاجة إلى دعم المتصفحات القديمة أو تلبية المتطلبات التنظيمية والمتطلبات ، فقد تحتاج إلى استخدام تكوينات مجموعة تشفير مختلفة قليلاً.

إذا كنت تستخدم Nginx ، فيمكنك تكوين أصفار TLS التالية (بناءً على ملف التعريف الوسيط لمولد تكوين تكوين طبقة المقابس الآمنة من Mozilla):

 # intermediate configuration
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES25
6-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDH
E-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;
ssl_prefer_server_ciphers off;

بدلاً من ذلك ، إذا كنت تستخدم خادم Apache HTTP ، فأنت تقوم بتكوين أصفار TLS التالية (استنادًا إلى ملف التعريف الوسيط لمولد تكوين Mozilla SSL):

# intermediate configuration
SSLProtocol all -SSLv3 -TLSv1 -TLSv1.1
SSLCipherSuite ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384
SSLHonorCipherOrder off
SSLSessionTickets off

يمكنك أيضًا اختبار درجة تكوين TLS لموقع الويب الخاص بك باستخدام أداة مجانية تسمى SSLabs لمزيد من المعلومات التقنية.

يعمل My WordPress على HTTPS ، هل هو آمن؟

قد تقودك رموز القفل الأخضر والكلمات "آمن" بجوار شريط عنوان المتصفح إلى الاعتقاد بأن HTTPS عبارة عن عصا سحرية تحل جميع مشاكل أمان مواقع الويب. لسوء الحظ ، لم يحدث ذلك. القفل الأخضر في شريط المتصفح

يعد HTTPS جزءًا صغيرًا فقط من أمان WordPress: فهو يسمح للزوار بتصفح موقع الويب الخاص بك عبر اتصال آمن . ومع ذلك ، فهو لا يحمي موقع الويب الخاص بك مثل جدار حماية WordPress ، ولا يجعله أكثر أمانًا. هذا لا يعني أنه أكثر أمانًا من موقع ويب يعمل على HTTP أيضًا. مثل أي دفاعات أمنية أخرى ، يساعد HTTPS في حل جزء من المشكلة.

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

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