SSL_connect kembali = 1 errno = 0 status = SSLv3 server baca sertifikat B: verifikasi sertifikat gagal

281

Saya menggunakan Authlogic-Connect untuk login pihak ketiga. Setelah menjalankan migrasi yang sesuai, login Twitter / Google / yahoo tampaknya berfungsi dengan baik tetapi login facebook memberikan pengecualian:

SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed

Log dev menunjukkan

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'

Tolong sarankan ..

Vikash
sumber
2
Apakah ini membantu: stackoverflow.com/q/3977303/382818
Zabba
Berikut adalah solusi terbaik yang saya dapat temukan sejauh ini stackoverflow.com/a/16983443/11792
Pavel Nikolov

Jawaban:

138

Saya mengalami masalah yang sama ketika mencoba menggunakan generator JQuery untuk Rails 3

Saya menyelesaikannya seperti ini:

  1. Dapatkan bundel CURL Certificate Authority (CA). Anda dapat melakukan ini dengan:

    • sudo port install curl-ca-bundle [jika Anda menggunakan MacPorts]
    • atau langsung tarik ke bawah wget http://curl.haxx.se/ca/cacert.pem
  2. Mengeksekusi kode ruby yang mencoba untuk memverifikasi sertifikasi SSL: SSL_CERT_FILE=/opt/local/etc/certs/cacert.pem rails generate jquery:install. Dalam kasus Anda, Anda ingin mengatur ini sebagai variabel lingkungan di suatu tempat server mengambilnya atau menambahkan sesuatu seperti ENV['SSL_CERT_FILE'] = /path/to/your/new/cacert.pemdi file environment.rb Anda.

Anda juga dapat menginstal file CA (saya belum mencoba ini) ke OS - ada instruksi yang panjang di sini - ini harus bekerja dengan cara yang sama, tetapi saya belum mencobanya secara pribadi.

Pada dasarnya, masalah yang Anda hadapi adalah beberapa layanan web merespons dengan sertifikat yang ditandatangani terhadap CA yang tidak dapat diverifikasi OpenSSL.

Erik G.
sumber
1
Ini juga berfungsi untuk saya saat mencoba terhubung ke akun gmail saya menggunakan Ruby Net :: IMAP dari skrip ruby. Terima kasih.
Jignesh Gohel
4
Ya, ini berfungsi dengan baik di ruby-1.9.3. Saya menambahkannya ke konfigurasi bash saya. export SSL_CERT_FILE=/usr/local/etc/openssl/certs/cert.pem
andersjanmyr
5
Saya tidak punya / usr / local / etc / openssl, jadi saya berlari sudo curl http://curl.haxx.se/ca/cacert.pem >> /usr/local/etc/cacert.pemdiikuti oleh export SSL_CERT_FILE=/usr/local/etc/cacert.pem
Lilith River
4
Berkembang di Mac saya, saya baru saja menambahkan SSL_CERT_FILE=/usr/local/etc/openssl/cert.pemke .envfile aplikasi dan voila - semua senang.
Dave Sag
8
Saya menghargai ironi menggunakan wget untuk mengunduh sertifikat keriting.
Trey
135

Jika Anda menggunakan RVM pada OS X, Anda mungkin perlu menjalankan ini:

rvm osx-ssl-certs update all

Informasi lebih lanjut di sini: http://rvm.io/support/fixing-broken-ssl-certificates

Dan inilah penjelasan lengkapnya: https://github.com/wayneeseguin/rvm/blob/master/help/osx-ssl-certs.md


Memperbarui

Pada Ruby 2.2, Anda mungkin harus menginstal ulang Ruby dari sumber untuk memperbaikinya. Begini caranya (ganti 2.2.3dengan versi Ruby Anda):

rvm reinstall 2.2.3 --disable-binary

Kredit untuk https://stackoverflow.com/a/32363597/4353 dan Ian Connor .

