SSL_connect लौटा = 1 ग़लती = 0 स्थिति = SSLv3 सर्वर प्रमाणपत्र पढ़ें B: प्रमाणपत्र सत्यापन विफल


281

मैं तीसरे पक्ष के लॉगिन के लिए Authlogic-Connect का उपयोग कर रहा हूं । उपयुक्त माइग्रेशन चलाने के बाद, Twitter / Google / याहू लॉगिन ठीक काम करने लगते हैं, लेकिन फेसबुक लॉगिन अपवाद को छोड़ देता है:

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'

कृपया सुझाव दे..


2
क्या यह मदद करता है: stackoverflow.com/q/3977303/382818
Zabba

यहाँ एक सबसे अच्छा समाधान है जो मैं अब तक stackoverflow.com/a/16983443/11792
पावेल निकोलोव

जवाबों:


138

मैं एक समान समस्या में भाग गया जब रेल 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आपके पर्यावरण में कुछ जोड़ देता है । आरआरबी फ़ाइल।

आप ओएस पर बस सीए फाइलें (मैंने यह कोशिश नहीं की है) स्थापित कर सकते हैं - यहां लंबे निर्देश हैं - यह इसी तरह से काम करना चाहिए, लेकिन मैंने व्यक्तिगत रूप से यह कोशिश नहीं की है।

असल में, जिस मुद्दे को आप मार रहे हैं, वह यह है कि कुछ वेब सेवा एक CA के खिलाफ हस्ताक्षरित प्रमाणपत्र के साथ जवाब दे रही है जिसे OpenSSL सत्यापित नहीं कर सकता है।


1
रूबी नेट :: IMAP का उपयोग माणिक स्क्रिप्ट से करने के लिए अपने जीमेल खाते से जुड़ने की कोशिश करते हुए मेरे लिए भी यह काम किया। धन्यवाद।
जिग्नेश गोहेल

4
हां, यह रूबी-1.9.3 पर ठीक काम करता है। मैंने इसे अपने bash config में जोड़ा। export SSL_CERT_FILE=/usr/local/etc/openssl/certs/cert.pem
andersjanmyr

5
मेरे पास / usr / स्थानीय / etc / खुलने का समय नहीं था, इसलिए मैंने उसके sudo curl http://curl.haxx.se/ca/cacert.pem >> /usr/local/etc/cacert.pemबाद भाग लिया export SSL_CERT_FILE=/usr/local/etc/cacert.pem
Lilith River

4
अपने मैक पर विकसित करना मैंने SSL_CERT_FILE=/usr/local/etc/openssl/cert.pemअपने ऐप की .envफ़ाइल और वॉयला में जोड़ा - सभी खुश।
डेव सैग

8
मैं कर्ल सर्टिफिकेट डाउनलोड करने के लिए विग का उपयोग करने की विडंबना की सराहना करता हूं।
ट्रे

135

यदि आप OS X पर RVM का उपयोग कर रहे हैं, तो आपको संभवतः इसे चलाने की आवश्यकता है:

rvm osx-ssl-certs update all

अधिक जानकारी यहाँ: http://rvm.io/support/fixing-broken-ssl-cert प्रमाणपत्र

और यहाँ पूरी व्याख्या है: https://github.com/wayneeseguin/rvm/blob/master/help/osx-ssl-certs.md


अपडेट करें

रूबी 2.2 पर, आपको इसे ठीक करने के लिए रूबी को स्रोत से पुनर्स्थापित करना पड़ सकता है। यहां बताया गया है कि ( 2.2.3अपने रूबी संस्करण के साथ बदलें ):

rvm reinstall 2.2.3 --disable-binary

इसका श्रेय https://stackoverflow.com/a/32363597/4353 और इयान कोनर को जाता है


2
यहाँ विकल्पों के साथ एक और अधिक व्यापक लेखन है: railsapps.github.io/openssl-certificate-verify-failed.html
पीटर पी।

त्रुटि: आरवीएम अपडेट को हटा दिया गया है। इसके बजाय 'rvm get' और rvm 'rubygems' CLI API देखें
yang

