SSL_connect được trả lại = 1 errno = 0 state = SSLv3 đọc chứng chỉ máy chủ B: xác minh chứng chỉ không thành công


281

Tôi đang sử dụng Authlogic-Connect để đăng nhập của bên thứ ba. Sau khi chạy di chuyển thích hợp, đăng nhập Twitter / Google / yahoo có vẻ hoạt động tốt nhưng đăng nhập facebook ném ngoại lệ:

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

Nhật ký dev hiển thị

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'

Xin đề nghị ..


2
Điều này có giúp ích gì không: stackoverflow.com/q/3977303/382818
Zabba

Đây là một giải pháp tốt nhất mà tôi có thể tìm thấy cho đến nay stackoverflow.com/a/16983443/11792
Pavel Nikolov

Câu trả lời:


138

Tôi gặp phải một vấn đề tương tự khi cố gắng sử dụng trình tạo JQuery cho Rails 3

Tôi đã giải quyết nó như thế này:

  1. Nhận gói Cơ quan cấp chứng chỉ CURL (CA). Bạn có thể làm điều này với:

    • sudo port install curl-ca-bundle [nếu bạn đang sử dụng MacPorts]
    • hoặc chỉ cần kéo nó xuống trực tiếp wget http://curl.haxx.se/ca/cacert.pem
  2. Thực thi mã ruby ​​đang cố xác minh chứng nhận SSL : SSL_CERT_FILE=/opt/local/etc/certs/cacert.pem rails generate jquery:install. Trong trường hợp của bạn, bạn muốn đặt biến này làm biến môi trường ở đâu đó, máy chủ sẽ chọn nó hoặc thêm một cái gì đó giống như ENV['SSL_CERT_FILE'] = /path/to/your/new/cacert.pemtrong tệp môi trường của bạn.

Bạn cũng có thể chỉ cần cài đặt các tệp CA (tôi chưa thử cái này) cho HĐH - có các hướng dẫn dài ở đây - cách này hoạt động theo cách tương tự, nhưng tôi chưa thử cá nhân.

Về cơ bản, vấn đề bạn gặp phải là một số dịch vụ web đang phản hồi với chứng chỉ được ký chống lại CA mà OpenSSL không thể xác minh.


1
Điều này cũng có hiệu quả với tôi trong khi cố gắng kết nối với tài khoản gmail của mình bằng Ruby Net :: IMAP từ tập lệnh ruby. Cảm ơn.
Jignesh Gohel

4
Có, điều này hoạt động tốt trên ruby-1.9.3. Tôi đã thêm nó vào cấu hình bash của tôi. export SSL_CERT_FILE=/usr/local/etc/openssl/certs/cert.pem
andersjanmyr

5
Tôi không có / usr / local / etc / openssl, vì vậy tôi đã chạy sudo curl http://curl.haxx.se/ca/cacert.pem >> /usr/local/etc/cacert.pemtheo sau export SSL_CERT_FILE=/usr/local/etc/cacert.pem
Lilith River

4
Phát triển trên máy Mac của tôi, tôi vừa thêm vào tệp SSL_CERT_FILE=/usr/local/etc/openssl/cert.pemcủa ứng dụng .envvà voila - tất cả đều hạnh phúc.
Dave Sag

8
Tôi đánh giá cao sự trớ trêu của việc sử dụng wget để tải chứng chỉ curl.
Trey

135

Nếu bạn đang sử dụng RVM trên OS X, có lẽ bạn cần chạy nó:

rvm osx-ssl-certs update all

Thêm thông tin tại đây: http://rvm.io/support/fixing-broken-ssl-certert

Và đây là lời giải thích đầy đủ: https://github.com/wayneeseguin/rvm/blob/master/help/osx-ssl-certs.md


Cập nhật

Trên Ruby 2.2, bạn có thể phải cài đặt lại Ruby từ nguồn để sửa lỗi này. Đây là cách (thay thế 2.2.3bằng phiên bản Ruby của bạn):

rvm reinstall 2.2.3 --disable-binary

Tín dụng vào https://stackoverflow.com/a/32363597/4353Ian Connor .


2
Dưới đây là một bài viết toàn diện hơn nhiều với các lựa chọn thay thế: railsapps.github.io/openssl-cert ve
Peter P.

