Установка curl с помощью ssl, чтобы я мог установить homebrew - PullRequest
5 голосов
/ 04 июля 2011

Решение

Я использовал сообщение Бруно, чтобы найти решение, но чувствую, что его нужно сделать более конкретным, так что это именно то, что я сделал.

  1. Скачано cacert.pem в мой ~ / .ssh dir (я не знаю, куда это должно идти, но я видел, как кто-то делал что-то подобное, пытаясь найти решение, так что это где я его положил).
  2. Установите env var CURL_CA_BUNDLE для установки. Это на самом деле решение № 4 с веб-сайта , предложенного в результате сбоя. Я просто неправильно понял, что они говорили (простой пример мог бы сэкономить мне часы путаницы). В любом случае вам нужно будет указать полный путь к файлу .pem, затем вы можете установить его так: $ CURL_CA_BUNDLE=~/.ssh/cacert.pem ruby -e "$(curl -fsSL <a href="https://raw.github.com/gist/323731" rel="nofollow">https://raw.github.com/gist/323731</a>)" И тогда он будет установлен!

Оригинальный вопрос

Как мне тоже

  1. установить доморощенный или
  2. установить curl с SSL, чтобы я мог установить homebrew?

Я на Mac OSX Leopard.

Я пытаюсь установить homebrew , но я получаю следующую ошибку:

$ ruby -e "$(curl -fsSL https://raw.github.com/gist/323731)"
==> This script will install:
/usr/local/bin/brew
/usr/local/Library/Formula/...
/usr/local/Library/Homebrew/...
==> The following directories will be made group writable:
/usr/local/bin
/usr/local/lib
/usr/local/lib/pkgconfig
/usr/local/share/man/man1
/usr/local/share/man/man3

Press enter to continue
==> /usr/bin/sudo /bin/chmod g+w /usr/local/bin /usr/local/lib /usr/local/lib/pkgconfig /usr/local/share/man/man1 /usr/local/share/man/man3
==> Downloading and Installing Homebrew...
curl: (60) SSL certificate problem, verify that the CA cert is OK. Details:
error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed
More details here: http://curl.haxx.se/docs/sslcerts.html

curl performs SSL certificate verification by default, using a "bundle"
 of Certificate Authority (CA) public keys (CA certs). The default
 bundle is named curl-ca-bundle.crt; you can specify an alternate file
 using the --cacert option.
If this HTTPS server uses a certificate signed by a CA represented in
 the bundle, the certificate verification probably failed due to a
 problem with the certificate (it might be expired, or the name might
 not match the domain name in the URL).
If you'd like to turn off curl's verification of the certificate, use
 the -k (or --insecure) option.

gzip: stdin: unexpected end of file
/usr/bin/tar: Child returned status 1
/usr/bin/tar: Error exit delayed from previous errors
Failed during: /bin/bash -o pipefail -c '/usr/bin/curl -sSfL https://github.com/mxcl/homebrew/tarball/master | /usr/bin/tar xz -m --strip 1'

Я попытался установить curl с помощью macports и указать + ssl, но это не сработало (извините, я не помню, в чем была ошибка, и потребовалось около часа, чтобы добраться до этой точки, поэтому я не хочу сделать это снова). Я удаляю локон из macports и затем запускаю $ whereis curl, который ничего не находит.

Итак, я захожу на сайт , предложенный в сообщении об ошибке выше. Большинство параметров не применимы, но вариант 5 имеет некоторый смысл:

Получите лучший / другой / новый сертификат CA! Один из вариантов - извлечь тот, который использует недавний браузер Firefox. запустив команду make ca-bundle в корне дерева сборки curl

Итак, я получаю исходный код curl и запускаю $ ./buildconf, $ ./configure, $ make, $ make ca-bundle и, наконец, $ sudo make install. Я проверяю $ whereis curl и он говорит "/usr/bin/curl".