@ user432506 आपको यह त्रुटि कैसे हुई? मैं नवीनतम स्थिर आरवीएम का उपयोग कर रहा हूं और यह अभी भी काम करता है।
htanata

4
यह कुछ समय के लिए काम करेगा, फिर मेरे लिए असफल होगा। मेरे लिए जो काम कर रहा था, वह चल रहा था, rvm reinstall 2.2.0 --disable-binaryलेकिन फिर आपको इंस्टाल और नए सिरे से बंडल बनाना होगा।
इयान कोनर

2
यह एक विशाल जीवनरक्षक था और इसे स्वीकृत उत्तर होना चाहिए।
सिरारिस

129

यहाँ आप इसे विंडोज पर कैसे ठीक कर सकते हैं: https://gist.github.com/867550 (फ्लेचर निकोल द्वारा निर्मित)

अंश:

मैनुअल तरीका (बोरिंग)

Http://curl.haxx.se/ca/cacert.pemcacert.pem से फ़ाइल डाउनलोड करें । इस फाइल को सेव करें ।C:\RailsInstaller\cacert.pem

अब अपने प्रमाणपत्र प्राधिकारी बंडल से सेटिंग करके माणिक को अवगत कराएं SSL_CERT_FILE। इसे अपने वर्तमान कमांड प्रॉम्प्ट सत्र में सेट करने के लिए, टाइप करें:

set SSL_CERT_FILE=C:\RailsInstaller\cacert.pem

इसे एक स्थायी सेटिंग बनाने के लिए, इसे अपने नियंत्रण कक्ष में जोड़ें ।


6
धन्यवाद। यह असाधारण रूप से उपयोगी है और बहुत सरल भी है।
जॉन

उपरोक्त समाधान ने मेरी मदद नहीं की। यह विंडोज के लिए एक बेहतर मार्गदर्शिका है: stackoverflow.com/questions/5720484/…
Sprachprofi

@Sprachprofi आपके द्वारा जुड़ा हुआ समाधान एक समय में केवल 1 रेल परियोजना के लिए काम करेगा (जैसा कि आप सीधे उस प्रमाणपत्र की ओर इशारा कर रहे हैं)। मेरे द्वारा लिंक किए गए (फ्लेचर निकोल द्वारा बनाई गई) जीआईएसटी यह हर प्रोजेक्ट / रत्न को कवर करने की अनुमति देगा जो एक प्रमाण पत्र की तलाश में है।
रियांजोन्स

31

रूबी को विश्वास करने के लिए कोई मूल प्रमाण पत्र नहीं मिल सकता है।

एक समाधान के लिए इस ब्लॉग पोस्ट पर नज़र डालें: " रूबी 1.9 और एसएसएल त्रुटि "।

इसका समाधान curl-ca-bundleपोर्ट को स्थापित करना है जिसमें फ़ायरफ़ॉक्स द्वारा उपयोग किए गए समान प्रमाणपत्र शामिल हैं:

sudo port install curl-ca-bundle

और httpsइसे उपयोग करने के लिए अपनी वस्तु बताएं :

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

ध्यान दें कि यदि आप चाहते हैं कि आपका कोड उबंटू पर चले, तो आपको ca_pathडिफ़ॉल्ट प्रमाणपत्र स्थान के साथ विशेषता सेट करने की आवश्यकता है /etc/ssl/certs


8
ऐसा विंडोज पर भी लगता है, इस मामले में जो समाधान सुझाया गया है वह काम नहीं करेगा।
बॉब अमन

24

OSX पर आपको यह त्रुटि मिलने का कारण आरवीएम-स्थापित रूबी है।

यदि आप OSX पर इस समस्या में भाग लेते हैं, तो आप इस ब्लॉग पोस्ट में इसके बारे में व्यापक व्याख्या पा सकते हैं:

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

लघु संस्करण यह है कि, रूबी के कुछ संस्करणों के लिए, आरवीएम पूर्व संकलित बायनेरिज़ डाउनलोड करता है, जो गलत स्थान पर प्रमाण पत्र की तलाश करते हैं। RVM को स्रोत डाउनलोड करने और अपनी मशीन पर संकलित करने के लिए मजबूर करके, आप यह सुनिश्चित करते हैं कि प्रमाणपत्र स्थान के लिए कॉन्फ़िगरेशन सही है।

