복붙노트

[RUBY-ON-RAILS] 루비 1.9.3 사용하는 경우에는 OpenSSL 오류 "인증 실패를 확인"

RUBY-ON-RAILS

루비 1.9.3 사용하는 경우에는 OpenSSL 오류 "인증 실패를 확인"

나는 맥 OS 10.6.8 (설치 사용 RVM)에 루비 1.9.3p0을 사용하고 있습니다. 나는 (예를 들어)이와 GitHub의에서 호스팅하는 응용 프로그램 템플릿을 사용하여 새 레일 응용 프로그램을 만들려고하면 :

$ rails new myapp -m https://github.com/RailsApps/rails3-application-templates/raw/master/rails3-mongoid-devise-template.rb -T -O

이 오류 메시지가 :

/Users/me/.rvm/rubies/ruby-1.9.3-p0/lib/ruby/1.9.1/net/http.rb:799:in `connect': SSL_connect 
returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed 
(OpenSSL::SSL::SSLError)

나는 Ruby 언어 인터프리터는 애플리케이션 템플릿 파일을 요청하는 GitHub의에 연결하기 위해 OpenSSL을 사용하고 이해합니다. GitHub의 SSL을 사용 할 수있는 모든 연결이 필요합니다. OpenSSL이 서버 인증서를 확인할 수 없습니다 때문에 연결에 실패했습니다.

나는 인증서 파일을 다운로드하여 문제를 해결할 수 있었다 :

$ cd /opt/local/etc/openssl
$ sudo curl -O http://curl.haxx.se/ca/cacert.pem
$ sudo mv cacert.pem cert.pem

루비 1.9.2 사용에는 문제가 없었다. 이유는 루비 1.9.3의 "인증서 확인 실패"문제를 얻었 는가? 이 루비 1.9.3 버그인가? 맥 OS 10.6.8에 그것은 특정인가? 내 솔루션은이 문제를 해결하는 올바른 방법인가?

해결법

  1. ==============================

    1.정답에 참여 움직이는 부분이 많이 있습니다. 당신의 OS, 루비 버전은 OpenSSL 버전, 젬 버전에 따라 다릅니다. 나는 그것을 조사 후 기사를 쓰기까지했다. 내 기사 오류에 대한 이유, 추가 진단을위한 제안 단계, 쇼 몇 가지 해결 방법을 설명하고 가능한 솔루션을 제안합니다. 이 도움이 될 것입니다 :

    정답에 참여 움직이는 부분이 많이 있습니다. 당신의 OS, 루비 버전은 OpenSSL 버전, 젬 버전에 따라 다릅니다. 나는 그것을 조사 후 기사를 쓰기까지했다. 내 기사 오류에 대한 이유, 추가 진단을위한 제안 단계, 쇼 몇 가지 해결 방법을 설명하고 가능한 솔루션을 제안합니다. 이 도움이 될 것입니다 :

    OpenSSL을 오류 및 레일 - 인증 실패 있는지 확인

    GitHub의에 관련 커밋과 문제에 대한 링크도 있습니다.

  2. ==============================

    2.나를 위해이 최신 RVM에 (RVM 1.20.12)을 갱신 한 후 루비 1.9.3-p429를 설치 한 후 사제와 OS X에서 발생했습니다. 나는 실행하여 간단하게 문제를 재현 할 수 :

    나를 위해이 최신 RVM에 (RVM 1.20.12)을 갱신 한 후 루비 1.9.3-p429를 설치 한 후 사제와 OS X에서 발생했습니다. 나는 실행하여 간단하게 문제를 재현 할 수 :

    $ rvm use ruby-1.9.3-p429
    $ irb
    1.9.3p429 :001 > require 'open-uri'; open 'https://google.com'
    OpenSSL::SSL::SSLError: SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed
        from /Users/lyahdav/.rvm/rubies/ruby-1.9.3-p429/lib/ruby/1.9.1/net/http.rb:800:in `connect'
        from /Users/lyahdav/.rvm/rubies/ruby-1.9.3-p429/lib/ruby/1.9.1/net/http.rb:800:in `block in connect'
        from /Users/lyahdav/.rvm/rubies/ruby-1.9.3-p429/lib/ruby/1.9.1/timeout.rb:55:in `timeout'
        from /Users/lyahdav/.rvm/rubies/ruby-1.9.3-p429/lib/ruby/1.9.1/timeout.rb:100:in `timeout'
        from /Users/lyahdav/.rvm/rubies/ruby-1.9.3-p429/lib/ruby/1.9.1/net/http.rb:800:in `connect'
        from /Users/lyahdav/.rvm/rubies/ruby-1.9.3-p429/lib/ruby/1.9.1/net/http.rb:756:in `do_start'
        from /Users/lyahdav/.rvm/rubies/ruby-1.9.3-p429/lib/ruby/1.9.1/net/http.rb:745:in `start'
        from /Users/lyahdav/.rvm/rubies/ruby-1.9.3-p429/lib/ruby/1.9.1/open-uri.rb:306:in `open_http'
        from /Users/lyahdav/.rvm/rubies/ruby-1.9.3-p429/lib/ruby/1.9.1/open-uri.rb:775:in `buffer_open'
        from /Users/lyahdav/.rvm/rubies/ruby-1.9.3-p429/lib/ruby/1.9.1/open-uri.rb:203:in `block in open_loop'
        from /Users/lyahdav/.rvm/rubies/ruby-1.9.3-p429/lib/ruby/1.9.1/open-uri.rb:201:in `catch'
        from /Users/lyahdav/.rvm/rubies/ruby-1.9.3-p429/lib/ruby/1.9.1/open-uri.rb:201:in `open_loop'
        from /Users/lyahdav/.rvm/rubies/ruby-1.9.3-p429/lib/ruby/1.9.1/open-uri.rb:146:in `open_uri'
        from /Users/lyahdav/.rvm/rubies/ruby-1.9.3-p429/lib/ruby/1.9.1/open-uri.rb:677:in `open'
        from /Users/lyahdav/.rvm/rubies/ruby-1.9.3-p429/lib/ruby/1.9.1/open-uri.rb:33:in `open'
        from (irb):1
        from /Users/lyahdav/.rvm/rubies/ruby-1.9.3-p429/bin/irb:16:in `<main>'1.9.3p429 :002 > 
    

    이 솔루션은 문제의 그것과 유사하지만, 경로가 잘못되었습니다. 이 그것을 고정 실행 :

    curl https://curl.haxx.se/ca/cacert.pem -o /usr/local/etc/openssl/cert.pem
    

    올바른 경로에 관한 단서는 내가 RVM을 통해 루비 1.9.3-p429를 설치했을 때이 출력에 보여이었다 :

    Certificates in '/usr/local/etc/openssl/cert.pem' already are up to date.
    

    나는 RVM은 인증서가 최신 상태로 있었다 주장하는 이유는 확실하지 않다, 그래서 그 디렉토리에있는은 / usr / local / etc /하려면 openssl 경로,하지만 cert.pem 파일을 없었다. 내가 처음에이 일을 한 이유를 알고 좋은 것입니다,하지만 지금 조사 할 시간이 없어.

  3. ==============================

    3.난은 OpenSSL의 설치 RVM에 내 RVM 루비를 컴파일하는 데, 같은 문제가 있었다. 나는 아래의 원래 포스터에 의해 다운로드로 cacerts.pem 파일을 이동 ~ / .rvm는 / usr / SSL / cert.pem 문제가 멀리 갈 수 있도록합니다.

    난은 OpenSSL의 설치 RVM에 내 RVM 루비를 컴파일하는 데, 같은 문제가 있었다. 나는 아래의 원래 포스터에 의해 다운로드로 cacerts.pem 파일을 이동 ~ / .rvm는 / usr / SSL / cert.pem 문제가 멀리 갈 수 있도록합니다.

  4. ==============================

    4.저도 같은 문제가되었다.

    저도 같은 문제가되었다.

    내가 마지막으로 고정하는 방법은이 OpenSSL을 나는 내 버전은 MacPorts를 통해 설치 한 업그레이드했다. 그때 내 MacPorts를 설치를 업그레이드 포트 명령 줄 인터페이스를 통해 내에서 OpenSSL installtion를 업그레이드 오류가 사라졌다 그래서 나는 2009 년부터 OpenSSL 버전을 실행했다.

    말할 것도 맥 기반 설치에 루비 / 레일 및 OpenSSL을 사이에 통합이 있어야합니다. 내 경우에는 내가 아니 었있는 페이스 북은 graph.facebook.com의 OAuth를 / 로그인 토큰을 다시 내 응용 프로그램을 고안 및 OmniAuth 필요해야합니다 유효한 SSL 인증서를 보낼 때 제대로 작동하려면 페이스 북으로 로그인을 받고 문제가되었다 OpenSSL을 내 이전 버전.

  5. ==============================

    5.OpenSSL을 인증 디렉토리는 데비안에는 / usr / lib 디렉토리 / SSL /입니다. 그래서, 다음과 같은 세 가지 라인은 나를 위해 충분했다

    OpenSSL을 인증 디렉토리는 데비안에는 / usr / lib 디렉토리 / SSL /입니다. 그래서, 다음과 같은 세 가지 라인은 나를 위해 충분했다

    $ cd /usr/lib/ssl/
    $ sudo curl -O http://curl.haxx.se/ca/cacert.pem
    $ sudo mv cacert.pem cert.pem
    
  6. ==============================

    6.어쩌면 당신은 약간 다르게 구성된 각 일을 구축하는 데 어떤 도구 - 그것은 가능성이 있기 때문에 당신이 1.9.2과 1.9.3이 내장 된 방법이 될 수 있습니다. 아니면 그들은 OpenSSL을 다른 버전을 사용합니다.

    어쩌면 당신은 약간 다르게 구성된 각 일을 구축하는 데 어떤 도구 - 그것은 가능성이 있기 때문에 당신이 1.9.2과 1.9.3이 내장 된 방법이 될 수 있습니다. 아니면 그들은 OpenSSL을 다른 버전을 사용합니다.

    HTTP 1.9.2과 1.9.3 사이 : 여기가 인터넷에 발견 할 수있는 유일한 잠재적으로 관련 변화는

     require 'net/protocol'
    -autoload :OpenSSL, 'openssl'
     require 'uri'
    +autoload :OpenSSL, 'openssl'
    

    (당신은 diff를 표시 할 경우 ...)

    git clone https://github.com/ruby/ruby.git
    cd ruby
    git diff origin/ruby_1_9_2 origin/ruby_1_9_3 -- http.rb
    
  7. ==============================

    7.나는 비슷한 문제가 아니라 레일에 있지만 Windows에서 단지 루비에 있었다. 나는 "SSL_CERT_FILE의"cacert.pem 인증서를 사용하여 환경 변수에 인증서의 위치를 ​​설정하여 해결

    나는 비슷한 문제가 아니라 레일에 있지만 Windows에서 단지 루비에 있었다. 나는 "SSL_CERT_FILE의"cacert.pem 인증서를 사용하여 환경 변수에 인증서의 위치를 ​​설정하여 해결

    여기에 상세한 답 : https://stackoverflow.com/a/35429863/4747587

  8. from https://stackoverflow.com/questions/8101377/certificate-verify-failed-openssl-error-when-using-ruby-1-9-3 by cc-by-sa and MIT license