LRI: cập nhật rvm đã bị xóa. Thay vào đó, hãy xem API CLI 'rvm get' và rvm 'rubygems'
yang

@ user432506 Làm thế nào bạn nhận được lỗi đó? Tôi đang sử dụng RVM ổn định mới nhất và nó vẫn hoạt động.
htanata

4
Điều này sẽ làm việc trong một thời gian, sau đó thất bại cho tôi. Những gì làm việc cho tôi là chạy rvm reinstall 2.2.0 --disable-binarynhưng sau đó bạn phải cài đặt gói và bắt đầu mới.
Ian Connor

2
Đây là một cứu cánh lớn và nên là câu trả lời được chấp nhận.
Siraris

129

Đây là cách bạn có thể sửa nó trên Windows: https://gist.github.com/867550 (được tạo bởi Fletcher Nichol)

Trích đoạn:

Cách thủ công (nhàm chán)

Tải xuống cacert.pemtệp từ http://curl.haxx.se/ca/cacert.pem . Lưu tập tin này vào C:\RailsInstaller\cacert.pem.

Bây giờ làm cho ruby ​​nhận thức được gói ủy quyền chứng chỉ của bạn bằng cách cài đặt SSL_CERT_FILE. Để đặt điều này trong phiên nhắc lệnh hiện tại của bạn, gõ:

set SSL_CERT_FILE=C:\RailsInstaller\cacert.pem

Để biến điều này thành cài đặt cố định, hãy thêm phần này vào bảng điều khiển của bạn .


6
Cảm ơn bạn. Điều này đặc biệt hữu ích và cũng rất đơn giản.
Giăng

Các giải pháp trên đã không giúp tôi. Đây là một hướng dẫn tốt hơn cho Windows: stackoverflow.com/questions/5720484/ cấp
Sprachprofi

@Sprachprofi Giải pháp bạn đã liên kết sẽ chỉ hoạt động cho 1 dự án rails tại một thời điểm (khi bạn chỉ trực tiếp đến chứng chỉ đó). Ý chính mà tôi đã liên kết (được tạo bởi Fletcher Nichol) sẽ cho phép nó bao trùm mọi dự án / viên ngọc đang tìm kiếm chứng chỉ.
ryanjones

31

Ruby không thể tìm thấy bất kỳ chứng chỉ gốc nào để tin tưởng.

Hãy xem bài đăng trên blog này để biết giải pháp: " Ruby 1.9 và lỗi SSL ".

Giải pháp là cài đặt curl-ca-bundlecổng chứa cùng chứng chỉ gốc được Firefox sử dụng:

sudo port install curl-ca-bundle

và nói với httpsđối tượng của bạn sử dụng nó:

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

Lưu ý rằng nếu bạn muốn mã của mình chạy trên Ubuntu, bạn cần đặt ca_paththuộc tính thay thế, với vị trí chứng chỉ mặc định /etc/ssl/certs.


8
Điều này dường như cũng xảy ra trên Windows, trong trường hợp đó, giải pháp được khuyến nghị sẽ không hoạt động.
Bob Aman

24

Lý do mà bạn gặp lỗi này trên OSX là ruby ​​được cài đặt rvm.

Nếu bạn gặp phải vấn đề này trên OSX, bạn có thể tìm thấy một lời giải thích thực sự rộng rãi về vấn đề này trong bài đăng trên blog này:

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

Phiên bản ngắn là, đối với một số phiên bản của Ruby, RVM tải xuống các tệp nhị phân được biên dịch sẵn, tìm kiếm các chứng chỉ ở vị trí sai. Bằng cách buộc RVM tải xuống nguồn và biên dịch trên máy của riêng bạn, bạn đảm bảo rằng cấu hình cho vị trí chứng chỉ là chính xác.

Lệnh để làm điều này là:

rvm install 2.2.0 --disable-binary

nếu bạn đã có phiên bản được đề cập, bạn có thể cài đặt lại với:

rvm reinstall 2.2.0 --disable-binary

(rõ ràng, thay thế phiên bản ruby ​​của bạn khi cần thiết).


Điều này làm việc cho tôi. Bài đăng blog bạn đang trỏ đến cũng hữu ích, cảm ơn!
Cristian

