타사 로그인에 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 생성기를 사용하려고 할 때 비슷한 문제가 발생했습니다.
나는 이것을 다음과 같이 해결했다.
-
CURL 인증 기관 (CA) 번들을 가져 오십시오. 당신은 이것을 할 수 있습니다 :
sudo port install curl-ca-bundle
[MacPorts를 사용하는 경우]- 아니면 그냥 아래로 당겨
wget http://curl.haxx.se/ca/cacert.pem
-
SSL 인증을 확인하려는 루비 코드를 실행하십시오
SSL_CERT_FILE=/opt/local/etc/certs/cacert.pem rails generate jquery:install
. 귀하의 경우, 서버가 선택하는 곳의 환경 변수로 환경 변수를 설정하거나ENV['SSL_CERT_FILE'] = /path/to/your/new/cacert.pem
environment.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.3
Ruby 버전으로 대체 ).
rvm reinstall 2.2.3 --disable-binary
답변
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-bundle
Firefox에서 사용하는 것과 동일한 루트 인증서를 포함하는 포트 를 설치하는 것입니다 .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