htanata
sumber
2
Berikut ini adalah artikel yang jauh lebih komprehensif dengan alternatif: railsapps.github.io/openssl-certificate-verify-failed.html
Peter P.
GALAT: pembaruan rvm telah dihapus. Lihat 'rvm get' dan rvm 'rubygems' CLI API sebagai gantinya
yang
@ user432506 Bagaimana Anda mendapatkan kesalahan itu? Saya menggunakan RVM stabil terbaru dan masih berfungsi.
htanata
4
Ini akan bekerja untuk sementara waktu, kemudian gagal untuk saya. Apa yang berhasil untuk saya sedang berjalan rvm reinstall 2.2.0 --disable-binarytetapi kemudian Anda harus menginstal bundel dan mulai segar.
Ian Connor
2
Ini adalah penyelamat besar dan harus menjadi jawaban yang diterima.
Siraris
129

Inilah cara Anda memperbaikinya di Windows: https://gist.github.com/867550 (dibuat oleh Fletcher Nichol)

Kutipan:

Cara Manual (Membosankan)

Unduh cacert.pemfile dari http://curl.haxx.se/ca/cacert.pem . Simpan file ini ke C:\RailsInstaller\cacert.pem.

Sekarang beri tahu ruby ​​tentang bundel otoritas sertifikat Anda dengan menetapkan SSL_CERT_FILE. Untuk mengatur ini di sesi prompt perintah Anda saat ini, ketik:

set SSL_CERT_FILE=C:\RailsInstaller\cacert.pem

Untuk menjadikan ini pengaturan permanen, tambahkan ini di panel kontrol Anda .

ryanjones
sumber
6
Terima kasih. Ini sangat berguna dan juga sangat sederhana.
John
Solusi di atas tidak membantu saya. Ini adalah panduan yang lebih baik untuk Windows: stackoverflow.com/questions/5720484/…
Sprachprofi
@Sprachprofi Solusi yang Anda tautkan hanya akan berfungsi untuk proyek 1 rel pada satu waktu (karena Anda menunjuk langsung ke sertifikat itu). Intisari yang telah saya tautkan (dibuat oleh Fletcher Nichol) akan memungkinkannya untuk mencakup setiap proyek / permata yang mencari sertifikat.
ryanjones
31

Ruby tidak dapat menemukan sertifikat root untuk dipercaya.

Lihatlah posting blog ini untuk solusinya: " Ruby 1.9 dan kesalahan SSL ".

Solusinya adalah dengan menginstal curl-ca-bundleport yang berisi sertifikat root yang sama yang digunakan oleh Firefox:

sudo port install curl-ca-bundle

dan beri tahu httpsobjek Anda untuk menggunakannya:

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

Perhatikan bahwa jika Anda ingin kode Anda berjalan di Ubuntu, Anda perlu mengatur ca_pathatributnya, dengan lokasi sertifikat default /etc/ssl/certs.

martoche
sumber
8
Ini tampaknya terjadi pada Windows juga, dalam hal ini solusi yang disarankan tidak akan berfungsi.
Bob Aman
24

Alasan Anda mendapatkan kesalahan ini pada OSX adalah ruby ​​yang diinstal rvm.

Jika Anda mengalami masalah ini di OSX Anda dapat menemukan penjelasan yang sangat luas tentang hal itu di posting blog ini:

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

Versi singkatnya adalah bahwa, untuk beberapa versi Ruby, RVM mengunduh binari yang telah dikompilasi, yang mencari sertifikat di lokasi yang salah. Dengan memaksa RVM untuk mengunduh sumber dan kompilasi pada mesin Anda sendiri, Anda memastikan bahwa konfigurasi untuk lokasi sertifikat sudah benar.

Perintah untuk melakukan ini adalah:

rvm install 2.2.0 --disable-binary

jika Anda sudah memiliki versi yang dimaksud, Anda dapat menginstalnya kembali dengan:

rvm reinstall 2.2.0 --disable-binary

(jelas, gantikan versi ruby ​​Anda sesuai kebutuhan).