2
Điều này làm việc cho tôi trên El Capitan. Tôi đã nổ rvm (rvm implode). Được cài đặt lại với \curl -sSL https://get.rvm.io | bash -s stable --autolibs=homebrewvà sau đó rvm install <ruby-version> --disable-binary Tại một thời điểm tôi cũng đã làm rvm get headvì đây là một số vấn đề cạnh chảy máu.
rylanb

Chỉ có giải pháp này phù hợp với tôi, vì ban đầu tôi có Ruby 2.0.0 trên El Capitan và vì một số lý do mà phiên bản cũ hơn không hoạt động ngay cả với chính xác SSL_CERT_FILE. Sau đó rvm install 2.2.0 --disable-binary, vấn đề được sắp xếp.
laimison

20

Vấn đề là ruby ​​không thể tìm thấy chứng chỉ gốc để tin tưởng. Khi 1.9 ruby ​​kiểm tra điều này. Bạn sẽ cần đảm bảo rằng bạn có chứng chỉ curl trên hệ thống của mình dưới dạng tệp pem. Bạn cũng sẽ cần đảm bảo rằng chứng chỉ nằm ở vị trí mà ruby ​​mong đợi. Bạn có thể lấy chứng chỉ này tại ...

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

Nếu người dùng RVM và OSX của bạn thì vị trí tệp chứng chỉ của bạn sẽ thay đổi dựa trên phiên bản ruby ​​bạn sử dụng. Đặt đường dẫn rõ ràng bằng: ca_path là một ý tưởng BAD vì mã của bạn sẽ không thể di động khi được đưa vào sản xuất. Ở đó cho bạn muốn cung cấp cho ruby ​​một chứng chỉ ở vị trí mặc định (và giả sử các nhà phát triển của bạn biết họ đang làm gì). Bạn có thể sử dụng dtruss để tìm ra nơi hệ thống đang tìm kiếm tệp chứng chỉ.

Trong trường hợp của tôi, hệ thống đang tìm kiếm tệp cert

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

tuy nhiên hệ thống MACOSX sẽ mong đợi một chứng chỉ trong

/System/Library/OpenSSL/cert.pem

Tôi đã sao chép chứng chỉ đã tải xuống vào đường dẫn này và nó đã hoạt động. HTH


2
Đối với tôi trên Ubuntu 12.04, đường dẫn chứng chỉ hoạt động là~/.rvm/usr/ssl/cert.pem
Nazar Hussain

Làm thế nào để bạn sử dụng dtruss để tìm ra nơi hệ thống đang tìm kiếm chứng chỉ?
pingu

@pingu không thể nhớ chính xác lệnh về cơ bản bạn chạy druss và bạn bảo nó chạy quy trình ruby ​​bao giờ bạn muốn nó "kiểm tra". Đầu ra của nó rất dài dòng nhưng về cơ bản, bạn sẽ có thể thấy mỗi cuộc gọi hệ thống mà ruby ​​đang thực hiện. Một trong những cuộc gọi sẽ là một cuộc gọi tệp đọc sẽ được trỏ đến một tệp không tồn tại. Di chuyển chứng chỉ ở đây hoặc tạo một liên kết và bạn nên đi.
Stewart

Ruby không nên tìm kiếm cacert.pemtrên OS X. OS X không sử dụng cacert.pem. Chứng chỉ hệ thống và người dùng được lưu trữ trong KeyChain. Ruby nên được tích hợp với Keychain trên OS X.
jww

Cách tốt nhất để làm việc này là gì? Bạn có thể gửi một ví dụ?
Stewart

19

Đá quý được chứng nhận mới được thiết kế để khắc phục điều này:

https://github.com/stevegraham/certified


Hoạt động với ruby ​​2.0.0p481 (2014-05-08) [i386-mingw32]
Evmorov

1
Không hoạt động với tôi với Rails 4.1.9, ruby-2.1.5. Tôi đã thêm nó vào Gemfile, bundleđược thêm vào một cách rõ ràng require "certified"chỉ để đảm bảo, và không có gì thay đổi. Tôi đang thiếu gì?
Isaac Betesh

Ruby không nên tìm kiếm cacert.pemtrên OS X. OS X không sử dụng cacert.pem. Chứng chỉ hệ thống và người dùng được lưu trữ trong KeyChain. Ruby nên được tích hợp với KeyChain trên OS X. OpenSSL chưa bao giờ phân phối a cacert.pem. Tôi không rõ lý do tại sao bất kỳ phần mềm nào sẽ trì hoãn OpenSSL cho nó.
jww

