На ruby-1.9.3 получение OpenSSL :: SSL :: SSLError из net-https (Mac OSX 10.6) - PullRequest
3 голосов
/ 15 февраля 2012

Я видел много людей с этой ошибкой, и ни одно решение не может исправить ее для меня:

ruby-1.9.3-p0/lib/ruby/1.9.1/net/http.rb:799:in `connect': SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed (OpenSSL::SSL::SSLError)

Кажется, есть много решений, предлагающих перемещать файлы сертификатов. Я установил и удалил macports, доморощенный, работает. У меня есть ключи, настроенные прямо для github Ошибка возникает при попытке выполнить сборку rails, которая вызывает шаблон с файлами на github.

Система: Mac OSX 10.6 - недавнее обновление. Ruby 1.9.3, также недавнее обновление. Рельсы 3.2. Я гуглил до тех пор, пока коровы не вернулись домой и не потратил часы на эту проблему, и, хотя кажется, что таких вопросов несколько, я держу надежду, что кто-то нашел решение и еще не опубликовал его. Я думаю, я знаю почему это происходит - net / http не находит сертификаты, верно? Но я не могу понять, как это исправить. Заранее благодарим за любую помощь.

Редактировать: Дополнительная информация. Попытка точно такой же сборки в ruby ​​1.9.2 (использование rvm 1.9.2) завершается без выдачи ошибки.

Другое редактирование: я перепробовал все материалы на странице rvm о пакете openssl, установил его и переустановил ruby-1.9.3 с флагом конфигурации, указывающим openssl на этот пакет. Все еще нет радости.

Еще одно редактирование: похоже, что у OpenURI есть проблема - не может найти способ сообщить ему о местонахождении сертификатов: - (

1 Ответ

2 голосов
/ 29 февраля 2012

Я просто напрямую изменяю источник http.rb (L: 669) для MacOS:

def use_ssl=(flag)
  flag = flag ? true : false
  if started? and @use_ssl != flag
    raise IOError, "use_ssl value changed, but session already started"
  end
  if flag && !@ca_file //added by riceball
    @ca_file = '/opt/local/share/curl/curl-ca-bundle.crt' 
  end

сначала необходимо установить

 port install curl-ca-bundle
...