لقد قمت للتو بإعداد خادم Discourse وبدأت اختباره، وهو حتى الآن رائع. لدي مشكلة حيث يفشل Onebox في العمل بسبب ما أعتقد أنه فلتر فحص SSL يفشل في التحقق باستخدام مكتبة excon. لقد قمت بتنزيل شهادة الجذر المخصصة وأضفتها إلى /etc/ssl/certs على المضيف، وحتى داخل الحاوية (للاختبار)، دون جدوى. لا يزال يظهر الخطأ التالي في /log/rails/production.log في كل مرة ألصق فيها رابطاً للتضمين.
فشل Onebox [رابط يوتيوب] SSL_connect returned=1 errno=0 state=error: فشل التحقق من الشهادة (تعذر الحصول على جهة إصدار محلية للشهادة) (OpenSSL::SSL::SSLError) تعذر التحقق من الشهادة.
يُشار إلى تغيير إعدادات excon الافتراضية لتوجيهها إلى مسار SSL مختلف، لكنني غير متأكد من كيفية القيام بذلك بأمان مع السماح لـ Discourse بالتحديث. هل يمكن لأي شخص تقديم نصيحة حول كيفية التأكد من أن شهادة الجذر المخصصة تُعتبر صالحة داخل excon؟ هل هناك أمر rails -r exec يمكنني إضافته إلى app.yml؟
يبدو أنه افتراضيًا يحتوي excon على حزمة شهادات خاصة به، ولكن نظرًا لأن أشخاصًا آخرين واجهوا مشكلات مماثلة، فقد أضاف القدرة على تكوينها في البيئة؟ وسيستخدم شهادة النظام إذا كانت الشهادة مُعدّة بشكل صحيح.
قد يحتاج إلى رابط التجزئة للعمل. هل يمكنك تجربة ما يلي ومعرفة ما إذا كان يحل المشكلة؟
قمت بتعيين متغير البيئة وإنشاء الهاش، ولم أعد أرى خطأ SSL ظاهرًا الآن، لكن الـ onebox لا يزال لا يفعل أي شيء. لا أعرف ما إذا كان لدى جيف أي نصائح حول ما قد أكون أفعله بشكل خاطئ؟ @codinghorror.
أنا قلق من أن إجراء تغييرات داخل الحاوية سيجعلها تُدمر بمجرد إعادة البناء، لذا لست متأكدًا مما هو أفضل نهج هنا.
قد يكون ذاكرة التخزين المؤقت قد احتفظت بالفشل، لكن دعنا نختبر شيئًا واحدًا في كل مرة.
لا يجب أن تحتاج إلى إضافة متغير البيئة، لكن يمكنك التحقق مما إذا كان إضافة الشهادة قد نجح من خلال القيام، على سبيل المثال، بما يلي:
root:~# /var/discourse/launcher enter app
root@app:/var/www/discourse# rails console
[1] pry(main)> Net::HTTP.get URI 'https://meta.discourse.org/about.json'
إذا حصلت على نتيجة (ولم تكن قد حصلت عليها من قبل)، فهذا يعني أن الشهادة مُثبّتة بشكل صحيح. بعد ذلك، يمكنك إضافة أوامر إلى تعريف الحاوية لتثبيت هذه الشهادة في كل إعادة بناء لضمان استمراريتها.
في الواقع، أظن أنني عرفت المشكلة الآن. أعتقد أنها عبارة عن مطالبة مصادقة مرتبطة بفلتر الشركة. لقد قمت باستدعاء Net::HTTP.get في وحدة التحكم باستخدام رابط تضمين يوتيوب (YouTube oembed) لاسترجاع ملف JSON الخاص بالتضمين، لكنني حصلت بدلاً من ذلك على مستند HTML للمصادقة. لذا أعتقد أن هذا هو العائق الحالي. شكرًا جزيلًا لك يا مايكل.