paulmorar
sumber
Ini berhasil untuk saya. Posting blog yang Anda tunjuk juga bermanfaat, terima kasih!
Cristian
2
Ini bekerja untuk saya di El Capitan. Saya menanamkan rvm (rvm implode). Dipasang lagi dengan \curl -sSL https://get.rvm.io | bash -s stable --autolibs=homebrewkemudian rvm install <ruby-version> --disable-binary pada satu titik saya juga melakukan rvm get headkarena ini adalah beberapa masalah tepi pendarahan.
rylanb
Hanya solusi ini yang bekerja untuk saya, karena awalnya saya memiliki Ruby 2.0.0 pada El Capitan dan untuk beberapa alasan bahwa versi yang lebih lama tidak berfungsi bahkan dengan benar SSL_CERT_FILE. Setelah itu rvm install 2.2.0 --disable-binary, masalah diurutkan.
laimison
20

Masalahnya adalah bahwa ruby ​​tidak dapat menemukan sertifikat root untuk dipercaya. Pada 1,9 ruby ​​memeriksa ini. Anda harus memastikan bahwa Anda memiliki sertifikat ikal pada sistem Anda dalam bentuk file pem. Anda juga perlu memastikan bahwa sertifikat berada di lokasi yang diharapkan ruby. Anda bisa mendapatkan sertifikat ini di ...

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

Jika Anda pengguna RVM dan OSX, maka lokasi file sertifikat Anda akan bervariasi berdasarkan pada versi ruby ​​yang Anda gunakan. Menyetel path secara eksplisit dengan: ca_path adalah ide yang BAD karena kode Anda tidak akan portabel ketika sampai ke produksi. Untuk itu Anda ingin memberikan ruby ​​dengan sertifikat di lokasi default (dan anggap teman-teman Anda tahu apa yang mereka lakukan). Anda dapat menggunakan dtruss untuk mencari tahu di mana sistem mencari file sertifikat.

Dalam kasus saya, sistem sedang mencari file cert di

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

namun sistem MACOSX akan mengharapkan sertifikat masuk

/System/Library/OpenSSL/cert.pem

Saya menyalin sertifikat yang diunduh ke jalur ini dan berhasil. HTH

Stewart
sumber
2
Bagi saya di Ubuntu 12,04, jalur cert yang berfungsi adalah~/.rvm/usr/ssl/cert.pem
Nazar Hussain
Bagaimana Anda menggunakan dtruss untuk mengetahui di mana sistem mencari sertifikat?
pingu
@pingu tidak dapat mengingat perintah yang tepat pada dasarnya Anda menjalankan druss dan Anda mengatakannya untuk menjalankan proses ruby ​​apa pun yang Anda inginkan untuk "memeriksa". Outputnya sangat verbose tetapi pada dasarnya Anda akan dapat melihat setiap sistem yang dibuat ruby. Salah satu panggilan akan menjadi panggilan file baca yang akan menunjuk ke file yang tidak ada. Pindahkan sertifikat di sini atau buat tautan dan Anda harus siap.
Stewart
Ruby seharusnya tidak mencari cacert.pemdi OS X. OS X tidak digunakan cacert.pem. Sertifikat sistem dan pengguna disimpan di KeyChain. Ruby harus diintegrasikan dengan KeyChain di OS X.
jww
Apa cara terbaik untuk melakukan ini? Bisakah Anda memposting contoh?
Stewart
19

Permata bersertifikat baru dirancang untuk memperbaikinya:

https://github.com/stevegraham/certified

Kevin
sumber
Bekerja dengan ruby ​​2.0.0p481 (2014-05-08) [i386-mingw32]
Evmorov
1
Tidak bekerja untuk saya dengan Rails 4.1.9, ruby-2.1.5. Saya menambahkannya ke Gemfile bundle,, secara eksplisit ditambahkan require "certified"hanya untuk memastikan, dan tidak ada yang berubah. Apa yang saya lewatkan?
Isaac Betesh
Ruby seharusnya tidak mencari cacert.pemdi OS X. OS X tidak digunakan cacert.pem. Sertifikat sistem dan pengguna disimpan di KeyChain. Ruby harus berintegrasi dengan KeyChain di OS X. OpenSSL tidak pernah mendistribusikan a cacert.pem. Tidak jelas bagi saya mengapa perangkat lunak apa pun akan tunduk pada OpenSSL untuk itu.
jww
18

Cukup tambahkan gem 'bersertifikat' di gemfile Anda dan jalankan bundle install.

  1. permata ' bersertifikat '
  2. bundel instal
