SSL_connect returned=1 errno=0 peeraddr=162.243.189.2:443 state=error: فشل التحقق من الشهادة (عدم تطابق اسم المضيف)

حسنًا، لقد أضفت binding.pry إلى بداية ssl_socket_connect وما أراه عند محاولة استخدام هذه الإعدادات هو:

→ DISCOURSE_USE_S3=true DISCOURSE_S3_REGION=ap-singapore-1 DISCOURSE_S3_ENDPOINT=https://axhjdarc4cuy.compat.objectstorage.ap-singapore-1.oraclecloud.com DISCOURSE_S3_ACCESS_KEY_ID=foo DISCOURSE_S3_SECRET_ACCESS_KEY=bar DISCOURSE_S3_BUCKET=bucketname bin/rails c
Loading development environment (Rails 7.0.7)
[1] pry(main)> s3 = S3Helper.build_from_config; s3.list

From: /home/michael/.rvm/gems/ruby-3.2.2@discourse/gems/net-protocol-0.2.2/lib/net/protocol.rb:42 Net::Protocol#ssl_socket_connect:

    40: def ssl_socket_connect(s, timeout)
    41:   binding.pry
 => 42:   if timeout
    43:     while true
    44:       raise Net::OpenTimeout if timeout <= 0
    45:       start = Process.clock_gettime Process::CLOCK_MONOTONIC
    46:       # to_io is required because SSLSocket doesn't have wait_readable yet
    47:       case s.connect_nonblock(exception: false)
    48:       when :wait_readable; s.to_io.wait_readable(timeout)
    49:       when :wait_writable; s.to_io.wait_writable(timeout)
    50:       else; break
    51:       end
    52:       timeout -= Process.clock_gettime(Process::CLOCK_MONOTONIC) - start
    53:     end
    54:   else
    55:     s.connect
    56:   end
    57: end

[1] pry(#<Net::HTTP>> s.hostname
=> "bucketname.axhjdarc4cuy.compat.objectstorage.ap-singapore-1.oraclecloud.com"

إذًا، اسم المضيف الفعلي الذي يتم الاتصال به هو bucketname.axhjdarc4cuy.compat.objectstorage.ap-singapore-1.oraclecloud.com، والذي لا يتطابق مع *.compat.objectstorage.ap-singapore-1.oraclecloud.com، لذا فإن الخطأ صحيح.

للأسف، لا تدعم OCI هذا النمط من الوصول:

استخدم الوصول المستند إلى المسار في تطبيقك. لا يتم دعم الوصول بنمط المضيف الافتراضي (الوصول إلى حاوية كـ {bucketnamespace}.compat.objectstorage.{region}.oraclecloud.com [sic]).

على العكس من ذلك، يدعم Discourse فقط الوصول بنمط المضيف الافتراضي ({bucketname}.{namespace}.compat.objectstorage.{region}.oraclecloud.com).

لقد أزلنا الإعداد الذي ربما كان سيجعله يعمل منذ فترة لأنه لم يكن مدعومًا بشكل جيد (انظر رسالة الالتزام).

جعل هذا يعمل لن يكون بسيطًا وسيتطلب تطويرًا واختبارًا معقدًا لإضافة هذا الدعم.

هنا تنين.

(xref: S3 Path Style Access)

4 إعجابات