ऐसा करने का आदेश है:

rvm install 2.2.0 --disable-binary

यदि आपके पास पहले से ही संस्करण है, तो आप इसे फिर से इंस्टॉल कर सकते हैं:

rvm reinstall 2.2.0 --disable-binary

(जाहिर है, अपने रूबी संस्करण को आवश्यकतानुसार बदलें)।


इसने मेरे लिए काम किया। जिस ब्लॉग पोस्ट की ओर आप इशारा कर रहे हैं, वह भी उपयोगी है, धन्यवाद!
क्रिस्टियन

2
यह मेरे लिए एल Capitan पर काम किया। मैंने आरवीएम (आरवीएम प्रत्यारोपण) को फंसाया। के साथ फिर से स्थापित किया गया \curl -sSL https://get.rvm.io | bash -s stable --autolibs=homebrewऔर फिर rvm install <ruby-version> --disable-binary एक बिंदु पर मैंने भी किया rvm get headक्योंकि ये कुछ रक्तस्रावी धार मुद्दे हैं।
रायलान

केवल इस समाधान ने मेरे लिए काम किया, क्योंकि मूल रूप से मैं एल कैपिटन पर रूबी 2.0.0 था और किसी कारण से पुराने संस्करण सही से भी काम नहीं करता था SSL_CERT_FILE। के बाद rvm install 2.2.0 --disable-binary, समस्या हल हुई।
प्रशंसा

20

मुद्दा यह है कि रूबी को विश्वास करने के लिए एक मूल प्रमाण पत्र नहीं मिल सकता है। 1.9 माणिक इसकी जाँच करते हैं। आपको यह सुनिश्चित करने की आवश्यकता होगी कि आपके पास pem फ़ाइल के रूप में आपके सिस्टम पर कर्ल प्रमाणपत्र है। आपको यह भी सुनिश्चित करने की आवश्यकता होगी कि प्रमाण पत्र उस स्थान पर है जहां रूबी को उम्मीद है कि यह होगा। आप इस प्रमाणपत्र को प्राप्त कर सकते हैं ...

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

यदि आपका आरवीएम और ओएसएक्स उपयोगकर्ता है तो आपकी सर्टिफिकेट फ़ाइल का स्थान आपके उपयोग करने वाले रूबी के किस संस्करण के आधार पर अलग-अलग होगा। स्पष्ट रूप से पथ सेट करना: ca_path एक BAD विचार है क्योंकि उत्पादन के लिए आपका कोड पोर्टेबल नहीं होगा। वहाँ के लिए आप डिफ़ॉल्ट स्थान में एक प्रमाण पत्र के साथ रूबी प्रदान करना चाहते हैं (और अपने देव ops लोगों को पता है कि वे क्या कर रहे हैं)। आप सर्टिफिकेट फ़ाइल के लिए सिस्टम को ढूंढने के लिए dtruss का उपयोग कर सकते हैं।

मेरे मामले में सिस्टम प्रमाणित फ़ाइल की तलाश में था

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

हालांकि MACOSX प्रणाली में एक प्रमाण पत्र की उम्मीद होगी

/System/Library/OpenSSL/cert.pem

मैंने इस पथ पर डाउनलोड किए गए प्रमाणपत्र की प्रतिलिपि बनाई और यह काम कर गया। HTH


2
मेरे लिए उबंटू 12.04 पर, जो काम करता है वह प्रमाणित मार्ग है~/.rvm/usr/ssl/cert.pem
Nazar Hussain

जहाँ आप सिस्टम प्रमाणपत्र की तलाश कर रहे हैं, वहां काम करने के लिए आप dtruss का उपयोग कैसे करते हैं?
pingu

@pingu सटीक रूप से याद नहीं कर सकते हैं कि आप मूल रूप से ड्रस चलाते हैं और आप इसे चलाने के लिए कहते हैं कि जो भी रूबी प्रक्रिया आप इसे "निरीक्षण" करना चाहते हैं। यह आउटपुट बहुत क्रियात्मक है लेकिन मूल रूप से आप देख पाएंगे कि प्रत्येक सिस्टम कॉल रूबी बना रहा है। कॉलों में से एक रीड फ़ाइल कॉल होगी जो उस फ़ाइल की ओर इशारा करती है जो मौजूद नहीं है। यहां प्रमाण पत्र को स्थानांतरित करें या एक लिंक बनाएं और आपको जाने के लिए अच्छा होना चाहिए।
स्टीवर्ट

