programing

SSL_connect에서 반환된 =1 errno=0 상태=SSLv3 읽기 서버 인증서 B: 인증서 확인 실패

padding 2023. 6. 22. 21:35
반응형

SSL_connect에서 반환된 =1 errno=0 상태=SSLv3 읽기 서버 인증서 B: 인증서 확인 실패

타사 로그인에 Authlogic-Connect를 사용하고 있습니다.적절한 마이그레이션을 실행한 후 Twitter/Google/yahoo 로그인은 정상적으로 작동하는 것처럼 보이지만 Facebook 로그인은 예외를 발생시킵니다.

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'

제안 부탁드립니다.

레일 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.pem사용자의 environment.vmdk 파일에 있습니다.

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

기본적으로 문제는 일부 웹 서비스가 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 제작)

발췌:

수동 방식(지루)

cacert.pemhttp://curl.haxx.se/ca/cacert.pem 의 파일입니다.이 파일 저장 위치C:\RailsInstaller\cacert.pem.

이제 설정을 통해 Ruby가 인증 기관 번들을 인식하도록 합니다.SSL_CERT_FILE현재 명령 프롬프트 세션에서 이 값을 설정하려면 다음을 입력합니다.

set SSL_CERT_FILE=C:\RailsInstaller\cacert.pem

이 설정을 영구적으로 설정하려면 제어판에 이 설정을 추가합니다.

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

"루비 1.9와 SSL 오류"라는 해결책을 찾기 위해 이 블로그 게시물을 보세요.

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

sudo port install curl-ca-bundle

그리고 당신에게 말합니다.https사용할 개체:

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

Ubuntu에서하려면 Ubuntu를 .ca_path attribute, 위치를 /etc/ssl/certs.

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

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

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

간략한 버전은 Ruby 일부 버전의 경우 RVM이 사전 컴파일된 이진 파일을 다운로드하여 잘못된 위치에서 인증서를 찾는다는 것입니다.RVM이 소스를 다운로드하고 자체 시스템에서 컴파일하도록 강제하면 인증서 위치에 대한 구성이 올바른지 확인할 수 있습니다.

이를 위한 명령은 다음과 같습니다.

rvm install 2.2.0 --disable-binary

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

rvm reinstall 2.2.0 --disable-binary

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

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

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

RVM 및 OSX 사용자의 경우 사용 중인 Ruby 버전에 따라 인증서 파일 위치가 달라집니다.:ca_path를 사용하여 경로를 명시적으로 설정하는 것은 좋지 않은 생각입니다. 코드가 프로덕션에 도착하면 이동할 수 없기 때문입니다.따라서 기본 위치에 있는 인증서와 함께 루비를 제공하고 개발자들이 무엇을 하고 있는지 알고 있다고 가정합니다.dtrus를 사용하여 시스템이 인증서 파일을 찾는 위치를 확인할 수 있습니다.

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

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

그러나 MATUSEX 시스템은 인증서를 기대합니다.

/System/Library/OpenSSL/cert.pem

다운로드 받은 인증서를 이 경로에 복사했고 작동했습니다.HTH

새로운 인증 보석은 다음과 같은 문제를 해결하도록 설계되었습니다.

https://github.com/stevegraham/certified

gem 파일에 gem 'certified'를 추가하고 번들 설치를 실행하기만 하면 됩니다.

  1. 보석 '인증'
  2. 번들 설치

최신 Mac 포트가 있는 Mac OS X Lion의 경우:

sudo port install curl-ca-bundle  
export SSL_CERT_FILE=/opt/local/share/curl/curl-ca-bundle.crt  

그런 다음 실패한 작업을 다시 실행합니다.

참고로 Eric G가 5월 12일에 답변한 이후로 인증서 파일 위치가 변경된 것 같습니다.

디버깅을 위한 다른 옵션이 있습니다.

운영 환경에서 SSL을 사용하면 우선 SSL을 사용할 수 있는 이점이 없어지므로 이 기능을 사용하지 마십시오.로컬 개발 환경에서만 이 작업을 수행할 수 있습니다.

require 'openssl'
OpenSSL::SSL::VERIFY_PEER = OpenSSL::SSL::VERIFY_NONE

관리 프롬프트에서 하나의 라이너로 Windows용으로 수정