Nitish Kumar
sumber
Mengkonfirmasi bahwa ini membantu pada El Capitan. Terima kasih!
mcmlxxxiii
Ini bekerja sempurna dengan Rails dan Debian :) terima kasih besar!
Szymon Rut
17

Di Mac OS X Lion dengan macport terbaru:

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

Kemudian, jalankan kembali pekerjaan yang gagal.

Catatan, lokasi file cert tampaknya telah berubah sejak Eric G menjawab pada 12 Mei.

Mike
sumber
Setelah semua pencarian dan banyak upaya, ini adalah satu-satunya hal yang menyelesaikan masalah. Terima kasih!
shawnwall
1
keren, itu memperbaikinya. Tetapi selama openssl diinstal dengan homebrew, Anda harus menambahkan export SSL_CERT_FILE=/usr/local/etc/openssl/cacert.pemfile .profile atau .bashrc Anda
23tux
14

Satu liner memperbaikinya untuk Windows dalam prompt Admin

choco install wget(pertama lihat chocolatey.org )

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

Atau lakukan saja ini:

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

Metode Milanio:

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]
Jonathan
sumber
1
Perbaikan kecil - Anda hanya perlu memperbarui ruby ​​dan kemudian Anda dapat menambahkan kembali https sumber - ini hanya bekerja untuk saya seperti pesona: sumber permata -r rubygems.org => sumber permata -a rubygems.org => pembaruan permata --sistem => sumber permata -r rubygems.org => sumber permata -a rubygems.org => permata instal [NAME_OF_GEM]
milanio
13

Nah ini berhasil untuk saya

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

Ada yang salah dengan implementasi openssl dari ubuntu 12.04 saya

ramasamy
sumber
3
Karya ini, tapi aku harus selesai dengan ini: curl -O http://curl.haxx.se/ca/cacert.pem, mv cacert.pem cert.pem,mv cert.pem $rvm_path/usr/ssl
Raf
Bekerja untuk saya, Mac OS X Yosemite. Terima kasih!
anevaude
12

Walaupun mengetahui ini bukan solusi yang payah, saya masih membagikan ini karena sepertinya sangat sedikit orang yang menjawab di sini menggunakan Windows , dan saya pikir beberapa pengguna Windows (termasuk saya) akan menghargai pendekatan yang sederhana dan intuitif.

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

Itu memberitahu di mana openssl Anda mencari file cert. Nama saya bukan Luis, tetapi nama saya dulu C:/Users/Luis/Code/luislavena/knap-build/var/knapsack/software/x86-windows/openssl/1.0.0l/ssl/cert.pem. Path mungkin berbeda tergantung pada masing-masing lingkungan sendiri (misalnya openknapsackbukannya luislavena).

Path tidak berubah bahkan setelah set SSL_CERT_FILE=C:\foo\bar\baz\cert.pemmelalui konsol, jadi ... Saya membuat direktori C:\Users\Luis\Code\luislavena\knap-build\var\knapsack\software\x86-windows\openssl\1.0.0l\ssl di disk lokal saya dan memasukkan file cert ke dalamnya.

Seperti apa adanya, ini pasti akan berhasil.

Quv
sumber
2
Cemerlang. Meretas, tetapi ini adalah satu-satunya hal yang memecahkan masalah saya.
Daniel Magliola
Cara debugging yang bagus ... Bagi saya pengguna adalah "Justin". Googling menunjukkan bahwa ini tampaknya merupakan masalah yang diketahui dengan RubyInstaller. Sayangnya, membuat direktori itu (file + pem) sendiri, tidak memecahkan masalah bagi saya
Wouter
12

Saya sudah mencoba menginstal curl-ca-bundledengan brew, tetapi paket tersebut tidak lagi tersedia:

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

Solusi yang berhasil bagi saya di Mac adalah:

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

Tambahkan baris ini di ~/.bash_profile(atau ~/.zshrcuntuk zsh) Anda:

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

Kemudian perbarui terminal Anda:

$ source ~/.bash_profile
monteirobrena
sumber
1
Ini bekerja untuk saya - tetapi jalannya salah. Harus:export SSL_CERT_FILE=/usr/local/etc/openssl/certs/cacert.pem
dnlmzw
2
Ini adalah solusi yang bagus, karena kesederhanaannya. Juga, dengan merujuk pada sertifikat yang ditambahkan ~/.bash_profile, ia meninggalkan pengingat tentang apa yang ditambahkan (dan, yang terpenting di mana) ketika pembaruan lebih lanjut diperlukan.
auxbuss
Ini berhasil untuk saya. @ dnlmzw jalannya baik untuk saya tapi tentu saja ini tergantung pada pengaturan Anda. Terima kasih!
theartofbeing
tidak berfungsi untuk saya ketika mencoba menambahkan URL server permata pribadi yang menggunakan sertifikat yang ditandatangani sendiri ke sumber permata saya. OSX 10.11.6 + rbenv
sixty4bit
12

Berikut opsi lain untuk keperluan debugging.

Pastikan untuk tidak pernah menggunakan ini di lingkungan produksi apa pun, karena itu akan meniadakan manfaat menggunakan SSL. Ini hanya berlaku untuk melakukan ini di lingkungan pengembangan lokal Anda.

require 'openssl'
OpenSSL::SSL::VERIFY_PEER = OpenSSL::SSL::VERIFY_NONE
Scott
sumber
26
Diturunkan: Ya, ini berfungsi, tetapi penghalang untuk menginstal bundel CA yang valid dan benar-benar menyelesaikan masalah sangat rendah sehingga solusi seperti ini - yang hampir sepenuhnya membatalkan keamanan SSL - bukan solusi yang harus diterapkan kecuali jika Anda Sedang dalam lingkungan di mana Otoritas Sertifikat sepenuhnya tidak dapat diakses (dan bahkan kemudian, Anda harus membuat CA lokal yang dapat diakses oleh kedua titik akhir).
yaauie
10
Itu tidak sepenuhnya menghapus perlindungan SSL, itu benar-benar menghapusnya. Tidak pernah melakukan ini.
drbrain
15
Untuk debugging sudah cukup
rickyduck
1
Ini menghasilkan peringatan sekarang di 1.9
Ivan
2
Ini adalah solusi buruk untuk pekerjaan produksi melalui Internet yang sebenarnya, tetapi sangat tidak benar bahwa "Anda mungkin juga tidak menggunakan SSL sama sekali". Lalu lintas yang dienkripsi melalui kabel lebih baik daripada lalu lintas di tempat yang bersih. Ya, Anda memiliki kemungkinan serangan man-in-the-middle, tetapi itu setidaknya satu tingkat lebih sulit untuk berdiri daripada hanya menguping lalu lintas plaintext saat meluncur.
Mark Reed
10

Saya memiliki masalah yang sama saat mengerjakan proyek Ruby. Saya menggunakan Windows 7 64bit.

Saya menyelesaikan ini dengan:

  1. Mengunduh file cacert.pem dari http://curl.haxx.se/ca/cacert.pem .
  2. Menyimpan file itu ke C: /RubyCertificates/cacert.pem
  3. Kemudian setel variabel lingkungan saya "SSL_CERT_FILE" ke "C: \ RubyCertificates \ cacert.pem"

sumber: https://gist.github.com/fnichol/867550

Henry
sumber
Karena itu adalah Windows, backslahes harus digunakan dalam nilai variabel lingkungan.
Christian Baumann
ini adalah satu-satunya solusi yang bekerja untuk memperbaiki "bundel" untuk saya, setelah memperbaiki kesalahan rubygems ssl
DonBecker
7

Jawaban paling langsung yang berhasil bagi saya adalah ini

sudo apt-get install openssl ca-certificates

Dan voila !!!

Pratik Bothra
sumber
1
Seandainya saya dapat memilih lebih dari satu kali karena Anda baru saja menghemat banyak waktu!
Stephen
1
@Stephen - Saya berharap Anda juga bisa :-). Ini menghemat banyak waktu saya, jadi saya pikir saya akan mempostingnya di sini, dan mungkin membantu orang lain juga.
Pratik Bothra
7

