OAuth2 中の SSL エラー

このトピック

は閉じられていますが、バージョン 2.4.0.beta8 でも引き続きこの問題に遭遇しています。

これは OAuth2 認証中に発生しています。

Excon::Error::Socket (SSL_connect returned=1 errno=0 state=error: dh key too small (OpenSSL::SSL::SSLError))
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/excon-0.64.0/lib/excon/ssl_socket.rb:125:in `connect_nonblock'

バックトレースの最後の 14 行:

/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/excon-0.64.0/lib/excon/ssl_socket.rb:125:in `connect_nonblock'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/excon-0.64.0/lib/excon/ssl_socket.rb:125:in `initialize'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/excon-0.64.0/lib/excon/connection.rb:455:in `new'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/excon-0.64.0/lib/excon/connection.rb:455:in `socket'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/excon-0.64.0/lib/excon/connection.rb:116:in `request_call'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/excon-0.64.0/lib/excon/middlewares/mock.rb:56:in `request_call'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/excon-0.64.0/lib/excon/middlewares/instrumentor.rb:34:in `request_call'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/excon-0.64.0/lib/excon/middlewares/idempotent.rb:19:in `request_call'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/excon-0.64.0/lib/excon/middlewares/base.rb:22:in `request_call'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/excon-0.64.0/lib/excon/middlewares/base.rb:22:in `request_call'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/excon-0.64.0/lib/excon/connection.rb:270:in `request'
/var/www/discourse/plugins/discourse-oauth2-basic/plugin.rb:127:in `fetch_user_details'
/var/www/discourse/plugins/discourse-oauth2-basic/plugin.rb:164:in `after_authenticate'
/var/www/discourse/app/controllers/users/omniauth_callbacks_controller.rb:37:in `complete'

よろしくお願いいたします、

Julian

この場合、メールには影響しませんが、リンクされたトピックで私が説明した内容は変わりません。DH キーが小さすぎるため、OpenSSL によって安全ではないと判断され、OAuth2 サーバーへの接続が失敗します。

以下の一時的な回避策を適用できますが、OAuth2 サーバー上の DH キーサイズを増やすことが唯一の解決策です。

申し訳ありません、忘れていました……さて、問題なのは……もう動作しなくなりました……
/etc/ssl/openssl.cnf に上記の変更を加えました。

[system_default_sect]
MinProtocol = TLSv1.2
#CipherString = DEFAULT@SECLEVEL=2

その後、コンテナから退出し、

docker restart app

を実行しました。
しかし、その後もしばらくエラーログに同じエラーが表示されました。

真実を言いませんでした、ごめんなさい…今、エラーは同じではありません:

Faraday::ConnectionFailed (Connection reset by peer - SSL_connect)
/usr/local/lib/ruby/2.6.0/net/protocol.rb:44:in `connect_nonblock’

とても奇妙ですね :frowning: … 今すぐ再度試してみましたが、また同じメッセージが表示されました。

“Oops, The software powering this discussion forum encountered an unexpected problem. We apologize for the inconvenience…”

その後、不満から何度か「F5」キーを押しました :slight_smile: が、突然画面が以下のように変わりました。

Sorry, there was an error authorizing your account. Please try again.

その後、OAuth2 プロバイダーのログインサイトから再度ログインする必要があり、再び「Oops ..」というメッセージが表示されました。もう一度 F5 を押すと、ようやくログインできました…

うーん… 深刻なセキュリティ問題に気づいたのか、それとも単にタイミングの問題なのか…

おそらく後者でしょう…

調整可能なタイムアウト設定はどのようなものがありますか?

ありがとうございました!