تفعيل HTTPS على خوادمك

كريس بالمر
كريس بالمر

الخطوات التي تتناولها هذه المقالة

  1. أنشئ زوج مفاتيح عام/خاص RSA 2048 بت.
  2. أنشئ طلب توقيع شهادة (CSR) يتضمّن مفتاحك العام.
  3. شارِك طلب توقيع الشهادة في خدمة العملاء مع مرجع التصديق لاستلام شهادة نهائية أو سلسلة شهادات.
  4. ثبِّت شهادتك النهائية في مكان لا يمكن الوصول إليه من خلال الويب، مثل /etc/ssl (في نظامَي التشغيل Linux وUnix) أو في أي مكان يتطلبه خادم IIS (نظام التشغيل Windows).

إنشاء المفاتيح وطلبات توقيع الشهادات

يستخدم هذا القسم برنامج سطر الأوامر opensl الذي يأتي مع معظم أنظمة Linux وBSD وMac OS X، لإنشاء مفاتيح خاصة/عامة وCSR.

إنشاء زوج من المفاتيح العامة/الخاصة

لنبدأ بإنشاء زوج مفاتيح RSA بحجم 2,048 بت. والمفتاح الأصغر، مثل 1024 بت، ليس مقاومًا بشكل كافٍ لهجمات التخمين الغاشمة. يُعد المفتاح الأكبر، مثل 4096 بت، أمرًا زائدًا. بمرور الوقت، تزداد أحجام المفاتيح مع انخفاض تكلفة معالجة الكمبيوتر. الرقم 2,048 هو حاليًا المكان المثالي.

الأمر لإنشاء زوج مفاتيح RSA هو:

openssl genrsa -out www.example.com.key 2048

ينتج عن ذلك الناتج التالي:

Generating RSA private key, 2048 bit long modulus
.+++
.......................................................................................+++
e is 65537 (0x10001)

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

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

جارٍ تشغيل الأمر التالي:

openssl req -new -sha256 -key www.example.com.key -out www.example.com.csr

ينتج ما يلي:

You are about to be asked to enter information that will be incorporated
into your certificate request

What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:CA
State or Province Name (full name) [Some-State]:California
Locality Name (for example, city) []:Mountain View
Organization Name (for example, company) [Internet Widgits Pty Ltd]:Example, Inc.
Organizational Unit Name (for example, section) []:Webmaster Help Center Example
Team
Common Name (e.g. server FQDN or YOUR name) []:www.example.com
Email Address []:webmaster@example.com

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:

للتأكد من صحة طلب CSR، قم بتشغيل الأمر التالي:

openssl req -text -in www.example.com.csr -noout

ويجب أن يبدو الرد كما يلي:

Certificate Request:
    Data:
        Version: 0 (0x0)
        Subject: C=CA, ST=California, L=Mountain View, O=Google, Inc.,
OU=Webmaster Help Center Example Team,
CN=www.example.com/emailAddress=webmaster@example.com
        Subject Public Key Info:
            Public Key Algorithm: rsaEncryption
                Public-Key: (2048 bit)
                Modulus:
                    00:ad:fc:58:e0:da:f2:0b:73:51:93:29:a5:d3:9e:
                    f8:f1:14:13:64:cc:e0:bc:be:26:5d:04:e1:58:dc:
                    ...
                Exponent: 65537 (0x10001)
        Attributes:
            a0:00
    Signature Algorithm: sha256WithRSAEncryption
         5f:05:f3:71:d5:f7:b7:b6:dc:17:cc:88:03:b8:87:29:f6:87:
         2f:7f:00:49:08:0a:20:41:0b:70:03:04:7d:94:af:69:3d:f4:
         ...

إرسال طلب خدمة العملاء (CSR) إلى هيئة إصدار شهادات

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

أرسِل طلب خدمة العملاء (CSR) إلى مرجع التصديق واتّبِع تعليماته لاستلام الشهادة النهائية أو سلسلة الشهادات.

تفرض مراجع التصديق المختلفة مبالغ مالية مختلفة مقابل خدمة الكفالة مقابل مفتاحك العام.