रूबी को cacert.pemओएस एक्स पर नहीं दिखना चाहिए। ओएस एक्स का उपयोग नहीं करता है cacert.pem। सिस्टम और यूजर सर्टिफिकेट किचेन में स्टोर किए जाते हैं। रूबी को ओएस एक्स पर
किचेन के

इसे करने का बेहतरीन तरीका क्या है? क्या आप एक उदाहरण पोस्ट कर सकते हैं?
स्टीवर्ट

19

नया प्रमाणित रत्न इसे ठीक करने के लिए बनाया गया है:

https://github.com/stevegraham/certified


रूबी 2.0.04848 (2014-05-08) के साथ काम करता है [i386-mingw32]
इवमोरोव

1
मेरे साथ काम नहीं करने के लिए रेल 4.1.9, रूबी-2.1.5। मैंने इसे Gemfile में bundleजोड़ा,, स्पष्ट रूप से require "certified"केवल निश्चित होने के लिए जोड़ा , और कुछ भी नहीं बदलता है। मैं क्या खो रहा हूँ?
इसहाक बेतेश

रूबी को cacert.pemओएस एक्स पर नहीं दिखना चाहिए। ओएस एक्स का उपयोग नहीं करता है cacert.pem। सिस्टम और यूजर सर्टिफिकेट किचेन में स्टोर किए जाते हैं। रूबी को ओएस एक्स पर किचेन के साथ एकीकृत किया जाना चाहिए । ओपनएसएसएल ने कभी भी वितरित नहीं किया है cacert.pem। यह मेरे लिए स्पष्ट नहीं है कि कोई भी सॉफ्टवेयर इसके लिए ओपनएसएसएल को क्यों टाल देगा।
jww

18

अपने मणिफाइल में केवल 'प्रमाणित' रत्न जोड़ें और बंडल इंस्टॉल करें।

  1. मणि ' प्रमाणित '
  2. बंडल स्थापित करें

यह पुष्टि करते हुए कि इसने एल कैपिटान पर मदद की। धन्यवाद!
mcmlxxxiii

यह रेल और डेबियन के साथ पूरी तरह से काम करता है :) बड़ा बड़ा धन्यवाद!
सिग्मन रुत

17

नवीनतम मैकपोर्ट के साथ मैक ओएस एक्स लायन पर:

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

फिर, असफल नौकरी को फिर से चलाएँ।

ध्यान दें, एरिक जी 12 मई को उत्तर देने के बाद से प्रमाणित फ़ाइल स्थान बदल गया है।


सभी खोज और प्रयासों की एक भीड़ के बाद, यह एकमात्र ऐसी चीज थी जिसने समस्या को हल किया। धन्यवाद!
शॉनवॉल

1
शांत, यह तय है। लेकिन जब तक export SSL_CERT_FILE=/usr/local/etc/openssl/cacert.pem
होमबॉयर के साथ ओपनस्लैप

14

एक लाइनर एक व्यवस्थापक प्रॉम्प्ट में विंडोज के लिए इसे ठीक करता है

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]

1
छोटा सुधार - आपको बस रूबी को अपडेट करने की आवश्यकता है और फिर आप https स्रोत को वापस जोड़ सकते हैं - यह सिर्फ मेरे लिए एक आकर्षण की तरह काम करता है: मणि स्रोत -r rubygems.org => मणि स्रोत -a rubygems.org => मणि अद्यतन - system => मणि के स्रोत -r rubygems.org => मणि के स्रोत -a rubygems.org => मणि स्थापित करें [NAME_OF_GEM]
मलयानियो

13

खैर यह मेरे लिए काम किया

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

मेरे ubuntu 12.04 के खुलने के कार्यान्वयन के साथ कुछ गलत है


