Używam Authlogic-Connect do logowania osób trzecich. Po uruchomieniu odpowiednich migracji logowanie na Twitterze / Google / yahoo wydaje się działać dobrze, ale logowanie do Facebooka powoduje wyjątek:
SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed
Dziennik deweloperski pokazuje
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'
Proszę zasugeruj..
Odpowiedzi:
Wystąpił podobny problem podczas próby użycia generatora JQuery dla Rails 3
Rozwiązałem to w ten sposób:
Uzyskaj pakiet CURL Certificate Authority (CA). Możesz to zrobić za pomocą:
sudo port install curl-ca-bundle
[jeśli używasz MacPorts]wget http://curl.haxx.se/ca/cacert.pem
Wykonać kod Ruby próbuje zweryfikować certyfikat SSL:
SSL_CERT_FILE=/opt/local/etc/certs/cacert.pem rails generate jquery:install
. W twoim przypadku, chcesz ustawić to jako zmienną środowiskową gdzieś, gdzie serwer ją odbiera, lub dodać coś takiego jakENV['SSL_CERT_FILE'] = /path/to/your/new/cacert.pem
w pliku environment.rb.Można też po prostu zainstalować pliki Ca (nie próbowałem tego) do systemu operacyjnego - nie są długie instrukcje tutaj - to powinno działać w podobny sposób, ale nie próbowałem tego osobiście.
Zasadniczo problem polega na tym, że niektóre usługi internetowe odpowiadają certyfikatem podpisanym wobec urzędu certyfikacji, którego OpenSSL nie może zweryfikować.
źródło
export SSL_CERT_FILE=/usr/local/etc/openssl/certs/cert.pem
sudo curl http://curl.haxx.se/ca/cacert.pem >> /usr/local/etc/cacert.pem
za nimexport SSL_CERT_FILE=/usr/local/etc/cacert.pem
SSL_CERT_FILE=/usr/local/etc/openssl/cert.pem
do.env
pliku mojej aplikacji i voila - wszyscy są szczęśliwi.Jeśli używasz RVM na OS X, prawdopodobnie musisz uruchomić to:
Więcej informacji tutaj: http://rvm.io/support/fixing-broken-ssl-certificates
A oto pełne wyjaśnienie: https://github.com/wayneeseguin/rvm/blob/master/help/osx-ssl-certs.md
Aktualizacja
W Ruby 2.2 może być konieczna ponowna instalacja Ruby ze źródła, aby to naprawić. Oto jak (zastąp
2.2.3
swoją wersją Ruby):Podziękowania dla https://stackoverflow.com/a/32363597/4353 i Iana Connora .
źródło
rvm reinstall 2.2.0 --disable-binary
ale musisz zainstalować pakiet i zacząć od nowa.Oto, jak możesz to naprawić w systemie Windows: https://gist.github.com/867550 (stworzony przez Fletcher Nichol)
Fragment:
źródło
Ruby nie może znaleźć żadnych certyfikatów głównych, którym można zaufać.
Spójrz na ten post na blogu, aby znaleźć rozwiązanie: „ Ruby 1.9 i błąd SSL ”.
źródło
Przyczyną tego błędu w OSX jest ruby zainstalowany w rvm.
Jeśli napotkasz ten problem w OSX, możesz znaleźć naprawdę szerokie wyjaśnienie tego w tym poście na blogu:
http://toadle.me/2015/04/16/fixing-failing-ssl-verification-with-rvm.html
Krótka wersja jest taka, że w przypadku niektórych wersji Ruby RVM pobiera wstępnie skompilowane pliki binarne, które szukają certyfikatów w niewłaściwej lokalizacji. Wymuszając na RVM pobranie źródła i kompilację na własnym komputerze, upewniasz się, że konfiguracja lokalizacji certyfikatu jest poprawna.
Polecenie to:
jeśli masz już wersję, o której mowa, możesz ją ponownie zainstalować za pomocą:
(oczywiście, w razie potrzeby zamień swoją wersję ruby).
źródło
\curl -sSL https://get.rvm.io | bash -s stable --autolibs=homebrew
a potemrvm install <ruby-version> --disable-binary
W pewnym momencie zrobiłem to również,rvm get head
ponieważ są to niektóre krwawiące problemy.SSL_CERT_FILE
. Porvm install 2.2.0 --disable-binary
rozwiązaniu problemu.Problem polega na tym, że Ruby nie może znaleźć certyfikatu głównego, któremu można zaufać. Od wersji 1.9 ruby to sprawdza. Musisz upewnić się, że masz certyfikat curl w systemie w postaci pliku pem. Musisz także upewnić się, że certyfikat znajduje się w miejscu, w którym Ruby się spodziewa. Możesz uzyskać ten certyfikat na ...
Jeśli jesteś użytkownikiem RVM i OSX, lokalizacja pliku certyfikatu będzie się różnić w zależności od używanej wersji ruby. Wyraźne ustawienie ścieżki za pomocą: ca_path jest ZŁYM pomysłem, ponieważ twój kod nie będzie przenośny, gdy przejdzie do produkcji. Tam chcesz dostarczyć Rubinowi certyfikat w domyślnej lokalizacji (i załóż, że twoi deweloperzy wiedzą, co robią). Możesz użyć narzędzia dtruss, aby dowiedzieć się, gdzie system szuka pliku certyfikatu.
W moim przypadku system szukał pliku cert w
jednak system MACOSX oczekuje certyfikatu
Skopiowałem pobrany certyfikat na tę ścieżkę i zadziałało. HTH
źródło
~/.rvm/usr/ssl/cert.pem
cacert.pem
systemu OS X. OS X nie używacacert.pem
. Certyfikaty systemowe i certyfikaty użytkownika są przechowywane w KeyChain. Ruby powinien integrować się z KeyChain na OS X.Nowy certyfikowany klejnot został zaprojektowany, aby to naprawić:
https://github.com/stevegraham/certified
źródło
bundle
wyraźnie dodałemrequire "certified"
tylko dla pewności i nic się nie zmienia. czego mi brakuje?cacert.pem
systemu OS X. OS X nie używacacert.pem
. Certyfikaty systemowe i certyfikaty użytkownika są przechowywane w KeyChain. Ruby powinien integrować się z KeyChain na OS X. OpenSSL nigdy nie rozpowszechniałcacert.pem
. Nie jest dla mnie jasne, dlaczego jakiekolwiek oprogramowanie odłożyłoby się w tym kierunku do OpenSSL.Wystarczy dodać „certyfikowany” klejnot do pliku gem i uruchomić instalację pakietu.
źródło
W systemie Mac OS X Lion z najnowszym Macport:
Następnie ponownie uruchom nieudane zadanie.
Uwaga: wydaje się, że lokalizacja pliku cert zmieniła się od czasu, gdy Eric G odpowiedział 12 maja.
źródło
export SSL_CERT_FILE=/usr/local/etc/openssl/cacert.pem
.profile lub .bashrcJeden linijka naprawia go dla systemu Windows w monicie administratora
choco install wget
(najpierw zobacz chocolatey.org )Lub po prostu zrób to:
Metoda Milanio:
źródło
Cóż, to zadziałało dla mnie
Coś jest nie tak z implementacją openssl mojego Ubuntu 12.04
źródło
curl -O http://curl.haxx.se/ca/cacert.pem
,mv cacert.pem cert.pem
,mv cert.pem $rvm_path/usr/ssl
Wiedząc, że jest to raczej kiepskie rozwiązanie, nadal się tym dzielę, ponieważ wygląda na to, że bardzo niewiele osób odpowiadających tutaj używa systemu Windows i myślę, że niektórzy użytkownicy systemu Windows (włącznie ze mną) doceniliby proste i intuicyjne podejście.
To mówi, gdzie twój openssl szuka pliku cert. Nie nazywam się Luis, ale moje było
C:/Users/Luis/Code/luislavena/knap-build/var/knapsack/software/x86-windows/openssl/1.0.0l/ssl/cert.pem
. Ścieżka może być różna w zależności od każdego środowiska (np.openknapsack
Zamiastluislavena
).Ścieżka nie zmieniła się nawet po
set SSL_CERT_FILE=C:\foo\bar\baz\cert.pem
konsoli, więc ... Utworzyłem katalogC:\Users\Luis\Code\luislavena\knap-build\var\knapsack\software\x86-windows\openssl\1.0.0l\ssl
na dysku lokalnym i umieściłem w nim plik cert.Jakkolwiek kulawe, to na pewno zadziała.
źródło
Próbuję zainstalować za
curl-ca-bundle
pomocąbrew
, ale pakiet nie jest już dostępny:Rozwiązaniem, które zadziałało na Macu było:
Dodaj ten wiersz w swoim
~/.bash_profile
(lub~/.zshrc
dla zsh):Następnie zaktualizuj terminal:
źródło
export SSL_CERT_FILE=/usr/local/etc/openssl/certs/cacert.pem
~/.bash_profile
, pozostawia przypomnienie o tym, co zostało dodane (i, co najważniejsze, gdzie), gdy wymagane są dalsze aktualizacje.Oto kolejna opcja do celów debugowania.
Pamiętaj, aby nigdy nie używać tego w żadnym środowisku produkcyjnym, ponieważ spowoduje to negację korzyści wynikających z używania SSL. Jest to zawsze uzasadnione tylko w lokalnym środowisku programistycznym.
źródło
Miałem ten sam problem podczas pracy nad projektem Ruby. Używam Windows 7 64bit.
Rozwiązałem to przez:
źródło: https://gist.github.com/fnichol/867550
źródło
Najprostsza odpowiedź, która działała dla mnie, była następująca
I voila !!!
źródło
OS X 10.8.x z Homebrew:
źródło
Następnie, jak sugeruje ten post na blogu,
„ Jak leczyć Net :: ryzykowne domyślne zachowanie HTTPS HTTP ”
możesz zainstalować
always_verify_ssl_certificates
klejnot, który pozwala ustawić wartość domyślną dlaca_file
.źródło
To zadziałało dla mnie. Jeśli używasz RVM i Brew:
źródło
Natknąłem się na ten problem i sugerowana poprawka
rvm osx-ssl-certs update all
nie zadziałała, mimo że jestem użytkownikiem RVM na OSX.Dla mnie poprawką było ponowne zainstalowanie najnowszej wersji openssl:
źródło
Rozwiązałem ten problem, uruchamiając go w terminalu. Pełny opis jest dostępny tutaj
źródło
Rozwiązanie OSX:
zainstaluj najnowszą stabilną wersję rvm
użyj komendy rvm, aby automatycznie rozwiązać certyfikaty
źródło
Jeśli używasz aplikacji Railsowej lokalnie, po prostu dodaj ten wiersz na dole application.rb.
Następnie możesz korzystać z aplikacji bez żadnych problemów. Możesz nazwać to hackem, ale nie jest to zalecane. Używaj tylko wtedy, gdy potrzebujesz uruchomić lokalnie
źródło
Oto, co zrobiłem, co pomogło, jeśli masz konkretny problem z Leopardem.
Mój certyfikat był stary i wymagał aktualizacji. Pobrałem to:
http://curl.haxx.se/ca/cacert.pem
Następnie zastąpiłem mój certyfikat, który został tutaj znaleziony na Leopardzie:
Załaduj ponownie wszystko, co masz do niego dostęp, i powinieneś już iść!
źródło
Tylko dlatego, że instrukcje były nieco inne dla tego, co działało dla mnie, pomyślałem, że dodam moje 2 centy:
Jestem na OS X Lion i używam Macports i RVM
Zainstalowałem pakiet curl-ca:
Następnie dostosowałem konfigurację omniauth do tego:
źródło
ca-bundle.crt
) i użyć Google Internet Authority G2 w:ssl => {:ca_path => "/share/curl/curl-ca-bundle.crt"}
. To jedyny potrzebny do certyfikacji połączeń z Google.Jeśli masz dowiązanie symboliczne w / usr / local / etc / openssl wskazujące na cert.pem, spróbuj to zrobić:
źródło
Dla mnie zadziałała kombinacja odpowiedzi, a mianowicie:
źródło
Miałem kłopoty przez kilka dni i rąbałem wokół. Ten link okazał się dla mnie niezwykle pomocny. Pomogło mi to w udanej aktualizacji SSL na MAC OS X 9.
źródło
Czasami nie zawsze jest to problem rvm w MAC OSX, jeśli usuniesz .rvm, problem nadal (szczególnie podczas tworzenia kopii zapasowej danych z timemachine), możesz spróbować w ten sposób.
źródło
Dodanie
gem 'certified', '~> 1.0'
do mnieGemfile
i uruchomieniebundle
rozwiązało dla mnie ten problem.źródło