هناك أيضًا خيارات لربط مفتاحك بأكثر من اسم نظام أسماء نطاقات واحد، بما في ذلك عدّة أسماء مختلفة (على سبيل المثال، example.com وwww.example.com وexample.net وwww.example.net) أو أسماء "البدل" مثل *.example.com.

على سبيل المثال، يقدّم أحد شهادات CA حاليًا الأسعار التالية:

  • السعر العادي: 16 دولار أمريكي في السنة، يسري على example.com وwww.example.com.
  • حرف البدل: 150 دولار أمريكي في السنة، صالح للنطاق example.com و *.example.com.

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

انسخ الشهادات إلى جميع خوادم الواجهة الأمامية في مكان لا يمكن الوصول إليه من خلال الويب مثل /etc/ssl (Linux وUnix) أو في أي مكان يتطلبه وجود خادم IIS (نظام التشغيل Windows).

تفعيل HTTPS على خوادمك

يُعدّ تفعيل بروتوكول HTTPS على خوادمك خطوة مهمة لتوفير أمان صفحات الويب لديك.

  • استخدم أداة تهيئة خادم Mozilla لإعداد خادمك لدعم HTTPS.
  • اختبر موقعك بانتظام باستخدام اختبار خادم طبقة المقابس الآمنة (SSL) المفيد الذي يوفره Qualys وتأكد من حصولك على حرف A أو A+ على الأقل.

في هذه المرحلة، يجب عليك اتخاذ قرار بالغ الأهمية بشأن العمليات. اختر أحد الخيارات التالية:

  • خصص عنوان IP مميزًا لكل اسم مضيف يعرض خادم الويب المحتوى منه.
  • استخدام الاستضافة الافتراضية المستندة إلى الاسم

إذا كنت تستخدم عناوين IP مختلفة لكل اسم مضيف، يمكنك بسهولة إتاحة كلّ من HTTP وHTTPS لجميع البرامج.

بالمقابل، تستخدم معظم مشغّلي المواقع الإلكترونية استضافة افتراضية قائمة على الاسم للحفاظ على عناوين IP ولأنّها أكثر ملاءمة بشكل عام. والمشكلة مع IE على نظامي التشغيل Windows XP وAndroid الأقدم من الإصدار 2.3 هي أنهم لا يفهمون مؤشر اسم الخادم (SNI)، وهو أمر بالغ الأهمية للاستضافة الافتراضية المستندة إلى اسم HTTPS.

يومًا ما، ونأمل أن يتم قريبًا استبدال البرامج التي لا تدعم إشارة اسم الخادم (SNI) ببرامج حديثة. راقِب سلسلة وكيل المستخدم في سجلّات الطلبات لمعرفة الوقت الذي يتم فيه نقل عدد كافٍ من المستخدمين إلى برامج حديثة. (يمكنك تحديد قيمة حدّ الدفع، أي أقلّ من 5% أو أقلّ من 1%).

إذا لم تتوفّر خدمة HTTPS على خوادمك، فعِّلها الآن (بدون إعادة توجيه HTTP إلى HTTPS، يمكنك الاطّلاع أدناه). اضبط خادم الويب لاستخدام الشهادات التي اشتريتها وثبتها. قد تجد أداة إنشاء الإعدادات السهلة الاستخدام من Mozilla مفيدة لك.

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

والآن، وعلى مدار عمر موقعك الإلكتروني، يمكنك التحقّق من ضبط HTTPS من خلال اختبار خادم طبقة المقابس الآمنة (SSL) السهل من Qualys. يجب أن يحصل موقعك على التقييم A أو A+، ويتعامل مع أي شيء يؤدي إلى انخفاض درجة باعتباره خطأ. (مستوى "أ" اليوم هو "ب" غدًا، لأنّ الهجمات على الخوارزميات والبروتوكولات تتحسن دائمًا.)

جعل عناوين URL داخل الموقع نسبية