18

Chỉ cần thêm đá quý 'được chứng nhận' vào gemfile của bạn và chạy cài đặt gói.

  1. đá quý ' được chứng nhận '
  2. cài đặt gói

Xác nhận rằng điều này đã giúp trên El Capitan. Cảm ơn!
mcmlxxxiii

Nó hoạt động hoàn hảo với Rails và Debian :) cảm ơn rất nhiều!
Szymon Rút

17

Trên Mac OS X Lion với macport mới nhất:

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

Sau đó, chạy lại công việc thất bại.

Lưu ý, vị trí tệp cert dường như đã thay đổi kể từ khi Eric G trả lời vào ngày 12 tháng 5.


Sau tất cả các tìm kiếm và vô số lần thử, đây là điều duy nhất giải quyết được vấn đề. Cảm ơn!
shawnwall

1
tuyệt, mà sửa nó. Nhưng miễn là openssl được cài đặt với homebrew, bạn phải thêm export SSL_CERT_FILE=/usr/local/etc/openssl/cacert.pemtệp vào tệp .profile hoặc .bashrc của mình
23tux

14

Một lớp lót sửa nó cho Windows trong lời nhắc của Quản trị viên

choco install wget(lần đầu tiên xem chocolatey.org )

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

Hoặc chỉ cần làm điều này:

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

Phương pháp của 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]

1
Cải thiện nhỏ - bạn chỉ cần cập nhật ruby ​​và sau đó bạn có thể thêm lại nguồn https - điều này chỉ hiệu quả với tôi như một cơ duyên: gem nguồn -r rubygems.org => gem nguồn -a rubygems.org => cập nhật đá quý - hệ thống => nguồn đá quý -r rubygems.org => nguồn đá quý -a rubygems.org => cài đặt đá quý [NAME_OF_GEM]
milanio

13

Vâng, điều này làm việc cho tôi

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

Có gì đó không đúng với việc triển khai openssl trên Ubuntu 12.04 của tôi


3
Tác phẩm này, nhưng tôi đã phải kết thúc với điều này: curl -O http://curl.haxx.se/ca/cacert.pem, mv cacert.pem cert.pem,mv cert.pem $rvm_path/usr/ssl
Raf

Làm việc cho tôi, Mac OS X Yosemite. Cảm ơn!
anevaude 14/03/2015

12

Mặc dù biết đó là một giải pháp khập khiễng, tôi vẫn chia sẻ điều này bởi vì dường như rất ít người trả lời ở đây sử dụng Windows và tôi nghĩ rằng một số người dùng Windows (bao gồm cả tôi) sẽ đánh giá cao cách tiếp cận đơn giản và trực quan.

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

Điều đó cho biết nơi openssl của bạn đang tìm kiếm tệp cert. Tên tôi không phải là Luis, mà là của tôi C:/Users/Luis/Code/luislavena/knap-build/var/knapsack/software/x86-windows/openssl/1.0.0l/ssl/cert.pem. Đường dẫn có thể khác nhau tùy thuộc vào từng môi trường riêng (ví dụ openknapsackthay vì luislavena).

Đường dẫn không thay đổi ngay cả sau khi set SSL_CERT_FILE=C:\foo\bar\baz\cert.pemthông qua bảng điều khiển, vì vậy ... Tôi đã tạo thư mục C:\Users\Luis\Code\luislavena\knap-build\var\knapsack\software\x86-windows\openssl\1.0.0l\ssl trong đĩa cục bộ của mình và đặt tệp cert vào đó.

Lame như nó là, điều này chắc chắn sẽ làm việc.


2
Xuất sắc. Hacky, nhưng đây là điều duy nhất giải quyết vấn đề của tôi.
Daniel Magliola

Cách gỡ lỗi tuyệt vời ... Đối với tôi, người dùng là "Justin". Googling cho thấy điều này dường như là một vấn đề đã biết với RubyInstaller. Thật không may, bản thân tôi đã tạo thư mục đó (+ tệp pem), đã không giải quyết được vấn đề cho tôi
Wouter

12

Tôi đã thử cài đặt curl-ca-bundlevới brew, nhưng gói không có sẵn nữa:

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

Giải pháp hiệu quả với tôi trên Mac là:

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