3
यह काम करता है, लेकिन मैं इस के साथ समाप्त करने के लिए किया था: curl -O http://curl.haxx.se/ca/cacert.pem, mv cacert.pem cert.pem,mv cert.pem $rvm_path/usr/ssl
आरएएफ

मेरे लिए काम किया, मैक ओएस एक्स योसेमाइट। धन्यवाद!
अनवुदे

12

यह जानते हुए कि यह एक लंगड़ा समाधान है, मैं अभी भी इसे साझा कर रहा हूं क्योंकि ऐसा लगता है कि यहां जवाब देने वाले बहुत कम लोग विंडोज का उपयोग करते हैं , और मुझे लगता है कि विंडोज के कुछ उपयोगकर्ता (मुझे शामिल) एक सरल और सहज दृष्टिकोण की सराहना करेंगे।

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

यह बताता है कि सर्टिफिकेट फ़ाइल की तलाश में आपका ओपनस्एल कहां है। मेरा नाम लुइस नहीं है, लेकिन मेरा था C:/Users/Luis/Code/luislavena/knap-build/var/knapsack/software/x86-windows/openssl/1.0.0l/ssl/cert.pem। प्रत्येक वातावरण (उदाहरण के openknapsackबजाय luislavena) के आधार पर पथ भिन्न हो सकता है ।

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 अपनी स्थानीय डिस्क में निर्देशिका बनाई और इसमें एक प्रमाणित फ़ाइल डाल दी।

जैसा है, वैसे ही रहो, यह निश्चित रूप से काम करेगा।


2
प्रतिभाशाली। हैकी, लेकिन यह केवल एक चीज थी जिसने मेरी समस्या को हल किया।
डैनियल मैगलियोला

डिबगिंग का अच्छा तरीका ... मेरे लिए उपयोगकर्ता "जस्टिन" था। Googling से पता चलता है कि यह RubyInstaller के साथ एक ज्ञात मुद्दा है। दुर्भाग्य से, उस निर्देशिका (+ pem फ़ाइल) को स्वयं बनाते हुए, मेरे लिए समस्या का समाधान नहीं हुआ
Wouter

12

मैं स्थापित करने की कोशिश है curl-ca-bundleके साथ brewहै, लेकिन पैकेज उपलब्ध अधिक है:

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

समाधान जो मैक पर मेरे लिए काम करता था:

 $ 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

1
यह मेरे लिए काम किया - लेकिन रास्ता गलत है। होना चाहिए:export SSL_CERT_FILE=/usr/local/etc/openssl/certs/cacert.pem
dnlmzw

2
इसकी सादगी के कारण यह एक अच्छा समाधान है। इसके अलावा, अतिरिक्त प्रमाणपत्र को संदर्भित करके ~/.bash_profile, यह याद दिलाता है कि आगे अद्यतन की आवश्यकता होने पर क्या जोड़ा गया था (और, महत्वपूर्ण रूप से जहां)।
ऑक्सबस

इसने मेरे लिए काम किया। @dnlmzw पथ मेरे लिए ठीक था लेकिन निश्चित रूप से यह आपके सेटअप पर निर्भर करता है। धन्यवाद!
18:

निजी रत्न सर्वर URL जोड़ने की कोशिश करने पर मेरे लिए काम नहीं किया जो मेरे रत्न स्रोतों के लिए स्व-हस्ताक्षरित प्रमाण पत्र का उपयोग करता है। OSX 10.11.6 + रेंबव
साठ4

12

यहां डिबगिंग के उद्देश्यों के लिए एक और विकल्प है।

सुनिश्चित करें कि किसी भी उत्पादन वातावरण में इसका उपयोग न करें, क्योंकि यह पहली बार में एसएसएल का उपयोग करने के लाभों को नकार देगा। अपने स्थानीय विकास परिवेश में ऐसा करने के लिए यह कभी भी मान्य है।

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

26
डाउनवोट: हां, यह काम करता है, लेकिन एक वैध सीए बंडल स्थापित करने और वास्तव में समस्या को हल करने में बाधा इतनी कम है कि इस तरह का एक समाधान - जो एसएसएल की सुरक्षा को पूरी तरह से अमान्य कर देता है - एक समाधान नहीं है जिसे तब तक लागू किया जाना चाहिए जब तक आप एक ऐसे वातावरण में, जहां प्रमाणपत्र प्राधिकरण पूरी तरह से दुर्गम है (और फिर भी, आपको एक स्थानीय सीए बनाना चाहिए जो दोनों समापन बिंदुओं तक पहुंच योग्य हो)।
याउई

