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

Chris Palmer
Chris Palmer

توفر هذه الصفحة إرشادات لإعداد HTTPS على خوادمك، بما في ذلك الخطوات التالية:

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

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

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

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

للبدء، عليك إنشاء زوج مفاتيح RSA بحجم 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 إلى هيئة إصدار شهادات

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

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

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

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

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

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

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

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

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

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

إذا كنت تستخدم عناوين IP مختلفة لكل اسم مضيف، يمكنك إتاحة استخدام بروتوكول HTTP وHTTPS لجميع البرامج. ومع ذلك، تستخدم معظم مشغلي المواقع الإلكترونية استضافة افتراضية قائمة على الاسم للحفاظ على عناوين IP ولأنها أكثر ملاءمة بشكل عام.

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

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

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

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

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

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

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

إنّ اتّباع الروابط المستندة إلى HTTP المؤدية إلى صفحات أخرى على موقعك الإلكتروني يمكن أيضًا أن يخفّض مستوى تجربة المستخدم من HTTPS إلى HTTP. لحلّ هذه المشكلة، اجعل عناوين 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 المتعلقة بالبروتوكول. إذا لم تكن متأكّدًا من قدرتك على نشر 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.

لتفعيل آلية 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 لا يقلل من مرات ظهور الإعلان. مع ذلك، بسبب مخاوف تتعلّق بأمان المحتوى المختلط، لا يعمل <iframe> HTTP على صفحة HTTPS. لن يتمكّن مشغِّلو المواقع الإلكترونية من نقل البيانات إلى بروتوكول HTTPS بدون خسارة أرباح الإعلانات إلى أن ينشر المعلنون هذه البروتوكول عبر HTTPS، ولكن لن يكون لدى المعلنين دافع سوى لنشر هذا البروتوكول إلى أن ينتقل مشغّلو المواقع الإلكترونية إلى بروتوكول HTTPS.

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