Thêm dòng này trong ~/.bash_profile(hoặc ~/.zshrccho zsh) của bạn:

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

Sau đó cập nhật thiết bị đầu cuối của bạn:

$ source ~/.bash_profile

1
Điều này làm việc cho tôi - nhưng con đường là sai. Nên là:export SSL_CERT_FILE=/usr/local/etc/openssl/certs/cacert.pem
dnlmzw 12/07/2015

2
Đây là một giải pháp tốt đẹp, vì sự đơn giản của nó. Ngoài ra, bằng cách tham chiếu chứng chỉ đã thêm vào ~/.bash_profile, nó để lại lời nhắc về những gì đã được thêm vào (và, chủ yếu ở đâu) khi cần cập nhật thêm.
auxbuss

Điều này làm việc cho tôi. @dnlmzw đường dẫn tốt cho tôi nhưng tất nhiên điều này phụ thuộc vào thiết lập của bạn. Cảm ơn!
theartofbeing

không hoạt động với tôi khi cố gắng thêm URL máy chủ đá quý riêng sử dụng chứng chỉ tự ký vào các nguồn đá quý của tôi. OSX 10.11.6 + rbenv
sixty4bit 17/8/2016

12

Đây là một tùy chọn khác cho mục đích gỡ lỗi.

Hãy chắc chắn không bao giờ sử dụng điều này trong bất kỳ môi trường sản xuất nào, vì nó sẽ phủ nhận lợi ích của việc sử dụng SSL ở nơi đầu tiên. Nó chỉ là hợp lệ để làm điều này trong môi trường phát triển địa phương của bạn.

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

26
Downvote: Có, điều này hoạt động, nhưng rào cản để cài đặt gói CA hợp lệ và thực sự giải quyết vấn đề thấp đến mức một giải pháp như thế này - gần như vô hiệu hóa bảo mật của SSL - không phải là một giải pháp nên được thực hiện trừ khi bạn Trong môi trường mà Cơ quan cấp chứng chỉ hoàn toàn không thể truy cập (và thậm chí sau đó, bạn nên tạo một CA cục bộ có thể truy cập được cho cả hai điểm cuối).
yaauie

10
Nó gần như không loại bỏ hoàn toàn bảo vệ SSL, nó loại bỏ hoàn toàn nó. Không bao giờ làm điều này.
drbrain

15
Để gỡ lỗi là đủ
rickyduck

1
Điều này tạo ra một cảnh báo bây giờ trong 1.9
Ivan

2
Đây là một giải pháp tồi cho công việc sản xuất qua Internet thực tế, nhưng thực sự không đúng là "bạn hoàn toàn không thể sử dụng SSL". Lưu lượng được mã hóa qua dây tốt hơn lưu lượng rõ ràng. Vâng, bạn có khả năng tấn công người trung gian, nhưng đó là ít nhất một khó khăn để đứng lên hơn là chỉ nghe lén giao thông văn bản khi nó lướt qua.
Mark Reed

10

Tôi đã có vấn đề tương tự trong khi làm việc trên một dự án Ruby. Tôi đang sử dụng Windows 7 64 bit.

Tôi đã giải quyết điều này bằng cách:

  1. Tải xuống tệp cacert.pem từ http://curl.haxx.se/ca/cacert.pem .
  2. Đã lưu tệp đó vào C: /RubyCertert/cacert.pem
  3. Sau đó, đặt biến môi trường của tôi "SSL_CERT_FILE" thành "C: \ RubyCertert \ cacert.pem"

nguồn: https://gist.github.com/fnichol/867550


Vì nó là Windows, nên sử dụng backslahes trong giá trị của biến môi trường.
Christian Baumann

đây là giải pháp duy nhất có tác dụng khắc phục "bó" cho tôi, sau khi sửa lỗi ssl rubygems
DonBecker

7

Câu trả lời thẳng thắn nhất có hiệu quả với tôi là đây

sudo apt-get install openssl ca-certificates

Và Voila!!!


1
Ước gì tôi có thể bỏ phiếu nhiều hơn một lần vì bạn vừa tiết kiệm cho tôi rất nhiều thời gian!
Stephen

1
@Stephen - Tôi ước bạn cũng có thể :-). Nó đã tiết kiệm cho tôi rất nhiều thời gian, vì vậy tôi nghĩ rằng tôi đã đăng nó ở đây và nó cũng có thể giúp đỡ người khác.
Pratik Bothra