الآن وبعد عرض موقعك الإلكتروني على كلّ من HTTP وHTTPS، يجب أن تسير الأمور على أكمل وجه ممكن، بغض النظر عن البروتوكول. من العوامل المهمة استخدام عناوين URL نسبية للروابط داخل الموقع.

تأكَّد من أنّ عناوين URL داخل الموقع وعناوين URL الخارجية لا تتوافق مع البروتوكول، أي احرص على استخدام مسارات نسبية أو استبعد البروتوكول مثل //example.com/something.js.

تظهر مشكلة عند عرض صفحة عبر HTTPS تتضمّن موارد HTTP، تُعرف باسم المحتوى المختلَط. تحذّر المتصفحات المستخدمين من فقدان كل بروتوكول HTTPS. وفي الواقع، في حالة المحتوى المختلَط النشط (النص البرمجي والمكوّنات الإضافية وCSS وإطارات iframe)، لن تحمِّل المتصفحات عادةً المحتوى أو تنفِّذه على الإطلاق، ما يؤدي إلى تعطُّل الصفحة. وتذكر أنه من المقبول تمامًا تضمين موارد HTTPS في صفحة HTTP.

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

وتحدث هذه المشاكل عندما تتضمّن صفحاتك عناوين URL مؤهّلة بالكامل داخل الموقع تستخدم المخطط http://.

الإجراءات غير المُوصى بها
<h1>Welcome To Example.com</h1>
<script src="http://example.com/jquery.js"></script>
<link rel="stylesheet" href="http://assets.example.com/style.css"/>
<img src="http://img.example.com/logo.png"/>;
<p>A <a href="http://example.com/2014/12/24/">new post on cats!</a></p>
تجنَّب استخدام عناوين URL مؤهَّلة بالكامل على الموقع الإلكتروني.