10
यह SSL सुरक्षा को पूरी तरह से हटाने के पास नहीं था, यह इसे पूरी तरह से हटा देता है। ऐसा कभी न करें।
ड्रैन

15
डिबगिंग के लिए यह पर्याप्त है
रिकडक

1
यह 1.9 में एक चेतावनी पैदा करता है
इवान

2
यह वास्तविक इंटरनेट पर उत्पादन कार्य के लिए एक बुरा समाधान है, लेकिन यह मज़बूती से सच नहीं है कि "आप सभी पर एसएसएल का उपयोग नहीं कर सकते हैं"। तार पर एन्क्रिप्टेड ट्रैफ़िक स्पष्ट में ट्रैफ़िक से बेहतर है। हां, आपके पास इन-द-मिडिल हमलों की संभावना है, लेकिन वे कम से कम एक पायदान की दूरी पर खड़े रहते हैं, क्योंकि यह सीधे सादे ट्रैफिक पर गरमाता है, क्योंकि इससे ग्लाइड होता है।
मार्क रीड

10

रूबी परियोजना पर काम करते समय मेरे पास यही मुद्दा था। मैं विंडोज 7 64 बिट का उपयोग कर रहा हूं।

मैंने इसे हल किया:

  1. Http://curl.haxx.se/ca/cacert.pem से cacert.pem फ़ाइल डाउनलोड करना ।
  2. उस फ़ाइल को C: /RubyCert प्रमाणपत्र/cacert.pem पर सहेजा गया
  3. फिर मेरे पर्यावरण चर "SSL_CERT_FILE" को "C: \ RubyCert प्रमाणपत्र \ cacert.dem" पर सेट करें

स्रोत: https://gist.github.com/fnichol/867550


चूंकि यह विंडोज है, इसलिए बैकस्लेह का उपयोग पर्यावरण चर के मूल्य में किया जाना चाहिए।
क्रिश्चियन बौमन

यह एकमात्र उपाय है जो मेरे लिए "बंडल" को ठीक करने के लिए काम करता है,
रूबीमेग

7

सबसे सीधा जवाब जिसने मेरे लिए काम किया वह था

sudo apt-get install openssl ca-certificates

और वोइला !!!


1
काश मैं एक बार से ज्यादा वोट दे पाता क्योंकि आप मुझे इतना समय बचाते!
स्टीफन

1
@ स्टीफन - काश आप भी :-) होते। इसने मुझे बहुत समय बचाया, इसलिए मैंने सोचा कि मैं इसे यहाँ पोस्ट करूँगा, और यह किसी और की भी मदद कर सकता है।
प्रतीक बोथरा

7

होमब्रेव के साथ 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

1
मेरे लिए 10.9 पर भी काम करता है।
सामी संहिता

1
मेरे लिए ठीक है, OS X 10.9.1। बहुत बढ़िया!
रोज़गारोपडोज

जब आप इन गूंगी समस्याओं को ठीक करने के लिए यादृच्छिक समाधान का शिकार करना चाहते हैं, तो कुछ गंभीर रूप से टूट जाता है। ये सभी उत्तर पूरी तरह से कुछ अलग करते हैं और ये सभी कुछ बिंदु पर लोगों की मदद करने के लिए लग रहे थे। WTF?
सेरसेग

13
कर्ल-सीए-बंडल को काढ़ा से बदला गया था
Fa11enAngel

4

फिर, जैसा कि इस ब्लॉग पोस्ट से पता चलता है,

" नेट का इलाज कैसे करें :: HTTP का जोखिम भरा डिफ़ॉल्ट HTTPS व्यवहार "

आप always_verify_ssl_certificatesमणि को स्थापित करना चाह सकते हैं जो आपको एक डिफ़ॉल्ट मान सेट करने की अनुमति देता है ca_file


4