7

OS X 10.8.x với 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

1
Làm việc cho tôi vào ngày 10.9.
Sami Samhuri

1
Ok cho tôi, OS X 10.9.1. Tuyệt vời!
rogeriopradoj

Một cái gì đó bị phá vỡ nghiêm trọng khi bạn phải săn lùng các giải pháp ngẫu nhiên để khắc phục những vấn đề ngớ ngẩn này. Tất cả những câu trả lời này làm một cái gì đó hoàn toàn khác nhau và tất cả chúng dường như giúp đỡ mọi người tại một số điểm. WTF?
serserg

13
curl-ca-bundle được quay vòng từ brew
Fa11enAngel


4

Điều này làm việc cho tôi. Nếu bạn sử dụng rvm và brew:

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

4

Tôi gặp phải vấn đề này và bản sửa lỗi được đề xuất rvm osx-ssl-certs update allkhông hoạt động mặc dù tôi là người dùng RVM trên OSX.

Bản sửa lỗi hoạt động với tôi là cài đặt lại phiên bản openssl mới nhất:

brew update
brew remove openssl
brew install openssl

4

Tôi đã khắc phục vấn đề này bằng cách chạy này trong thiết bị đầu cuối. Viết đầy đủ có sẵn ở đây

rvm install 2.2.0 --disable-binary

3

Giải pháp OSX:

cài đặt phiên bản ổn định rvm mới nhất

rvm get stable

sử dụng lệnh rvm để giải quyết các chứng chỉ tự động

rvm osx-ssl-certs update all

1
Tôi đã thử điều này và nó đã không làm việc cho tôi. Đây là giải pháp của tôi: stackoverflow.com/a/16741712/62
Liron Yahdav

Làm việc cho tôi sau khi cài đặt Ruby 2.0.0 qua RVM.
Chris Peters

3

Nếu bạn đang chạy ứng dụng rails của mình cục bộ thì chỉ cần thêm dòng này ở dưới cùng của application.rb.

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

Sau này, bạn có thể sử dụng ứng dụng mà không gặp vấn đề gì. Bạn có thể gọi nó là hack nhưng nó không được khuyến khích. Chỉ sử dụng khi bạn cần chạy cục bộ


2

Đây là những gì tôi đã làm nếu bạn đặc biệt gặp sự cố trên Leopard.

Chứng chỉ của tôi đã cũ và cần được cập nhật. Tôi đã tải xuống này:

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

Sau đó thay thế chứng chỉ của tôi được tìm thấy ở đây trên Leopard:

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

Tải lại bất cứ thứ gì bạn có đang truy cập nó và bạn nên đi!


2

Chỉ vì các hướng dẫn hơi khác một chút so với những gì hiệu quả với tôi, tôi nghĩ tôi đã thêm 2 xu của mình:

Tôi đang dùng OS X Lion và đang sử dụng macports và rvm

Tôi đã cài đặt curl-ca-bundle:

sudo port install curl-ca-bundle

Sau đó, tôi đã điều chỉnh cấu hình omniauth của mình thành:

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

Bạn có thể (và có lẽ nên) bỏ toàn bộ Zoo CA ( ca-bundle.crt) và sử dụng Google Internet Authority G2 trong :ssl => {:ca_path => "/share/curl/curl-ca-bundle.crt"}. Đó là người duy nhất cần để chứng nhận kết nối với Google.
jww

2

Nếu bạn có một liên kết tượng trưng trong / usr / local / etc / openssl trỏ đến cert.pem hãy thử làm điều này:

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

Điều làm việc cho tôi là sự kết hợp của các câu trả lời, cụ thể là:

# 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

Tôi đã gặp rắc rối trong một số ngày và bị hack xung quanh. Liên kết này đã được chứng minh là cực kỳ hữu ích cho tôi. Nó giúp tôi nâng cấp thành công SSL trên MAC OS X 9.


1

Đôi khi không phải lúc nào cũng là vấn đề của rvm trong MAC OSX, nếu bạn xóa .rvm, vấn đề vẫn còn (nhất là trong khi bạn sao lưu dữ liệu từ timemachine), bạn có thể thử theo cách này.

1.brew update
2.brew install openssl

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.