Обновите OpenSSL в OS X с помощью Homebrew


81

Я использую MacOS X 10.7.5, и мне нужна более новая версия OpenSSL из-за сбоев рукопожатия . В Интернете есть несколько руководств, и я попробовал следующее:

brew install openssl
brew link openssl --force

Тем не менее не работает:

openssl version
OpenSSL 0.9.8r 8 Feb 2011

brew unlink openssl && brew link openssl --force
Unlinking /usr/local/Cellar/openssl/1.0.1e... 1139 links removed
Linking /usr/local/Cellar/openssl/1.0.1e... 1139 symlinks created

Не решена и проблема SVN. Есть идеи? Я бы предпочел не пробовать MacPorts, потому что это может мешать Homebrew.


1
Радуйтесь, что это не сработало. Версия 0.9.8r не страдала ошибкой HeartBleed. Если вы успешно обновились в марте 2013 года, любой созданный вами SSL-сертификат будет скомпрометирован, и вам придется повторно ввести его снова. См. уязвимые версии на сайте heartbleed.com.
Houman

3
Этот вопрос кажется не по теме, потому что он не о программировании или разработке. См. Какие темы можно задать здесь, в Справочном центре. Возможно, лучше спросить Super User или Apple Stack Exchange .
jww

Ответы:


89

Если вы используете Homebrew, / usr / local / bin уже должен быть впереди $PATHили, по крайней мере, предшествовать / usr / bin . Если вы теперь работаете brew link --force opensslв окне терминала, откройте новое и запустите which opensslего. Теперь он должен отображаться opensslв / usr / local / bin .


2
Я установил 1.0.2h_1, но я точно в такой же ситуации, но openssl version -aвсе равно дает мне OpenSSL 0.9.8zg 14 July 2015. Какие-либо предложения?
Pmpr 03

84
Этот не работает, потому чтоbrew link --force openssl Warning: Refusing to link: openssl Linking keg-only openssl means you may end up linking against the insecure, deprecated system OpenSSL while using the headers from Homebrew's openssl. Instead, pass the full include/library paths to your compiler e.g.: -I/usr/local/opt/openssl/include -L/usr/local/opt/openssl/lib
Тимо

6
@TimoLehto Удалось ли вам решить эту проблему? Я столкнулся с той же проблемой и, кажется, нигде не могу найти решение
Тухина Сингх

3
@TimoLehto Не знаю, является ли это «хорошей практикой» или даже безопасно, но вы всегда можете создать ссылку из / usr / local / bin на / usr / local / opt / openssl / bin / openssl. Это можно сделать с помощью следующей команды: ln -s /usr/local/opt/openssl/bin/openssl /usr/local/bin/openssl. Для ясности: я не могу обещать вам, что это безопасный или правильный способ действий.
brunodd

2
дополнительная информация по этому вопросу: stackoverflow.com/questions/38670295/…
ekkis

12

В терминале запустите:

export PATH=/usr/local/bin:$PATH
brew link --force openssl

Возможно, вам придется сначала отключить openssl, если вы получите предупреждение: brew unlink openssl

Это гарантирует, что мы подключаем правильный openssl для этой ситуации. (и не связывается с .profile)

Подсказка к ответу @Olaf и комментарию @Felipe. У некоторых людей, таких как я, могут быть довольно испорченные переменные PATH.


9
Refusing to link: openssl
Там

12

установлен openssl на Mac с помощью brew, но ничего не найдено /usr/local/binтам, где расположены другие установленные корзины. Нашел здесь мой свежий openssl:

/usr/local/opt/openssl/bin/openssl

Запускаем так:

/usr/local/opt/openssl/bin/openssl version

Я не хочу обновлять OS X openssl, в то время как некоторые ОС или сторонние приложения могут зависеть от более старой версии.

Я также не против более длинного пути, чем просто openssl

Пишу это здесь для всех гуглеров, которые ищут расположение openssl, установленного brew.


6