इसने मेरे लिए काम किया। यदि आप आरवीएम और काढ़ा का उपयोग कर रहे हैं:

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

4

मैं इस मुद्दे में भाग गया और सुझाव दिया तय की rvm osx-ssl-certs update all कि मैं OSX पर एक RVM उपयोगकर्ता हूँ, इसके बावजूद काम नहीं किया।

मेरे लिए काम करने वाला फ़िक्स खुलने के नवीनतम संस्करण को फिर से स्थापित कर रहा था:

brew update
brew remove openssl
brew install openssl

4

मैंने इस समस्या को टर्मिनल में चलाकर ठीक किया। पूरा राइटअप यहाँ पर उपलब्ध है

rvm install 2.2.0 --disable-binary

3

OSX समाधान:

नवीनतम आरवीएम स्थिर संस्करण स्थापित करें

rvm get stable

प्रमाणपत्रों को स्वचालित रूप से हल करने के लिए rvm कमांड का उपयोग करें

rvm osx-ssl-certs update all

1
मैंने यह कोशिश की और यह मेरे काम नहीं आया। यहाँ मेरा समाधान है: stackoverflow.com/a/16741712/62
Liron Yahdav

आरवीएम के माध्यम से रूबी 2.0.0 स्थापित करने के बाद मेरे लिए काम किया।
क्रिस पीटर्स

3

यदि आप अपने रेल एप्लिकेशन को स्थानीय रूप से चला रहे हैं तो बस इस लाइन को application.rb के निचले भाग में जोड़ें।

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

इसके बाद आप बिना किसी समस्या के ऐप का उपयोग कर सकते हैं। आप इसे हैक कह सकते हैं लेकिन यह अनुशंसित नहीं है। केवल तभी उपयोग करें जब आपको स्थानीय रूप से चलाने की आवश्यकता हो


2

यहाँ मैंने वही किया है जो मदद करता है यदि आप विशेष रूप से तेंदुए पर समस्या कर रहे हैं।

मेरा प्रमाणपत्र पुराना था और अद्यतन करने की आवश्यकता थी। मैंने इसे डाउनलोड किया:

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

फिर मेरे प्रमाण को बदल दिया जो तेंदुए के यहाँ पाया गया था:

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

आपके पास जो कुछ भी है उसे पुनः लोड करें और इसे जाने के लिए अच्छा होना चाहिए!


2

सिर्फ इसलिए कि निर्देश मेरे लिए काम करने के लिए थोड़ा अलग थे, मुझे लगा कि मैं अपने 2 सेंट जोड़ रहा हूं:

मैं OS X शेर पर हूं और macports और rvm का उपयोग कर रहा हूं

मैंने कर्ल-सीए-बंडल स्थापित किया:

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

आप पूरे CA चिड़ियाघर ( ca-bundle.crt) को छोड़ सकते हैं और शायद Google इंटरनेट प्राधिकरण G2 का उपयोग कर सकते हैं :ssl => {:ca_path => "/share/curl/curl-ca-bundle.crt"}। Google को कनेक्शन प्रमाणित करने के लिए केवल यही आवश्यक है।
jww

2

यदि आपके पास / usr / स्थानीय / etc / में एक प्रतीकात्मक लिंक है, जो 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)

2

मेरे लिए जो काम किया गया है, वह उत्तर का एक संयोजन है:

# 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

1

मुझे कई दिनों तक परेशानी हुई थी और चारों ओर से हैक कर रहा था। यह लिंक मेरे लिए बेहद मददगार साबित हुई। इसने मुझे मैक ओएस एक्स 9 पर एसएसएल का सफल अपग्रेड करने में मदद की।


1

मैक ओएसएक्स में कभी-कभी यह आरवीएम की समस्या नहीं होती है , यदि आप .rvm को हटाते हैं, तो समस्या अभी भी (जासूसी रूप से जब आप टिमैमाचिन से डेटा बैकअप लेते हैं), तो आप इस तरह से कोशिश कर सकते हैं।

1.brew update
2.brew install openssl

1

जोड़ा जा रहा है gem 'certified', '~> 1.0'मेरे लिए Gemfileऔर चल bundleमेरे लिए यह समस्या हल हो जाती।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.