Оновіть 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 для відповідних версій.
Гуман

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

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)

Підказка щодо відповіді @ Олафа та коментаря @ Феліпе. Деякі люди, такі як я, можуть мати досить зіпсований PATH.


9
Це просто говоритьRefusing to link: openssl
rogerdpack

12

встановив openssl на mac з brew, але нічого не знайдено /usr/local/binтам, де знаходяться інші встановлені контейнери для brew. Тут я знайшов свій свіжий openssl:

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

Запустіть його так:

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

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

Я також не проти довшого шляху, ніж просто openssl

Пишу це тут для всіх працівників Google, які шукають розташування 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 and make install, обов’язково використовуйте sudo make і sudo make install (мені довелося пройти покроковий посібник двічі, оскільки я зробив це без sudo, і він не оновився).

Сподіваюся, це допомагає


3
FYI на сьогодні, як відомо, 1.0.1e (зокрема 1.0.1a-f) має серйозну уразливість системи безпеки. Майбутні читачі, переконайтеся, що ви оновили принаймні до 1,0,1 г heartbleed.com
SapphireSun

Стара версія все ще показує мені: stackoverflow.com/questions/22974590 / ...
quantumpotato

2
Мінус один : "... обов’язково використовуйте sudo make ..." - Ви не робите з привілеями. Ви простоmakeі потім,sudo make installякщо потрібно. Ви також цитували жахливу довідку. Він замінює OpenSSL 0.9.8 від Apple/usrоновленим 1.0.x. Це дійсно погана річ, оскільки немає бінарної сумісності.
jww

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, після встановлення з заварюванням, помістіть його

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

Але постійно з’являється повідомлення про помилку "Пов’язування лише кег openssl означає, що ви в кінцевому підсумку зможете встановити зв'язок із незахищеним" при спробі зв’язати його

Тож я просто зв’язав це, надавши повний шлях таким чином

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

Зараз він показує версію OpenSSL 1.0.2o, коли я роблю "openssl версію -a", я припускаю, що це спрацювало


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

2
Питання було про Homebrew ... macports - це не homebrew ... В ОП зазначено, що вони вважають за краще не використовувати порти mac.
Вейд Вільямс,

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