[ruby-on-rails] SSL_connect 리턴 = 1 errno = 0 state = SSLv3 읽기 서버 인증서 B : 인증서 확인 실패

타사 로그인에 Authlogic-Connect 를 사용하고 있습니다. 적절한 마이그레이션을 실행 한 후 Twitter / Google / yahoo 로그인은 정상적으로 작동하지만 페이스 북 로그인에서 예외가 발생합니다.

SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed

개발자 로그에

OpenSSL::SSL::SSLError (SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed):
  app/controllers/users_controller.rb:37:in `update'

제안 해주세요 ..



답변

Rails 3에 JQuery 생성기를 사용하려고 할 때 비슷한 문제가 발생했습니다.

나는 이것을 다음과 같이 해결했다.

  1. CURL 인증 기관 (CA) 번들을 가져 오십시오. 당신은 이것을 할 수 있습니다 :

    • sudo port install curl-ca-bundle [MacPorts를 사용하는 경우]
    • 아니면 그냥 아래로 당겨 wget http://curl.haxx.se/ca/cacert.pem
  2. SSL 인증을 확인하려는 루비 코드를 실행하십시오 SSL_CERT_FILE=/opt/local/etc/certs/cacert.pem rails generate jquery:install. 귀하의 경우, 서버가 선택하는 곳의 환경 변수로 환경 변수를 설정하거나 ENV['SSL_CERT_FILE'] = /path/to/your/new/cacert.pemenvironment.rb 파일 과 같은 것을 추가하려고 합니다.

OS에 CA 파일 (이것은 시도하지 않았습니다)을 설치할 수도 있습니다. 여기에 긴 지침 이 있습니다. 이는 비슷한 방식으로 작동하지만 개인적으로 시도하지는 않았습니다.

기본적으로 당신이 겪고있는 문제는 일부 웹 서비스가 OpenSSL이 확인할 수없는 CA에 서명 된 인증서로 응답한다는 것입니다.


답변

OS X에서 RVM을 사용하는 경우 다음을 실행해야합니다.

rvm osx-ssl-certs update all

자세한 정보는 여기 : http://rvm.io/support/fixing-broken-ssl-certificates

다음은 전체 설명입니다. https://github.com/wayneeseguin/rvm/blob/master/help/osx-ssl-certs.md


최신 정보

Ruby 2.2에서는이 문제를 해결하기 위해 소스에서 Ruby를 다시 설치해야 할 수도 있습니다. 방법은 다음과 같습니다 ( 2.2.3Ruby 버전으로 대체 ).

rvm reinstall 2.2.3 --disable-binary

에 신용 https://stackoverflow.com/a/32363597/4353이안 코너 .


답변

Windows에서 수정하는 방법은 다음과 같습니다. https://gist.github.com/867550(Fletcher Nichol 작성)

발췌 :

수동 방법 (보링)

http://curl.haxx.se/ca/cacert.pem 에서 cacert.pem파일을 다운로드 하십시오 . 이 파일을에 저장하십시오 C:\RailsInstaller\cacert.pem.

이제을 설정하여 루비가 인증 기관 번들을 인식하도록합니다 SSL_CERT_FILE. 현재 명령 프롬프트 세션에서이를 설정하려면 다음을 입력하십시오.

set SSL_CERT_FILE=C:\RailsInstaller\cacert.pem

이 설정을 영구적으로 설정하려면 제어판 에서 설정을 추가하십시오 .


답변

루비는 신뢰할 루트 인증서를 찾을 수 없습니다.

이 블로그 게시물에서 해결책을 찾아보십시오 : ” Ruby 1.9 and SSL error “.

해결책은 curl-ca-bundleFirefox에서 사용하는 것과 동일한 루트 인증서를 포함하는 포트 를 설치하는 것입니다 .

sudo port install curl-ca-bundle

당신에게 https그것을 사용하는 객체를 :

https.ca_file = '/opt/local/share/curl/curl-ca-bundle.crt'

코드를 Ubuntu에서 실행 ca_path하려면 기본 인증서 위치로 속성 을 설정해야합니다 /etc/ssl/certs.


답변

OSX에서이 오류가 발생하는 이유는 rvm 설치 루비입니다.

OSX에서이 문제가 발생하면이 블로그 게시물에서 해당 문제에 대한 광범위한 설명을 찾을 수 있습니다.

http://toadle.me/2015/04/16/fixing-failing-ssl-verification-with-rvm.html

짧은 버전은 일부 루비 버전의 경우 RVM이 사전 컴파일 된 바이너리를 다운로드하여 잘못된 위치에서 인증서를 찾는다는 것입니다. RVM이 소스를 다운로드하고 자신의 컴퓨터에서 컴파일하도록하여 인증서 위치의 구성이 올바른지 확인하십시오.

이를 수행하는 명령은 다음과 같습니다.

rvm install 2.2.0 --disable-binary

문제의 버전이 이미있는 경우 다음을 사용하여 다시 설치할 수 있습니다.

rvm reinstall 2.2.0 --disable-binary

(필요에 따라 루비 버전을 대체하십시오).


답변

문제는 루비가 신뢰할 루트 인증서를 찾을 수 없다는 것입니다. 1.9부터 루비가 이것을 확인합니다. 시스템에 컬 인증서가 pem 파일 형식으로되어 있는지 확인해야합니다. 또한 인증서가 루비가 예상하는 위치에 있는지 확인해야합니다. 이 인증서는 다음에서 얻을 수 있습니다.

http://curl.haxx.se/ca/cacert.pem

RVM 및 OSX 사용자 인 경우 인증서 파일 위치는 사용중인 루비 버전에 따라 다릅니다. : ca_path를 사용하여 경로를 명시 적으로 설정하는 것은 코드가 생산에 들어갈 때 이식성이 없기 때문에 나쁜 아이디어입니다. 기본 위치에 루비에게 인증서를 제공하려고합니다 (그리고 개발자 운영 담당자가 자신이하는 일을 알고 있다고 가정). dtruss를 사용하여 시스템이 인증서 파일을 찾는 위치를 해결할 수 있습니다.

제 경우에는 시스템에서 인증서 파일을 찾고있었습니다

/Users/stewart.matheson/.rvm/usr/ssl/cert.pem

그러나 MACOSX 시스템은

/System/Library/OpenSSL/cert.pem

다운로드 한 인증서를이 경로에 복사하여 작동했습니다. HTH


답변

새로운 인증 된 gem은 다음을 수정하도록 설계되었습니다.

https://github.com/stevegraham/certified