Soru Ruby 1.9.3 kullanırken “Sertifika doğrulanmadı” OpenSSL hatası


Mac OS 10.6.8'de Ruby 1.9.3p0 kullanıyorum (rvm kullanılarak yüklendi). Kullanarak yeni bir Rails uygulaması oluşturmaya çalışırken GitHub'da barındırılan uygulama şablonuBununla (örneğin):

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

Bu hata iletisini alıyorum:

/Users/me/.rvm/rubies/ruby-1.9.3-p0/lib/ruby/1.9.1/net/http.rb:799:in `connect ': SSL_connect
return = 1 errno = 0 state = SSLv3 sunucu sertifikası B'yi oku: sertifika doğrulaması başarısız oldu
(OpenSSL :: SSL :: SSLError)

Ruby dil yorumlayıcısının uygulama şablonu dosyasını istemek için GitHub'a bağlanmak için OpenSSL kullandığını anlıyorum. GitHub, tüm bağlantıların SSL kullanılarak yapılmasını gerektirir. OpenSSL sunucu sertifikasını doğrulayamadığından bağlantı başarısız oldu.

Bir sertifika dosyasını indirerek sorunu çözebildim:

$ cd / opt / local / etc / openssl
$ sudo curl -O http://curl.haxx.se/ca/cacert.pem
$ sudo mv cacert.pem Instagram Hesabındaki Resim ve Videoları cert.pem

Ruby 1.9.2'yi kullanırken problem yaşamadım. Ruby 1.9.3 için "sertifika doğrulanamadı" sorununu neden aldım? Bu bir Ruby 1.9.3 hatası mı? Mac OS 10.6.8'e özgüdür? Çözümüm bunu çözmenin doğru yolu mu?


18
2017-11-12 00:04


Menşei


Bu sorun birkaç ay önce net / http kullanan bir başka gem ile vardı. Bu şekilde çözüldü: Koala.http_service.ca_path = "/ etc / ssl / certs /" Yani CA-Path'ınızı da davanıza eklemeniz gerekebilir. - Deradon
Daniel - aynı hatayı almak aynı şeyi yapıyor! Nasıl çözdün? Yukarıdaki 3 çizgiyi denedi - sevinç yok. - Bob Walsh
Merhaba Bob - Bu hatanın hala ısırdığını görmek için üzgünüm. Sertifikalarımı yukarıda açıklandığı gibi güncelledikten sonra benim için iyi çalıştığı için bir çözüm önerim yok. Bu sisteme özgü, teşhis etmek çok zor. Bir rvm sorunu olabilir. - Daniel Kehoe
Cevabıma bir baksana. stackoverflow.com/a/16983443/11792 - Pavel Nikolov


Cevaplar:


Doğru cevaba katılan birçok hareketli parça var. İşletim sisteminize, Ruby sürümüne, OpenSSL sürümüne, Rubygems sürümüne bağlıdır. Araştırma yaptıktan sonra bir makale yazmayı bitirdim. Yazım, hatanın nedenlerini açıklıyor, daha fazla tanı için adımlar sunuyor, birkaç geçici çözüm sunuyor ve olası çözümleri öneriyor. Bu yardımcı olacaktır:

OpenSSL Hataları ve Rails - Sertifika Doğrulama Başarısız

GitHub'da ilgili taahhütlere ve konulara bağlantılar da vardır.


21
2018-05-24 18:47



Cevabıma bir bakın: stackoverflow.com/a/16983443/11792 - Pavel Nikolov
Pencerelerde iseniz, Windows çözümüne tıklayın ve SSL_CERT ortam değişkenini ayarlamayı ve terminali kapatıp yeniden açmayı unutmayın. Sonunda bir çözünürlük elde etmek için çok iyi! - JoeyC


Benim için bu, en son RVM'ye (rvm 1.20.12) güncelledikten sonra ruby-1.9.3-p429'u yükledikten sonra homebrew ile OS X'de meydana geldi. Sorunu basitçe koşarak yeniden üretebilirim:

$ 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 > 

Çözüm, söz konusu olana benzerdi, ancak yol yanlıştı. Bunu çalıştırmak onu tamir etti:

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

Doğru yola ilişkin ipucu, RVM ile ruby-1.9.3-p429'u kurarken, çıktıda bu oldu:

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

aldım /usr/local/etc/openssl yol, ama hayır cert.pem Bu dizinde dosya, bu yüzden RVM neden sertifikaları güncel olduğunu iddia emin değilim. Bunu neden ilk önce yapmak zorunda olduğumu bilmek güzel olurdu, ama şimdi araştırmak için zamanım yok.


13
2018-05-25 06:49



curl http://curl.haxx.se/ca/cacert.pem -o /usr/local/etc/openssl/cert.pem tam olarak ihtiyacım olan şey. Teşekkürler - Eben Geer
Bu aslında RVM ile bir hata olduğunu unutmayın: github.com/wayneeseguin/rvm/issues/1920. O zamandan beri tamir edildi. - Liron Yahdav
Çok teşekkür ederim! Ben Ruby 1.8.7-p370 kullanıyorum ve bunu çalıştırmak zorunda kaldı: curl http://curl.haxx.se/ca/cacert.pem -o /etc/ssl/certs/ca-certificates.crt sorunu çözmek. Bahşiş harika! - Blue Smith
Sertifika yolu https'ye taşındı: https://curl.haxx.se/ca/cacert.pem - ToniTornado


RVM Ruby'mi bir RVM OpenSSL yüklemesine karşı derlediğimde aynı problemi yaşadım. Sorun gidermek için ~ / .rvm / usr / ssl / cert.pem altındaki orijinal poster tarafından indirilen cacerts.pem dosyasını taşıdım.


11
2018-02-18 18:09



Teşekkürler dostum, bütün kurbanları denedim, ama ipucunuz çözüldü! - Wukerplank
Bu neredeyse benim için çalıştı, ama cacerts.pem dosyası koymak zorunda kaldı /usr/local/etc/openssl/cert.pem. İşte benim sorunumun ve çözümün detayları: stackoverflow.com/a/16741712/62 - Liron Yahdav
Ben bir cert.pem yoktu, bu yüzden ~ / .rvm / usr / ssl altında bir kopya oluşturdum ve cert.pem curl.haxx.se dosyasından. Maalesef hala aynı Faraday sorununu yaşıyorum: Sertifika Doğrulama Başarısız. Ruby 1.9.3 ve koala sürüm 1.6.0 kullanıyorum (bununla ilgili olsa da emin değilim). - JoeyC


Aynı problemi yaşıyordum.

Sonunda sabitlediğim yol, MacPorts aracılığıyla yüklediğim OpenSSL sürümümü yükseltmekti. 2009'dan beri OpenSSL sürümünü çalıştırıyordum, bu yüzden MacPorts kurulumumu yeni sürüme geçirdim ve OpenSSL taksimi portskomut satırı arayüzü ve hata kayboldu.

Ruby / Rails ve Mac tabanlı kurulumlarda OpenSSL arasında bazı entegrasyonlar söz konusu olmaz. Benim durumumda, Facebook ile giriş Facebook oAuth / Giriş jetonunu uygulamamıza gönderdiğinde düzgün çalışacak şekilde, Devise & OmniAuth için geçerli bir SSL sertifikası gerekir. graph.facebook.com hangi OpenSSL eski sürümünde değildi.


2
2017-08-25 11:40



Teşekkürler! En iyi şey, burada açıklandığı gibi openssl'in yeni bir kopyasını yüklemek için rvm kullanmak olabilir: beginrescueend.com/packages/openssl. - Daniel Kehoe


Openssl sertifika dizini /usr/lib/ssl/ Debian'da. Yani, üç çizgiyi takip etmek benim için yeterliydi.

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

1
2017-11-12 02:46





Muhtemelen 1.9.2 ve 1.9.3'ü nasıl kurduğunuzdan kaynaklanıyor olabilir - belki de yapılandırılmış her şeyi biraz farklı şekilde oluşturmak için kullandığınız araç. Ya da belki OpenSSL'nin farklı versiyonlarını kullanırlar.

İşte Net ile karşılaşabileceğim tek potansiyel değişiklik: 1.9.2 ve 1.9.3 arasındaki HTTP

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

(eğer farklılığı görmek istersen ...)

git klon https://github.com/ruby/ruby.git
cd yakut
git diff origin / ruby_1_9_2 kaynağı / ruby_1_9_3 - http.rb

0
2018-02-16 10:26



Ruby 1.9.2 ve 1.9.3'ü yüklemek için rvm kullandım. - Daniel Kehoe


Benzer bir sorun vardı ama Rails değil, sadece Ruby on Windows. Kullanarak çözdüm cacert.pem Sertifika ve sertifikanın yerini "SSL_CERT_FILE" çevre değişkenine ayarlama

Detaylı cevap burada: https://stackoverflow.com/a/35429863/4747587


0