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: … 방금 다시 시도했는데, 또 같은

“죄송합니다. 이 토론 포럼을 구동하는 소프트웨어에서 예상치 못한 문제가 발생했습니다. 불편을 드려 죄송합니다…”

라는 메시지가 떴습니다 … 그 다음에 (좌절감 때문에 :slight_smile: ) 몇 번 F5를 눌렀더니 갑자기 화면이 바뀌면서

죄송합니다. 계정 인증 중 오류가 발생했습니다. 다시 시도해 주세요.

라고 나왔습니다.

그 후 oauth2 제공자의 로그인 사이트를 통해 다시 로그인해야 했고, 그러자 또 “Ops ..” 메시지가 떴습니다. 그리고 F5를 한 번 더 누르니 드디어 접속이 됐습니다 …

음… 심각한 보안 문제를 발견한 건지, 아니면 그냥 타이밍 문제인 것 같기도 합니다 …

후자가 더 가능성이 높아 보이는데 …

어떤 타임아웃 설정을 조정해 볼 수 있을까요?

감사합니다, 화이팅하세요!