[MUSIC]
في المحاضرة السابقة تعلمنا عن HTTPS وكيف يمكنهم إجراء
اتصال آمن بين العميل والخادم.
تعلمنا أيضًا قليلاً عن التشفير،
وهو ما يكفي لفهم كيفية عمل HTTPS.
بالنسبة لنا لتكوين خادم HTTP الخاص بنا،
نحتاج إلى الحصول على مفتاح عام وشهادة.
سنقوم الآن بتكوين خادم الارتباك الخاص بنا لاستخدام HTTPS في هذا التمرين.
لذلك، دعونا المضي قدما، أولا لتوليد المفتاح
والشهادة التي يمكننا استخدامها لخادمنا ومن
ثم تعديل التطبيق السريع لدينا لدعم HTTPS.
للبدء في هذا التمرين، انتقل إلى مجلد خادم الارتباك.
ثم في المحطة الطرفية أو نافذة الأوامر
ثم انتقل إلى مجلد بن داخل مجلد خادم الارتباك.
وفي مجلد bin سترى ملفًا باسم www.
هذا هو المجلد الذي سنقوم فيه بإنشاء مفتاحنا الخاص
ثم قم أيضًا بإنشاء الشهادة
لخادم HTTPS الخاص بنا باستخدام أداة سطر أوامر تسمى OpenSSL.
الآن يتم تثبيت OpenSSL عادة على أجهزة Mac OS بشكل افتراضي.
بالنسبة لأجهزة Windows، قد تحتاج إلى تنزيل OpenSSL وتثبيته بشكل واضح.
الآن لقد قدمت اثنين من الروابط في التعليمات بالنسبة لك للذهاب
وجلب OpenSSL.
لقد قدمت لك أيضًا موقعًا إلكترونيًا حيث يمكنك إنشاء
مفتاح خاص وشهادة موقعة ذاتيًا.
لذلك دعونا نذهب ونلقي نظرة سريعة على ذلك.
إذا كنت تقوم بتشغيل جهاز Windows
وإذا لم يكن لديك OpenSSL مثبتًا بالفعل.
ثم يوفر هذا الرابط ثنائيات
لأوبنسل التي يمكنك تنزيلها وتثبيتها على جهاز الكمبيوتر الخاص بك ويندوز.
لذلك يتم توفير هذا الرابط في تعليمات هذا التمرين.
حتى الذهاب إلى هناك،
وسوف تجد العديد من التنزيلات من طرف ثالث
توزيعات ذات الصلة أوبنسل التي يمكنك تحميلها وتثبيتها على جهاز الكمبيوتر الخاص بك.
لذلك تثبيت واحدة من هذه من أجل
المضي قدما في هذا التمرين إذا لم يكن لديك أوبنسل بالفعل على جهاز الكمبيوتر الخاص بك.
الآن، أيضًا إذا كنت تريد طريقة أخرى
لإنشاء المفتاح الخاص بك والشهادة.
في ما يلي مقال مدونة، وهو رابط قمت بتوفيره بالفعل في التعليمات،
والذي يشرح أيضًا كيفية إعداد جهاز Windows الخاص بك باستخدام
OpenSSL وكذلك إنشاء المفتاح الخاص والشهادة.
حتى المشي من خلال هذه الخطوات لتكوين جهاز الكمبيوتر ويندوز الخاص بك
لتوليد المفتاح الخاص والشهادة.
الآن، إذا كنت لا ترغب في تثبيت OpenSSL، فإليك رابط
لموقع يسمح لك بإنشاء
شهادة SSL موقعة ذاتيًا ومفتاح كما ترى هنا.
لذلك يتم توفير رابط لهذا الموقع أيضا في التعليمات.
لذلك يمكنك استخدام الخادم لإنشاء شهادة سل
ومفتاح لجهاز ويندوز الخاص بك.
لذلك يمكن استخدام أي شخص من هذه الأساليب
لتوليد المفتاح الخاص والشهادة لجهاز ويندوز الخاص بك.
بما أنني أعمل على جهاز OSX،
سأقوم بإنشاء مفتاحي الخاص وشهادة باستخدام OpenSSL.
حتى الذهاب إلى المحطة، اسمحوا لي أن اكتب openssl genrsa
1024، وهذا يعني أنني ذاهب لتوليد مفتاح خاص من حجم 1024.
لذلك أنا ذاهب لوضع هذا في ملف اسمه مفتاح خاص،
وبمجرد أن يتم إنشاء هذا، ثم سنقوم بإنشاء ملف cert.csr المقابلة
لذلك سوف يقول طلب req openssl.
لذلك نحن نطلب شهادة جديدة،
مع private.key المفتاح، وسوف تولد ذلك.
Cert.CSR هنا.
الآن، عندما تقوم بإنشاء cert.csr، سوف يأتي مع بعض الأسئلة
لك لملء.
يمكنك قبول القيم الافتراضية أو
يمكنك ملء قيمك الخاصة إذا اخترت ذلك.
لا يهم حقا لأن هذه الشهادة التي نستخدمها فقط داخل
جهاز الكمبيوتر الخاص بنا لاختبار خادم HTTPS الخاص بنا.
لذلك، اسمحوا لي أن ملء بعض التفاصيل.
سأترك بعض الأشياء فارغة هناك
وهذا من شأنه أن يعمل على ما يرام،
لا يهم حقا ما إذا كنت ملء هذه المعلومات أم لا.
حتى بمجرد القيام بذلك يتم إنشاء cert.csr الخاص بك
ومن ذلك أنها سوف تولد شهادة التوزيع
بحيث أننا سوف اكتب في موجه الأوامر
openssl x509 -req -cert.csr -signkey
private.key -out certificate.pem.
لذلك سيؤدي هذا إلى إنشاء الشهادة
لنا، وهكذا بمجرد إكمال هذه الخطوات،
عندما تنظر إلى المجلد الخاص بك،
سترى أن لديك private.key و
cert.csr و certificate.pem هناك.
سيكون هذا مطلوبًا لتكوين خادم HTTPS الخاص بنا.
لذا، الآن لتكوين خادم HTTPS، دعنا نذهب إلى محررنا.
في المحرر، سنذهب إلى هذا المجلد بن هنا.
وفي مجلد bin، سترى هذا الملف المسمى www.
نظرنا بإيجاز في هذا الملف في واحدة من التدريبات السابقة.
الآن الذهاب إلى هذا الملف نحن ذاهبون الآن
أيضا لاستيراد وحدة هتبس الأساسية لذلك
سنقول هتبس تتطلب هتبس
ونحن سوف تتطلب أيضا وحدة نظام الملفات.
لقد واجهت بالفعل وحدة نظام الملفات
في وقت سابق في أحد التدريبات.
لذلك سنقوم باستيراد كل من هذه.
وبعد ذلك، النزول هنا، سنقوم بتكوين رقم المنفذ الذي
سيتم تشغيل خادم HTTPS الخاص بنا، لذلك سنقول app.set
وسنقول SecPort.
لذلك سنقوم بإعداد متغير هنا يسمى المنفذ الآمن
ثم سأقوم بتهيئة هذا إلى المنفذ 443.
الآن، لماذا أستخدم هذا المنفذ+443؟
في خادم قياسي، إذا كان خادمك يعمل كخادم ويب،
فسيتم تشغيل بروتوكول HTTP عند المنفذ رقم 80 على الخادم الخاص بك.
وسيتم تشغيل HTTP الآمن على المنفذ رقم 443.
الآن أنت عادة لا تريد استخدام تلك المنافذ
المحجوزة في تطبيق تطوير ولكننا نفعل في هذه الدورة.
بدلاً من ذلك، كما رأيت سابقًا،
قمنا بتكوين رقم المنفذ الخاص بنا إلى 3000 حيث يتم تشغيل خادم HTTP الخاص بنا.
لذلك أنا ذاهب لتشغيل خادم هتبس، في المنفذ رقم 3443.
لذا 3000 زائد 443
لذلك هذا هو السبب في أنني أعلن هذا المنفذ الآمن.
كما المنفذ 443، لذلك سيتم تشغيل خادم HTTPS لدينا في المنفذ رقم 443.
ما زلت أقوم بتشغيل خادم HTTP في المنفذ 3000،
لقد أنشأنا بالفعل خادم HTTP هنا في WWW، أو بالأحرى،
يتم إنشاء هذا تلقائيًا بواسطة المولد السريع.
الآن، نظرًا لأن خادم HTTP تم تكوينه بالفعل،
سنقوم الآن بتكوين خادم HTTPS.
لذلك لتكوين خادم HTTPS، مباشرة بعد تكوين خادم HTTP.
الآن السبب في أنني لا يزال تشغيل خادم هتب هو أنه
إذا حصلت على طلب على منفذ خادم هتب ثم،
سيتم إعادة توجيه هذا الطلب إلى خادم هتبس.
لذلك سوف الخادم الخاص بي طلب الخدمة فقط القادمة على منافذ HTTPS.
ولكن إذا كان أي شخص يصل إلى الخادم في منفذ HTTP عن طريق الصدفة،
فسوف أقوم بإعادة توجيه هذا الطلب إلى منفذ HTTPS.
سنفعل ذلك بعد قليل
أولاً، دعنا نقوم بتكوين خادم HTTPS.
لذلك لتكوين خادم HTTPS، هنا،
سأعلن عن بعض الخيارات هنا لخادم HTTPS الخاص بي.
تذكر الآن أنه بالنسبة لخادم HTTPS، نحتاج إلى تكوين المفتاح الخاص
والشهادة التي سيستخدمها خادم HTTPS الخاص بي.
حتى في الخيارات، وأنا ذاهب لتحديد المفتاح
وبعد ذلك سوف تستخدم نظام الملفات وبعد ذلك سأقول، ReadFileSync.
لذلك سوف أقرأ هذا الملف بشكل متزامن حتى أتمكن من إكمال القراءة في الملف
قبل أن أتمكن من تكوين خادم HTTPS الخاص بي.
لذلك أنا ذاهب لقراءة هذا الملف من __dirname.
أنت تعرف بالفعل لماذا أستخدم __dirname من
التمارين السابقة حيث رأينا وحدة النظام الخمسة المستخدمة.
وبعد ذلك، لذلك سأقول __dirname+.
حتى هنا، ونحن توريد المسار إلى private.key.
الآن، تذكر أن هذه www موجودة في مجلد bin.
و private.key هو أيضا في مجلد بن، لذلك
هذا هو السبب في أنني ذاهب إلى القول ديرنام+هذا، لذلك هذا سوف يحدد
إلى نظام الملفات قراءة وحدة أن الملف يجب أن
تقرأ من هذا الدليل بن، من هذا الملف private.key هنا.
الآن أيضا، سوف نقرأ في الشهادة هنا.
لذلك سنقول، شهادة FS.ReadFileSync.
لذلك سوف يقرأ الملف بشكل متزامن مما يعني أنه
سيتم قراءة الملف بالكامل قبل المتابعة إلى تلك الخطوة التالية هنا.
والملف الذي نحتاج إلى قراءته هو أيضًا __dirname+.
وسنقول، /certificate.pem، والتي قمنا بإنشائها في وقت سابق.
ويجب أن يكون ذلك فاصلة، ويجب ألا أضع فاصلة منقوطة هناك،
لأن هذا كائن جافا سكريبت الذي حددناه لديه الخيارات.
لذلك بمجرد أن نحدد كائن JavaScript، دعنا نقوم بتكوين الخادم الآمن.
لذلك سنقول فار سيكوريسيرفر هتبس.
أذكر أنه، الآن، ونحن في طريقنا إلى استخدام هتبس، وبعد ذلك سنقول كريتيسيرفر.
لذلك تذكر أنه بالنسبة لـ HTTP، قمنا بتكوين خادمنا مثل هذا هنا.
لخادم آمن، ونحن في طريقنا إلى خلق ذلك بالقول,
فار Secureserver Https.CreateServer, وبعد
ذلك سوف نقدم الخيارات التي قمنا بتكوين للتو ثم الجزء الثاني هو التطبيق هنا.
لذا فإن SecureReserver الخاص بي
على ما يرام، كما ستكون متاحة لتطبيقي للوصول.
الآن أسفل هنا، أنا ذاهب لتكوين
Secureserver.الاستماع على رقم المنفذ،
Secport.
أذكر أننا هنا فعلنا secPort app.set، لذلك
قمنا بتعيين هذه القيمة هنا إلى رقم المنفذ الآمن.
ثم أسفل هنا، ونحن نقول app.get.
وهذا يعني أن هذه القيمة التي قمنا
بتكوينها في وقت سابق ستكون متاحة
لنا لتكوين منفذ الاستماع لدينا
لخادمنا، app.get SecPort، ومن
ثم توفير، وظيفة رد الاتصال هنا.
وداخل وظيفة رد الاتصال هذه، سنقول،
console.log خادم الاستماع على المنفذ.
دعونا نفعل خادم آمن الاستماع على المنفذ
وبعد ذلك، بمجرد تكوين سيكوريسيرفر،
ثم نحن بحاجة إلى، انظر، سيكوريسيرفر على.
لذلك إذا تلقى SecureServer حدث خطأ،
فسوف نحب OnError، الذي تم تكوينه أدناه، للتعامل مع ذلك.
وبعد ذلك سوف نقول، تأمين.
الاستماع، لذلك إذا تلقيت حدث الاستماع،
ثم سوف ندعو onLiting.
الآن أين يتم تكوين هذه onError و OnLiting؟
إذا كنت تذهب إلى أسفل في التعليمات البرمجية هنا، أسفل هنا.
أنت تحدد هاتين الوظيفتين اللتين تعمل بهما OnError هنا،
ثم وظيفة OnLiting هنا.
لذلك نحن في طريقنا إلى استخدام هاتين الوظيفتين لتكوين الخادم لدينا هنا.
لذلك مع هذه التغييرات،
يتم الآن تكوين الخادم الخاص بي لتشغيل SecureServer في المنفذ رقم 443.
لقد قمنا بالفعل بتكوين خادم HTTP القياسي هنا بالفعل.
حتى مرة واحدة ونحن قد فعلت هذين، ثم، لدينا التحديث المقبل سيكون في ملف app.js.
حتى الذهاب إلى ملف app.js ما سأقوم به هو تكوين
هذا الخادم بحيث سيتم إعادة توجيه أي حركة مرور قادمة إلى المنفذ غير الآمن.
هذا هو المنفذ رقم 3،000، فإنه سيتم إعادة توجيه هذا الطلب إلى المنفذ الآمن.
لذلك للقيام بذلك، اسمحوا لي إعداد الوسيطة مباشرة بعد أن نعلن app.express.
حتى هنا سوف نقول، app.all، مما يعني،
لجميع الطلبات بغض النظر عن المسار في الطلب هو.
طلب خاص قادم، سأقوم بإعادة توجيه ذلك إلى،
لذلك سنقول rec، res، التالي،
ووظيفة معاودة الاتصال التي يتم تعريفها هنا.
وهكذا سنقوم، أعلن وظيفة في الداخل هنا.
وسنقول، إذا req.secure.
بمعنى أنه إذا كان الطلب الوارد بالفعل طلبًا
آمنًا، فكيف نعرف ذلك؟
إذا كان الطلب الوارد بالفعل طلبًا آمنًا،
فسيحمل كائن الطلب هذه العلامة المسماة secure والتي سيتم تعيينها بالفعل إلى true.
إذا لم يكن الطلب الوارد على الإطلاق منفذ آمن ولكن
بدلاً من ذلك يأتي إلى المنفذ غير الآمن، فلن يتم تعيين write.secure.
إذاً، هذا ما أعتني به
إذا كان يأتي إلى ميناء آمن بالفعل، وأنا ذاهب فقط للمضي قدما
دون القيام بأي شيء لأنه يأتي بالفعل إلى ميناء آمن.
حتى أستطيع أن أقول ببساطة، التالي.
خلاف ذلك، سنقول، العودة التالية.
خلاف ذلك, وبالتالي فإن خلاف ذلك سيحدث,
عندما يأتي إلى ميناء غير آمن.
لذلك في هذه الحالة، سأقول res.redirect.
وبالتالي فإن طريقة إعادة التوجيه متاحة،
والتي تعيد توجيه الطلب الوارد إلى عنوان URL آخر.
لذلك، سأقوم بإعادة توجيه هذا الطلب غير الآمن إلى https://.
لذلك أنا إعادة توجيه هذا الطلب إلى اسم req.host.
وبالتالي فإن الطلب يحمل بالفعل اسم المضيف.
لذلك، لأن هذا يأتي إلى نفس الخادم، لذلك
أنا إعادة التوجيه إلى نفس الخادم.
ثم سنقول +،
؛ + app.get.
الآن تذكر أننا قد تكوين بالفعل المنفذ الآمن في app.get هناك.
لذلك سنقول app.get سيكبورت + req.url.
الآن سيحتوي هذا req.url على بقية المسار
باستثناء اسم المضيف ورقم المنفذ.
لذا إذا قلت مضيف محلي: 3000،
فسيتم تغطية
هذا المضيف المحلي: 3000 بالجزء الأول وسيتم إعادة توجيهه إلى المضيف المحلي: 3443 بواسطة هذا التكوين هنا.
وبعد ذلك، والباقي منه، سيحتوي req.url على المسار الفعلي على الخادم.
لذلك، نحن فقط إضافته إلى مسار إعادة التوجيه،
وهذا هو المسار الذي سأقوم بإعادة توجيه رسالة الطلب الواردة إليه.
لذلك بمجرد إعادة توجيه رسالة الطلب الواردة
، سيتم إعادة توجيه رسالة طلبي إلى المنفذ الآمن.
ويمكن تغيير أخير واحد res.redirect،
وسوف نضيف رمز الحالة المكتوب على أنه 307.
307 هنا يمثل أن المورد الهدف موجود مؤقتًا تحت
عنوان URL مختلف.
ويجب ألا يغير وكيل المستخدم طريقة الطلب إذا كان يقوم
بإصلاح إعادة التوجيه التلقائي إلى عنوان URL هذا.
لذا، سأتوقع من وكيل المستخدم إعادة المحاولة
بنفس الطريقة التي استخدموها لنقطة النهاية الأصلية.
هذا كل شيء، أن التغيير الذي أحتاج إلى إجراء في ملف app.js.
لذلك، بعد تغيير app.js، و www،
وأيضا إنشاء المفتاح والشهادة،
يمكننا الآن حفظ التغييرات، والذهاب وبدء الخادم لدينا.
الذهاب إلى المحطة الطرفية أو نافذة الأوامر، تأكد من أنك
مرة أخرى في مجلد ConfusionServer الخاص بك، ثم قم بتشغيل الخادم.
لذلك أنا في المحطة الطرفية كتابة npm البداية.
وسوف يكون الخادم الخاص بك وتشغيله, وتلاحظ أيضا أننا
طباعة هنا قائلا, خادم آمن الاستماع على المنفذ رقم 3443 هنا.
لتمييز الخادم الآمن، انتقل إلى متصفح مثل Chrome هنا.
وبعد ذلك، اسمحوا لي أولا الوصول إلى الخادم الآمن في
لوكالهوست: 3443 وهو المكان الذي يتم فيه تشغيل الخادم الآمن الخاص بي.
ولاحظ أنه عندما أحاول https://localhost3443 في المتصفح،
فإنه سوف يأتي مع هذه الرسالة هنا قائلا، الاتصال الخاص بك ليست خاصة.
من الواضح، لأن الشهادة التي نستخدمها الآن
هي شهادة موقعة ذاتيا.
ولا يتعرف Chrome على ذلك كشهادة صالحة.
ولكن بما أننا نعرف ما نقوم به، فإنه لا بأس بالنسبة لنا
أن نقبل أننا سوف نسمح للمضي قدما إلى هذا الخادم معين.
الآن، سأنصحك بشدة بعدم القيام بذلك على
أي موقع يأتي مع الاقتراح.
ونحن نفعل ذلك على وجه التحديد في هذا التمرين
لأننا نعرف بالضبط أين الخادم، ونحن
نعلم أننا قمنا بتكوين الخادم بشكل صريح بأنفسنا.
ولكن إذا كان أي موقع آخر يأتي مع هذه الرسالة، فإنني
أنصحك بشدة بعدم قبول الاقتراح والمضي قدما في الوصول إلى الخادم.
لذلك يجب عليك العودة إلى الأمان إذا رأيت هذا أو على أي موقع آخر.
ولكن بما أننا نعلم أن هذا هو الخادم الخاص بنا، سأذهب إلى
المضيف المحلي هنا، وبعد ذلك سترى أننا الوصول إلى خادم Express.
وأيضًا ستلاحظ هنا
أن متصفحك يظهر لك أنك تصل إلى خادم غير آمن.
عند النقر على ذلك، سترى هذه الرسالة
هنا تقول أن اتصالك بالموقع غير آمن.
لكننا نعلم أنه بما أننا ندير الخادم بأنفسنا، فلا بأس من القيام بذلك.
إذن هذه هي الطريقة التي ستصل بها إلى خادم HTTPS.
الآن، اسمحوا لي أن أحاول الوصول إلى نفس خادم HTTP ولكن، اسمحوا لي الوصول إلى،
المضيف المحلي القياسي: 3000.
هذا هو المكان الذي يوجد فيه الخادم غير الآمن إلى خادم HTTP العادي قيد التشغيل.
لذلك عندما أحاول الوصول إلى هتب لوكالهوست: 3000،
ثم ترى على الفور أن الخادم الخاص بي سيعيد توجيهي إلى الخادم الآمن.
وبهذه الطريقة، الخادم الخاص بك أن لدينا فقط تكوين
التأكد من أنك سوف دائما الوصول إلى الخادم على منفذ آمن.
يضمن هذا أيضًا حقيقة أنه عندما تقوم بالتبادل،
عند إرسال بيانات الاعتماد الخاصة بك، وما
إلى ذلك، كل تبادل بيانات الاعتماد في رأس الرسالة.
وأيضا عند تسجيل الدخول مع المصادقة المحلية، كل ما يتم
بطريقة آمنة في قناة مشفرة بين العميل والخادم.
لذلك، الآن، قمنا بتكوين خادمنا ليكون خادم HTTPS آمن.
مع هذا، نكمل هذا التمرين.
في هذا التمرين، تعلمنا كيفية تكوين خادم HTTP آمن أو
استخدام بروتوكول HTTPS.
مع هذا، نكمل هذا التمرين.
هذا هو الوقت المناسب بالنسبة لك للقيام git الالتزام مع الرسالة، HTTPS.
[ موسيقى]