من المحتمل أن يكون هذا الدليل قديمًا حيث لا يوجد الآن سوى القليل من الأسباب لعدم استخدام شهادة Let’s Encrypt المدمجة التي تعمل ببساطة. راجع أيضًا:
في 2023-04-10، قال @pfaffman: لقد تُرك هذا هنا لأغراض تاريخية في الغالب.
إذًا، هل ترغب في تمكين SSL لإعداد Discourse المستند إلى Docker الخاص بك؟ لنفعل ذلك!
يفترض هذا الدليل أنك استخدمت جميع إعدادات التثبيت القياسية - ملف تكوين حاوية في /var/discourse/containers/app.yml و Docker Discourse مثبت في: /var/discourse
شراء شهادة SSL
انتقل إلى namecheap أو أي مزود آخر لشهادات SSL وقم بشراء شهادة SSL لنطاقك. اتبع جميع الخطوات الموثقة من قبلهم لإنشاء المفتاح الخاص و CSR وفي النهاية الحصول على الشهادة الخاصة بك. لقد استخدمت إعدادات Apache الافتراضية، وستعمل بشكل جيد.
احتفظ بمفتاحك الخاص وشهادتك في مكان آمن.
وضع الشهادة والمفتاح
احصل على شهادة موقعة ومفتاح وضعها في المجلد /var/discourse/shared/standalone/ssl/
المفتاح الخاص هو:
/var/discourse/shared/standalone/ssl/ssl.key
الشهادة هي
/var/discourse/shared/standalone/ssl/ssl.crt
أسماء الملفات حاسمة لا تحيد عنها وإلا فلن يعرف قالب nginx الخاص بك مكان العثور على الشهادة.
ألقِ نظرة على ملف تكوين app.yml الخاص بك لمعرفة مكان تحميل المجلد المشترك.
volumes:
- volume:
host: /var/discourse/shared/standalone
guest: /shared
في الأساس، يجب أن تكون الملفات موجودة في /shared/ssl/ssl.key و /shared/ssl/ssl.crt داخل الحاوية.
لكي يتمكن جميع العملاء من العثور على مسار من شهادتك إلى شهادة جذر موثوقة (أي عدم إظهار أي تحذيرات لمستخدميك)، قد تحتاج إلى تجميع ملفات الشهادة من الموفر الخاص بك كما يلي:
cat "Your PositiveSSL Certificate" "Intermediate CA Certificate" "Intermediate CA Certificate" >> ssl.crt
تكوين NGINX
أضف مرجعًا إلى قالب nginx ssl من ملف التكوين app.yml الخاص بك:
templates:
- "templates/postgres.template.yml"
- "templates/redis.template.yml"
- "templates/web.template.yml"
- "templates/web.ratelimited.template.yml"
- "templates/web.ssl.template.yml"
تكوين حاوية Docker الخاصة بك
أخبر الحاوية الخاصة بك بالاستماع على SSL
expose:
- "80:80"
- "443:443"
تهيئة حاوية Docker الخاصة بك
أعد بناء تطبيقك
./launcher rebuild app
اربح، لقد انتهيت!
استكشاف الأخطاء وإصلاحها
تأكد من قراءة السجلات باستخدام
./launcher logs app
إذا حدث خطأ ما.
كيف يعمل هذا
يقوم القالب بتكوين nginx باستخدام TLSv1.2 و TLSv1.3، ومجموعات تشفير قوية، ورؤوس HSTS، وإعدادات تذكرة الجلسة. يستخدم منافذ إخراج تكوين nginx لحقن تكوين SSL.
تحتوي الصورة على قواعد إعادة توجيه ستقوم بإعادة توجيه أي طلبات على المنفذ 80 إلى https://DISCOURSE_HOST_NAME، وستقوم أيضًا بإعادة توجيه الطلبات الخاصة بأسماء المضيفين الأخرى على المنفذ 443 إلى اسم المضيف القانوني.
تخصيص هذا الإعداد سهل للغاية، راجع:
يمكنك عمل نسخة من هذا الملف وتعديل القالب حسب الحاجة.
تتمثل ميزة استخدام القوالب والمنافذ هنا في أننا نحصل على الاحتفاظ بكل إعدادات NGINX الموصى بها من Discourse، والتي تتغير بمرور الوقت.
اختبار التكوين الخاص بك
راجع SSL Server Test (Powered by Qualys SSL Labs) للتأكد من أن كل شيء يعمل بشكل صحيح. من الممكن أن تكون بعض مجموعات المتصفحات وأنظمة التشغيل راضية عن https المهيأ جزئيًا، لذا تحقق من ذلك هنا أولاً.