OS X 10.8.x dengan Homebrew:

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
Perpaduan
sumber
1
Bekerja untuk saya pada 10,9 juga.
Sami Samhuri
1
Oke untuk saya, OS X 10.9.1. Luar biasa!
rogeriopradoj
Sesuatu sangat rusak ketika Anda harus mencari solusi acak untuk memperbaiki masalah bodoh ini. Semua jawaban ini melakukan sesuatu yang sama sekali berbeda dan semuanya tampaknya membantu orang pada suatu saat. WTF?
sergserg
13
curl-ca-bundle dicabut dari brew
Fa11enAngel
4

Ini berhasil untuk saya. Jika Anda menggunakan rvm dan minuman:

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

Saya mengalami masalah ini dan saran perbaikan rvm osx-ssl-certs update all tidak berhasil meskipun saya pengguna RVM di OSX.

Perbaikan yang berhasil bagi saya adalah menginstal ulang versi openssl terbaru:

brew update
brew remove openssl
brew install openssl
Dave Brace
sumber
4

Saya memperbaiki masalah ini dengan menjalankan ini di terminal. Langgan lengkap tersedia di sini

rvm install 2.2.0 --disable-binary
Wraithseeker
sumber
3

Solusi OSX:

instal versi terbaru rvm stable

rvm get stable

gunakan perintah rvm untuk menyelesaikan sertifikat secara otomatis

rvm osx-ssl-certs update all
Alston
sumber
1
Saya mencoba ini dan itu tidak berhasil untuk saya. Inilah solusi saya: stackoverflow.com/a/16741712/62
Liron Yahdav
Bekerja untuk saya setelah menginstal Ruby 2.0.0 via RVM.
Chris Peters
3

Jika Anda menjalankan aplikasi rel secara lokal maka cukup tambahkan baris ini di bagian bawah application.rb.

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

Setelah ini, Anda dapat menggunakan aplikasi tanpa masalah. Anda mungkin menyebutnya peretasan tetapi tidak disarankan. Gunakan hanya ketika Anda perlu menjalankan secara lokal

Tarun Rathi
sumber
2

Inilah yang saya lakukan yang membantu jika Anda secara khusus memiliki masalah dengan Leopard.

Sertifikat saya sudah tua dan perlu diperbarui. Saya mengunduh ini:

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

Kemudian diganti sertifikat saya yang ditemukan di sini di Leopard:

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

Muat ulang apa pun yang Anda miliki yang mengaksesnya dan Anda harus baik-baik saja!

Musicalmindz
sumber
2

Hanya karena instruksi sedikit berbeda untuk apa yang bekerja untuk saya, saya pikir saya menambahkan 2 sen saya:

Saya menggunakan OS X Lion dan menggunakan macports dan rvm

Saya menginstal curl-ca-bundle:

sudo port install curl-ca-bundle

Kemudian saya menyesuaikan konfigurasi omniauth saya menjadi seperti ini:

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
Hortitude
sumber
Anda dapat (dan mungkin harus) melupakan seluruh Kebun Binatang CA ( ca-bundle.crt) dan menggunakan Google Internet Authority G2 di :ssl => {:ca_path => "/share/curl/curl-ca-bundle.crt"}. Itulah satu-satunya yang diperlukan untuk mengesahkan koneksi ke Google.
jww
2

Jika Anda memiliki tautan simbolis di / usr / local / etc / openssl yang menunjuk ke cert.pem coba lakukan ini:

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)
Duccio Giovannelli
sumber
2

Yang berhasil bagi saya adalah kombinasi jawaban, yaitu:

# 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
suda
sumber
1

Saya mengalami masalah selama beberapa hari dan sedang meretas. Tautan ini terbukti sangat membantu saya. Ini membantu saya untuk melakukan peningkatan SSL yang sukses di MAC OS X 9.

Berkemas
sumber
1

Kadang tidak selalu masalah rvm di MAC OSX, jika Anda menghapus .rvm, masalahnya masih (terutama saat Anda membuat cadangan data dari timemachine), Anda dapat mencoba cara ini.

1.brew update
2.brew install openssl
Albert
sumber
1

Menambahkan gem 'certified', '~> 1.0'ke saya Gemfiledan menjalankan bundlememecahkan masalah ini untuk saya.

pengguna2573222
sumber