У меня была эта проблема, и я обнаружил, что установка более новой opensslдействительно работает, но я PATHбыл настроен неправильно для нее - у меня $PATHбыл путь к портам перед моим путем варки, поэтому он всегда находил старую версию openssl.

Для меня исправление заключалось в том, чтобы brewуказать путь к (/ usr / local / bin) перед моим файлом $PATH.

Чтобы узнать, откуда вы загружаетесь openssl, запустите which opensslи запишите результат. Это будет расположение версии, которую ваша система использует при запуске openssl. Это будет где-нибудь, кроме brewпути к "/ usr / local / bin". Измените свою $PATH, закройте эту вкладку терминала, откройте новую и запустите which openssl. Теперь вы должны увидеть другой путь, вероятно, в / usr / local / bin. Теперь запустите, openssl versionи вы должны увидеть новую версию, которую вы установили «OpenSSL 1.0.1e 11 февраля 2013».


5

Чтобы ответить на ваш вопрос об обновлении openssl, я выполнил следующие шаги, чтобы успешно обновить версию, найденную на моем Mac, до новейшей версии openssl 1.0.1e.

Я выполнил шаги, указанные здесь: http://foodpicky.com/?p=99

Когда вы дойдете до шагов для команд терминала make и make install , обязательно используйте sudo make и sudo make install (мне пришлось дважды выполнить пошаговые инструкции, потому что я делал это без sudo, и он не обновлялся).

Надеюсь это поможет


3
К вашему сведению, на сегодняшний день известно, что 1.0.1e (а именно 1.0.1a-f) имеет серьезную уязвимость в системе безопасности. Будущие читатели, убедитесь, что вы обновились как минимум до 1.0.1g heartbleed.com
SapphireSun

Старая версия все еще отображается для меня: stackoverflow.com/questions/22974590/…
Quantumpotato

2
Минус один : «... обязательно используйте sudo make ...» - вы не делаете с привилегиями. Вы простоmakeи потомsudo make installпри необходимости. Вы также привели ужасную ссылку. Он заменяет Apple OpenSSL 0.9.8/usrна обновленнуюверсию1.0.x. Это действительно плохо, потому что нет двоичной совместимости.
jww 02

3

У меня возникли проблемы с установкой некоторых плагинов Wordpress на моем локальном сервере с php56 на OSX10.11. Им не удалось подключиться к внешнему API через SSL.

Установка openSSL не решила мою проблему. Но потом я понял, что CURL тоже нужно переустановить.

Это решило мою проблему с использованием Homebrew.

brew rm curl && brew install curl --with-openssl

brew uninstall php56 && brew install php56 --with-homebrew-curl --with-openssl

1

В Mac OS X Yosemite после установки с помощью brew поместите его в

/ USR / местные / opt / openssl / bin / openssl

Но продолжал получать ошибку «Связывание openssl только для кег означает, что вы можете в конечном итоге установить соединение с небезопасным» при попытке связать его

Я просто связал его, указав полный путь вот так

ln -s /usr/local/opt/openssl/bin/openssl /usr/local/bin/openssl

Теперь он показывает версию OpenSSL 1.0.2o, когда я делаю «openssl version -a», я предполагаю, что это сработало.


-8
  1. установить порт: https://guide.macports.org/
  2. установить или обновить пакет openssl: sudo port install opensslилиsudo port upgrade openssl
  3. все, беги openssl versionсмотреть результат.

2
Вопрос был о Homebrew ... macports - это не homebrew ... OP заявляет, что они предпочитают не использовать порты Mac.
Уэйд Уильямс,

@WadeWilliams mac в новой версии не позволяет вам обновлять opensslс помощью Homebrew, я имею в виду, что вы можете установить или обновить его с помощью, Homebrewно вы не можете расставить приоритеты. Таким образом, вместо обновления с помощью Homebrewвы можете обновить его с помощью macports и установить приоритеты.
Мортеза Сепехри Ния
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.