[RUBY-ON-RAILS] OpenSSL을 :: SSL에게 Heroku에 :: SSLError [중복]
RUBY-ON-RAILSOpenSSL을 :: SSL에게 Heroku에 :: SSLError [중복]
나는, 페이스 북이나 트위터를 통해 사용자를 인증 그들의 정보를 기입에 도착하고 (따라서 사용자 레코드를 작성) 저장을 클릭하기 위해 노력하고있어. 그 마지막 단계 상에 OpenSSL이 오류를 받고 있어요 - 저장을 클릭 한 후. 유증 RegistrationsController 번호는 방법을 만들에 발생합니다.
내 레일 응용 프로그램에서이 오류를 받고 있어요 그래서, Heroku가에서 호스팅 :
2012-07-28T18:25:13+00:00 app[web.1]: OpenSSL::SSL::SSLError (SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed)
나는 솔루션의 많은 그들 작품의 없음을 보았다. 여기에 내가 시도한 몇 가지 있습니다 :
1) 인증 보석 설치
2) V2.30에 Heroku가 보석을 업그레이드 다시 밀어
3)이 :
Rails.application.config.middleware.use OmniAuth::Builder do
provider :twitter, TWITTER_KEY, TWITTER_SECRET, {:client_options => {:ssl => {:ca_file => "/usr/lib/ssl/certs/ca-certificates.crt"}}}
provider :facebook, FACEBOOK_KEY, FACEBOOK_SECRET, {:scope => "publish_actions,user_location,email", :client_options => {:ssl => {:ca_file => "/usr/lib/ssl/certs/ca-certificates.crt"}}}
end
이 인증서 파일이 실제로 존재하지 않는 수 하나 개의 문제처럼 보인다 - 나는 여러 장소에서 그것을 보았다, 그리고 그에게 Heroku에 대한 ca_cert 파일의 기본 경로처럼 보인다, 그러나 나는 틀릴 수 있었다.
이상한 일이지만, 이것은 이미 FB / 트위터를 통해 인증 한 후에 일어나고, 및 사용자 계정을 만들려고하고 있습니다. 왜 이런 일이있을 것이고, 어떻게이 문제를 디버깅 / 해결할 수 있습니까? 감사합니다 혼란.
업데이트 : 나는 이것을 Omniauth 이니셜로 라인, 그리고 지금 "작품"을 추가했다. 따라서 나는 문제가 Omniauth 함께 진단했습니다. 그러나, 나는이 분명 보안 격차를 단풍 ... 여전히 SSL 검증을하고 싶습니다.
OpenSSL을 :: SSL ::위한 verify_peer =에는 OpenSSL : SSL :: VERIFY_NONE
해결법
-
==============================
1.여기에 몇 가지 검색 후 내가 찾은 것입니다 :
여기에 몇 가지 검색 후 내가 찾은 것입니다 :
HTTPS를, 예를 들면 통해 외부 서버에 열려있는 연결에 루비를 사용하는 경우. 페이스 북 그래프 API는 다음과 같은 오류로 실행할 수 있습니다 :
OpenSSL::SSL::SSLError:SSL_connectreturned=1errno=0state=SSLv3readservercertificateB:certificateverifyfailed
이 오류는 루비가 보안 웹 서버의 신뢰성을 확인하는 데 사용되는 인증 기관 인증서 (CA 인증서 표시를) 찾을 수 없다는이다. 이 솔루션은 응용 프로그램의 lib 디렉토리 / 디렉토리에이 CA-bundle.crt을 다운로드하는 것입니다 : 그런 다음, 다음 코드를 추가로 설정 / 초기화 / fix_ssl.rb :
require 'open-uri' require 'net/https' module Net class HTTP alias_method :original_use_ssl=, :use_ssl= def use_ssl=(flag) self.ca_file = Rails.root.join('lib/ca-bundle.crt').to_s self.verify_mode = OpenSSL::SSL::VERIFY_PEER self.original_use_ssl = flag end end end
이 응용 프로그램의 lib 디렉토리 / 디렉토리에서 CA 번들을 사용하는 루비 강제해야한다.
http://jimneath.org/2011/10/19/ruby-ssl-certificate-verify-failed.html :에서 촬영
최신 정보:
당신은 당신의 시스템에 따라 = 대신 self.ca_file의 = self.ca_path를 사용해야 할 수도 있습니다.
-
==============================
2.당신이 OmniAuth의 오른쪽에는 OpenSSL 구성을 가지고 것 같은데, 그러나 아마 당신의 CA 인증서에서 경로가 올바르지 않습니다?
당신이 OmniAuth의 오른쪽에는 OpenSSL 구성을 가지고 것 같은데, 그러나 아마 당신의 CA 인증서에서 경로가 올바르지 않습니다?
당신은 실행하여 Heroku가 서버에서 그것을 확인할 수 있습니다 :
heroku run bash
... 그리고 적절한 경로를 표시하려면 openssl을 실행 :
$ openssl version -a OpenSSL 1.0.0e 6 Sep 2011 OPENSSLDIR: "/usr/lib/ssl"
... 당신은 $ OPENSSLDIR / 인증서 표시 / CA-certificates.crt에서 ca_certificates.crt 파일을 찾을 수 있어야
그 경로 코드가 일치하는 업데이트를 확인합니다.
from https://stackoverflow.com/questions/11703679/opensslsslsslerror-on-heroku by cc-by-sa and MIT license
'RUBY-ON-RAILS' 카테고리의 다른 글
[RUBY-ON-RAILS] 레일 - 사용 유형 열을 STI없이? (0) | 2020.02.12 |
---|---|
[RUBY-ON-RAILS] 랙에 :: 세션 : 쿠키 경고를 제공하는 비밀 옵션 없다? (0) | 2020.02.12 |
[RUBY-ON-RAILS] Heroku가 포스트 그레스 오류 : PGError : 오류 : 관계 "조직이"존재하지 않는 (액티브 :: StatementInvalid) (0) | 2020.02.12 |
[RUBY-ON-RAILS] 경로 도우미는 점 대신에 슬래시와 경로를 생성 (0) | 2020.02.11 |
[RUBY-ON-RAILS] 주문에 레일 4 has_many에 대한 사용되지 않는 경고 (0) | 2020.02.11 |