Как обновить OpenSSL в OS X?
$ openssl version
OpenSSL 1.0.1f 6 Jan 2014
Это демонстрирует, что я не использую версию OpenSSL Mavericks:
$ which openssl
/opt/local/bin/openssl
OpenSSL выпустила исправление сегодня в 1.0.1g и мне интересно, как я могу установить эту установленную версию поверх текущей версии
4 ответа
Для чего это стоит, я просто использовал homebrew ( http://brew.sh/):
brew update
brew install openssl
brew link --force openssl
openssl version -a
Если появляется одна из плохих версий (1.0.1a-f), вы можете выяснить, какую версию openssl вы используете, таким образом:
which openssl
Часто это из /usr /bin. Чтобы убедиться, что вы получаете обновленную версию, поместите символическую ссылку в /usr /local /bin, чтобы указать на обновленный openssl, например:
ln -s /usr/local/Cellar/openssl/1.0.1g/bin/openssl /usr/local/bin/openssl
В качестве альтернативы этому заключительному этапу некоторые люди заменяют openssl в /usr/bin
символической ссылкой на /usr/local/Cellar/openssl/1.0.1g/bin/openssl
(или независимо от вашей версии):
mv /usr/bin/openssl /usr/bin/openssl_OLD
ln -s /usr/local/Cellar/openssl/1.0.1g/bin/openssl /usr/bin/openssl
Но это, как известно, вызывает проблемы с некоторыми более поздними версиями OSX. Лучше просто вставить новую символическую ссылку в /usr /local /bin, которая должна иметь приоритет на вашем пути через /usr /bin.
Или для тех, кто использует mac-порты, и не беспокоится о сохранении версии
sudo port upgrade openssl
Примеры: -)
Для решения Расширение неограниченной памяти расширения запроса OCSP (CVE-2016-6304) на macOS Sierra, используя brew
с «Защита целостности системы» :
-
Временно отредактируйте разрешения для
/usr/local
, чтобы варить можно:sudo chgrp -R admin /usr/local sudo chmod -R g+w /usr/local
-
Установите обновленную версию OpenSSL (вы, вероятно, хотите 1.0.2i):
brew install openssl
-
Вам может понадобиться /нужно удалить существующую символическую ссылку в openssl из
/usr/local/bin
:rm /usr/local/bin/openssl
-
Подсоедините правильную версию пива:
sudo ln -s /usr/local/Cellar/openssl/1.0.2i/bin/openssl /usr/local/bin/openssl
-
Восстановить исходные разрешения для
/usr/local/bin
:sudo chown root:wheel /usr/local
Тот, кто не хочет использовать пиво или порты и просто хочет заменить стандартную установку OpenSSL 0.9.8, всегда может отключить защиту целостности системы, перезагрузившись в режим восстановления (cmd + R) и выпуская
csrutil disable
и затем скомпилировать openssl с помощью
./config --prefix=/usr
make install
Он успешно заменил OpenSSL в ElCapitan для меня, и я смог скомпилировать curl и apache httpd 2.4 без каких-либо проблем непосредственно из источников. Примером такого метода может показаться, что ElCapitan больше не поддерживается Apple, и никаких обновлений не ожидается, поэтому он, вероятно, не сломается. Во-вторых, это избавляет вас от указания на папку openssl в /usr /local для каждой программы, которую вы компилируете, делая компиляцию более надежной.