بعبارة أخرى، يجب أن تكون عناوين URL داخل الموقع نسبية قدر الإمكان: سواء كانت ذات صلة بالبروتوكول (لا تتوفر بروتوكول (يفتقر إلى بروتوكول يبدأ بـ //example.com)) أو مرتبطة بالمضيف (بدءًا من المسار فقط، مثل /jquery.js).

الإجراءات التي يُنصح بها
<h1>Welcome To Example.com</h1>
<script src="/jquery.js"></script>
<link rel="stylesheet" href="/assets/style.css"/>
<img src="/images/logo.png"/>;
<p>A <a href="/2014/12/24/">new post on cats!</a></p>
استخدِم عناوين URL نسبية داخل الموقع الإلكتروني.
الإجراءات التي يُنصح بها
<h1>Welcome To Example.com</h1>
<script src="//example.com/jquery.js"></script>
<link rel="stylesheet" href="//assets.example.com/style.css"/>
<img src="//img.example.com/logo.png"/>;
<p>A <a href="//example.com/2014/12/24/">new post on cats!</a></p>
أو استخدِم عناوين URL داخل الموقع متعلّقة بالبروتوكول.
الإجراءات التي يُنصح بها
<h1>Welcome To Example.com</h1>
<script src="/jquery.js"></script>
<link rel="stylesheet" href="/assets/style.css"/>
<img src="/images/logo.png"/>;
<p>A <a href="/2014/12/24/">new post on cats!</a></p>
<p>Check out this <a href="https://foo.com/"><b>other cool site.</b></a></p>
استخدِم عناوين URL التي تستخدم HTTPS لعناوين URL بين المواقع الإلكترونية (إن أمكن ذلك).

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

عند إنشاء روابط إلى مواقع إلكترونية أخرى (بدلاً من تضمين موارد منها)، لا تُغيِّر البروتوكول، لأنّه لا يمكنك التحكّم في طريقة عمل هذه المواقع.

لجعل عملية نقل البيانات أكثر سلاسة للمواقع الإلكترونية الكبيرة، ننصح باستخدام عناوين URL المتعلّقة بالبروتوكول. وإذا لم تكن متأكدًا من إمكانية نشر بروتوكول HTTPS بالكامل حتى الآن، قد يؤدي إجبار موقعك الإلكتروني على استخدام بروتوكول HTTPS إلى جميع الموارد الفرعية إلى نتائج عكسية. من المحتمل أن تكون هناك فترة زمنية يكون فيها HTTPS جديدًا وغريبًا بالنسبة إليك، ويجب أن يستمر موقع HTTP في العمل على النحو المعتاد. بمرور الوقت، عليك إكمال عملية نقل البيانات وتأمينها باستخدام بروتوكول HTTPS (يُرجى الاطّلاع على القسمَين التاليَين).

إذا كان موقعك الإلكتروني يعتمد على نصوص برمجية أو صور أو موارد أخرى تعرضها جهات خارجية، مثل شبكة توصيل المحتوى (CDN) أو jquery.com، لديك خيارَان:

  • استخدِم عناوين URL متعلقة بالبروتوكول لهذه الموارد. إذا كانت الجهة الخارجية لا تقدّم بروتوكول HTTPS، اطلب منها ذلك. ومعظمها تفعل ذلك بالفعل، بما في ذلك jquery.com.
  • عرض الموارد من خادم تتحكم فيه ويوفر كلاً من HTTP وHTTPS. وغالبًا ما تكون هذه فكرة جيدة، لأنّه بذلك يمكنك التحكّم بشكل أفضل في مظهر موقعك الإلكتروني وأدائه وأمانه. بالإضافة إلى ذلك، ليس عليك الوثوق في طرف ثالث، وهذا أمر لطيف دائمًا.

إعادة توجيه HTTP إلى HTTPS

يجب وضع رابط أساسي في أعلى صفحتك لإبلاغ محركات البحث بأنّ بروتوكول HTTPS هو أفضل طريقة للوصول إلى موقعك الإلكتروني.

يمكنك ضبط علامات <link rel="canonical" href="https://…"/> في صفحاتك. يساعد ذلك محركات البحث في تحديد أفضل طريقة للوصول إلى موقعك الإلكتروني.

تفعيل "الأمان المشدَّد لنقل البيانات" وملفات تعريف الارتباط الآمنة

وبذلك، تكون جاهزًا "لتأمين" استخدام HTTPS.

  • استخدام الأمان المشدد لنقل البيانات باستخدام بروتوكول HTTP (HSTS) لتجنب تكلفة إعادة التوجيه 301.
  • ضبط العلامة الآمنة على ملفات تعريف الارتباط دائمًا

أولاً، استخدم الأمان المشدَّد لنقل البيانات لإخبار العملاء بأنه يجب عليهم الاتصال دائمًا بخادمك عبر HTTPS، حتى عند متابعة مرجع http://. يؤدي ذلك إلى التصدّي لهجمات مثل إزالة طبقة المقابس الآمنة، كما أنّه يتجنّب تكلفة إرسال البيانات ذهابًا وإيابًا لـ 301 redirect التي فعّلناها في إعادة توجيه HTTP إلى HTTPS.

تفعيل الأمان المشدَّد لنقل البيانات باستخدام بروتوكول HTTP (HSTS) من خلال ضبط العنوان Strict-Transport-Security تتضمن صفحة HSTS في OWASP روابط إلى تعليمات لبرامج الخادم المتنوعة.

توفر معظم خوادم الويب إمكانية مماثلة لإضافة رؤوس مخصصة.

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

لذلك، عليك تغيير تطبيق الويب لضبط "علامة الأمان" دائمًا على ملفات تعريف الارتباط التي يضبطها. توضح صفحة OWASP هذه كيفية ضبط علامة "الأمان" في العديد من إطارات عمل التطبيقات. يحتوي كل إطار عمل للتطبيق على طريقة لتحديد العلامة.

توفّر معظم خوادم الويب ميزة إعادة التوجيه البسيطة. يمكنك استخدام 301 (Moved Permanently) للإشارة إلى محرّكات البحث والمتصفّحات إلى أنّ نسخة HTTPS هي الصفحة الأساسية، وإعادة توجيه المستخدمين إلى نسخة HTTPS من موقعك الإلكتروني من HTTP.

ترتيب البحث

يستخدم محرّك بحث Google بروتوكول HTTPS كمؤشر إيجابي لجودة البحث. تنشر Google أيضًا دليلاً حول كيفية نقل موقعك الإلكتروني أو نقله أو نقله مع الحفاظ على ترتيبه في نتائج البحث. وتنشر منصة Bing أيضًا إرشادات لمشرفي المواقع.

عروض أداء

عندما يتم ضبط طبقات المحتوى والتطبيق بشكل جيد (يمكنك الاطّلاع على كتب ستيف سودرس للحصول على نصائح رائعة)، تكون المخاوف المتبقية بشأن أداء بروتوكول أمان طبقة النقل (TLS) صغيرة بشكل عام مقارنةً بالتكلفة الإجمالية للتطبيق. بالإضافة إلى ذلك، يمكنك تقليل هذه التكاليف وتحصيلها. (للحصول على نصائح رائعة حول تحسين بروتوكول أمان طبقة النقل (TLS)، يمكنك بشكل عام الاطّلاع على مقالة الاتصال بالشبكات ذات الأداء العالي بواسطة "إيليا غريغوريك". راجِع أيضًا كتاب OpenSSL Cookbook لـ "إيفان ريستيك" وطبقة المقابس الآمنة (SSL) وطبقة النقل الآمنة (TLS) المضادة.

في بعض الحالات، يمكن أن يعمل بروتوكول أمان طبقة النقل (TLS) على تحسين الأداء، ويرجع ذلك غالبًا إلى إتاحة بروتوكول HTTP/2. ألقى "كريس بالمر" محاضرة حول أداء بروتوكول HTTPS وHTTP/2 في مؤتمر Chrome Dev Summit لعام 2014.

عناوين المُحيل

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

  • ويجب نقل المواقع الإلكترونية الأخرى إلى بروتوكول HTTPS. إذا كان بإمكان المواقع الإلكترونية المُحيلة إكمال القسم تفعيل HTTPS على خوادمك من هذا الدليل، يمكنك تغيير الروابط في موقعك الإلكتروني إلى روابطها من http:// إلى https://، أو يمكنك استخدام الروابط المتعلّقة بالبروتوكول.
  • لحل مجموعة متنوعة من المشاكل المتعلقة بعناوين المُحيلين، استخدِم معيار سياسة المُحيل الجديد.

بسبب انتقال محركات البحث إلى HTTPS، من المحتمل أن ترى المزيد من عناوين المُحيل في المستقبل عند النقل إلى HTTPS.

أرباح الإعلانات

تجدر الإشارة إلى أنّ مشغّلي المواقع الإلكترونية الذين يحقّقون الربح من مواقعهم من خلال عرض الإعلانات يريدون التأكّد من أنّ الانتقال إلى بروتوكول HTTPS لا يقلّل من مرات ظهور الإعلان. ولكن بسبب مخاوف متعلّقة بأمان المحتوى، لا تعمل علامة HTTP <iframe> في صفحة HTTPS. نصادف هنا مشكلة معقّدة بشأن إجراءات جماعية: إلى أن ينشر المعلنون بروتوكول HTTPS، لن يتمكّن مشغّلو المواقع الإلكترونية من الانتقال إلى بروتوكول HTTPS بدون خسارة أرباح الإعلانات، ولكن لن يكون لدى المعلنين دافع كبير لنشر بروتوكول HTTPS إلى أن يتم نقل عوامل تشغيل المواقع الإلكترونية إلى بروتوكول HTTPS.

يجب أن يقدّم المعلنون خدمة إعلانات على الأقل من خلال بروتوكول HTTPS (مثلاً من خلال إكمال قسم "تفعيل HTTPS على خوادمك" في هذه الصفحة). كثير من المستخدمين يفعلون ذلك. عليك أن تطلب من المعلنين الذين لا يعرضون HTTPS على الإطلاق البدء على الأقل. يمكنك تأجيل إكمال عملية جعل عناوين URL على الموقع الإلكتروني ذات صلة إلى أن يعمل عدد كافٍ من المعلنين بشكل صحيح.