Но когда я снова запускаю команду homebrew install (в новом окне терминала), я получаю ту же ошибку, показанную выше.

Ответы [ 4 ]

5 голосов
/ 04 июля 2011

Вам не нужно перекомпилировать cURL, у него уже есть поддержка SSL / TLS, в противном случае он не будет отображать error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed.

Вам нужен пакет сертификатов CA, например, серверсертификат сервера, с которым вы пытаетесь установить связь, выдается одним из этих центров сертификации.

Страница cURL, на которую вы ссылаетесь по ссылкам на http://curl.haxx.se/docs/caextract.html

Вы должны иметь возможность загрузить комбинированныйPEM связать и использовать его.Вы можете принудительно использовать curl -fsSL --cacert /path/to/bundle.pem https://... в приведенной выше команде или использовать export CURL_CA_BUNDLE=/path/to/bundle.pem перед выполнением команды.

Обычно вам нужен способ доверять тому, что находится внутри этого пакета, но всегда есть элемент«прыжок в веру», когда дело доходит до импорта коммерческих ЦС (так же, как они будут поставляться для вас в большинстве браузеров).

0 голосов
/ 18 января 2014

ruby ​​-e "$ (curl -k -fsSL https://raw.github.com/Homebrew/homebrew/go/install)" работает, потому что -k разрешает небезопасные соединения SSL

0 голосов
/ 16 ноября 2013

Оригинальные указания работают нормально для меня в OS X 10.9!сначала загрузите и установите XQuartz

, не знаю, зачем мне что-то помещать в ~ / .ssh, но все в порядке

Системные настройкиразделение«Проверить» Удаленный вход«Нажмите» +, чтобы добавить свое имя пользователятогда в xquartz типеssh localhost answer yes to all type exit

загрузить файл pem сохранить в загрузкахв xquartz тип

cd

cp Downloads/cacert.pem .ssh/cacert.pem

файл pem не жаловался, что мне нужно было экспортировать следующее работало нормально

CURL_CA_BUNDLE=~/.ssh/cacert.pem

ruby -e "$(curl -fsSL https://raw.github.com/mxcl/homebrew/go)"

вам будет предложено установить, если вы не установили CommandУтилиты линиинажмите ОК и следуйте инструкциямбудет один запрос для вашего типа Passsword тщательно и нажмите Enter

brew doctor
brew update
brew doctor
brew search ssl
brew install openssl

"Я как пользователь UXD типа; радостно удивлен отсутствием DL 2,09 ГБ xcode.app"

0 голосов
/ 20 августа 2011

По какой-то причине оригинальное решение постера не сработало для меня.Даже с новым комплектом CA во время установки у меня все еще была ошибка SSL:

Ошибка при: / bin / bash -o pipefail -c '/ usr / bin / curl -sSfL https://github.com/mxcl/homebrew/tarball/master |/ usr / bin / tar xz -m --strip 1 '

Поэтому вместо непосредственного выполнения сценария установки я сначала загрузил его, а затем добавил переключатель -k (или --insecure)к его команде curl (находится в строке 126 в сегодняшней версии), а затем запустил этот исправленный сценарий установки.

Сначала обновите пакет curl, используя этот метод , но с curl если у вас нет wget:

cd /usr/share/curl/
sudo curl http://curl.haxx.se/ca/cacert.pem -o cacert.pem
sudo mv curl-ca-bundle.crt old.curl-ca-bundle.crt
sudo mv cacert.pem curl-ca-bundle.crt

Затем перейдите на https://github.com/mxcl/homebrew/wiki/installation и скопируйте ссылку на скрипт установщика.

Получите скрипт установки: (заменитеURL с текущим URL сценария установщика)

curl -fsSL https://raw.github.com/gist/323731 -o homebrew-install.rb

Отредактируйте homebrew-install.rb: найдите «curl» и добавьте ключ -k

Наконец, запустите исправленный сценарий:

ruby homebrew-install.rb
...