choco install wget(먼저 chocolatey.org 참조)

wget http://curl.haxx.se/ca/cacert.pem -O C:\cacert.pem && setx /M SSL_CERT_FILE "C:\cacert.pem"

또는 다음과 같이 하십시오.

gem sources -r https://rubygems.org/
gem sources -a http://rubygems.org/

밀라노의 방법:

gem sources -r https://rubygems.org
gem sources -a http://rubygems.org 
gem update --system
gem sources -r http://rubygems.org
gem sources -a https://rubygems.org

gem install [NAME_OF_GEM]

이것은 나에게 효과가 있었습니다.

rvm pkg install openssl
rvm reinstall 1.9.2 --with-openssl-dir=$rvm_path/usr

Ubuntu 12.04의 openssl 구현에 문제가 있습니다.

이것이 다소 보잘것없는 솔루션이라는 것을 알고 있지만, 여기에 대답하는 사람들 중 극히 소수만이 Windows를 사용하고 있으며, 일부 Windows 사용자(나도 포함)는 간단하고 직관적인 접근 방식을 좋아할 것이라고 생각하기 때문에 저는 여전히 이것을 공유하고 있습니다.

require 'openssl'
puts OpenSSL::X509::DEFAULT_CERT_FILE

그러면 openssl에서 인증서 파일을 찾는 위치가 표시됩니다.내 이름은 루이스가 아니지만, 내 이름은C:/Users/Luis/Code/luislavena/knap-build/var/knapsack/software/x86-windows/openssl/1.0.0l/ssl/cert.pem에 따라 수 ( 경각환따예다수를있라습다니에경로는예(▁may다있니:습▁the수▁be▁pathments▁(를▁differente▁depending다▁own▁environ:openknapsackluislavena).

길은 그 후에도 변하지 않았습니다.set SSL_CERT_FILE=C:\foo\bar\baz\cert.pem콘솔을 통해, 그러니까... 디렉터리를 만들었습니다. C:\Users\Luis\Code\luislavena\knap-build\var\knapsack\software\x86-windows\openssl\1.0.0l\ssl로컬 디스크에 특정 파일을 넣었습니다.

비록 형편없지만, 이것은 분명히 효과가 있을 것입니다.

설해봤다니를 해 보았습니다.curl-ca-bundle와 함께brew그러나 패키지는 더 이상 사용할 수 없습니다.

$ brew install curl-ca-bundle
Error: No available formula for curl-ca-bundle 
Searching formulae...
Searching taps...

Mac에서 사용할 수 있었던 솔루션은 다음과 같습니다.

 $ cd /usr/local/etc/openssl/certs/
 $ sudo curl -O http://curl.haxx.se/ca/cacert.pem

에 이 하세요.~/.bash_profile(또는)~/.zshrczsh):

export SSL_CERT_FILE=/usr/local/etc/openssl/certs/cacert.pem

그런 다음 터미널을 업데이트합니다.

$ source ~/.bash_profile

저는 루비 프로젝트를 진행하면서 같은 문제를 겪었습니다.Windows 7 64비트를 사용하고 있습니다.

이 문제를 해결 방법:

  1. http://curl.haxx.se/ca/cacert.pem 에서 cacert.pem 파일을 다운로드하는 중입니다.
  2. 해당 파일을 C:/RubyCertificates/cacert에 저장했습니다.
  3. 그런 다음 환경 변수 "SSL_CERT_FILE"을 "C:\RubyCertificates\cacert.pem"

출처: https://gist.github.com/fnichol/867550

나에게 가장 직접적인 대답은 이것이었습니다.

sudo apt-get install openssl ca-certificates

그리고 voila!!!

홈브루를 사용하는 OS X 10.8.x:

brew install curl-ca-bundle
brew list curl-ca-bundle
cp /usr/local/Cellar/curl-ca-bundle/1.87/share/ca-bundle.crt /usr/local/etc/openssl/cert.pem

그렇다면 이 블로그 게시물에서 알 수 있듯이,

"을 치료하는 방법::HTTP의 위험한 기본 HTTPS 동작"

할 수도 있습니다.always_verify_ssl_certificates에 할 수 ca_file.

이것은 저에게 효과가 있었습니다.rvm 및 brew를 사용하는 경우:

rvm remove 1.9.3
brew install openssl
rvm install 1.9.3 --with-openssl-dir=`brew --prefix openssl`

나는 이 문제와 제안된 해결책에 부딪혔습니다.rvm osx-ssl-certs update allOSX의 RVM 사용자임에도 불구하고 작동하지 않았습니다.

해결책은 최신 버전의 openssl을 다시 설치하는 것이었습니다.

brew update
brew remove openssl
brew install openssl

터미널에서 실행하여 이 문제를 해결했습니다.전체 기록은 이쪽에서 가능합니다.

rvm install 2.2.0 --disable-binary

OSX 솔루션:

최신 rvm 안정 버전 설치

rvm get stable

uservm 명령을 사용하여 인증서를 자동으로 해결

rvm osx-ssl-certs update all

레일 앱을 로컬에서 실행하는 경우 application.rb의 맨 아래에 이 행을 추가하면 됩니다.

OpenSSL::SSL::VERIFY_PEER = OpenSSL::SSL::VERIFY_NONE

이후에는 문제없이 앱을 사용할 수 있습니다.당신은 그것을 해킹이라고 부를 수 있지만 추천하지 않습니다.로컬로 실행해야 할 경우에만 사용

레오파드에 대해 특별히 문제가 있는 경우 제가 도움을 준 것은 다음과 같습니다.

제 증명서는 오래되어 업데이트가 필요했습니다.다운로드한 항목:

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

그런 다음 여기 레오파드에서 찾은 인증서를 교체합니다.

/usr/share/curl/curl-ca-bundle.crt

액세스할 수 있는 모든 것을 다시 로드하면 바로 사용할 수 있습니다!

제게 효과가 있는 것과 지침이 약간 달랐기 때문에, 저는 제 2센트를 추가한다고 생각했습니다.

OS X Lion에 있고 macports와 rvm을 사용하고 있습니다.

curl-ca-bundle을 설치했습니다.

sudo port install curl-ca-bundle

그런 다음 옴니아튜트 구성을 다음과 같이 조정했습니다.

Rails.application.config.middleware.use OmniAuth::Builder do
  provider :google_oauth2, APP_CONFIG['CONSUMER_KEY'], APP_CONFIG['CONSUMER_SECRET'],
           :scope => 'https://www.google.com/m8/feeds https://www.googleapis.com/auth/userinfo.profile',
           :ssl => {:ca_path => "/share/curl/curl-ca-bundle.crt"}
end

/usr/local/etc/openssl에 cert.pem을 가리키는 심볼 링크가 있는 경우 다음을 수행합니다.

ruby -ropenssl -e "p OpenSSL::X509::DEFAULT_CERT_FILE" (should be /usr/local/etc/openssl)
cd /usr/local/etc/openssl
wget http://curl.haxx.se/ca/cacert.pem
ln -s cacert.pem 77ee3751.0 (77ee3751.0 is my symbolic link, should depend on the openssl version)

저에게 효과가 있었던 것은 다음과 같은 답변들의 조합입니다.

# Reinstall OpenSSL
brew update
brew remove openssl
brew install openssl
# Download CURL CA bundle
cd /usr/local/etc/openssl/certs
wget http://curl.haxx.se/ca/cacert.pem
/usr/local/opt/openssl/bin/c_rehash
# Reinstall Ruby from source
rvm reinstall 2.2.3 --disable-binary

나는 며칠 동안 문제가 있었고 여기저기를 해킹하고 있었습니다. 링크는 저에게 매우 도움이 되는 것으로 밝혀졌습니다.MAC OS X 9에서 SSL을 성공적으로 업그레이드하는 데 도움이 되었습니다.

MAC OSX에서 항상 rvm의 문제가 아닌 경우가 있습니다. 문제가 해결되지 않은 .rvm을 제거하면(특히 타임머신에서 데이터를 백업하는 동안) 이러한 방법을 시도할 수 있습니다.

1.brew update
2.brew install openssl

추가 중gem 'certified', '~> 1.0'나에게Gemfile러닝bundle저를 위해 이 문제를 해결했습니다.

언급URL : https://stackoverflow.com/questions/4528101/ssl-connect-returned-1-errno-0-state-sslv3-read-server-certificate-b-certificat

반응형