Zaktualizuj OpenSSL na OS X za pomocą Homebrew

81

Używam MacOS X 10.7.5 i potrzebuję nowszej wersji OpenSSL z powodu niepowodzeń uzgadniania . W Internecie jest kilka samouczków i wypróbowałem następujące:

brew install openssl
brew link openssl --force

Niemniej jednak nie działa:

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

Problem z SVN również nie został rozwiązany. Jakieś pomysły? Wolałbym nie próbować sposobu MacPorts, ponieważ może to kolidować z Homebrew.

Joachim
źródło
1
Ciesz się, że to nie zadziałało. Wersja 0.9.8r nie zawierała błędu HeartBleed. Jeśli pomyślnie przeprowadziłeś aktualizację w marcu 2013 r., Każdy utworzony certyfikat SSL zostanie naruszony i będziesz musiał ponownie go teraz ponownie wprowadzić. zobacz heartbleed.com dla wersji, których dotyczy problem.
Houman,
3
To pytanie wydaje się być niezwiązane z tematem, ponieważ nie dotyczy programowania ani programowania. Zobacz, o jakie tematy mogę zapytać w Centrum pomocy. Być może Super User lub Apple Stack Exchange byłyby lepszym miejscem do zadawania pytań.
jww

Odpowiedzi:

89

Jeśli używasz Homebrew / usr / local / bin, powinien już znajdować się na początku $PATHlub przynajmniej przed / usr / bin . Jeśli teraz uruchomisz brew link --force opensslw oknie terminala, otwórz nowe i uruchom which opensslw nim. Powinien teraz pojawić się opensslw / usr / local / bin .

Olaf Heinemann
źródło
2
Zainstalowałem 1.0.2h_1, ale jestem dokładnie w tej samej sytuacji, ale openssl version -anadal mi daje OpenSSL 0.9.8zg 14 July 2015. Jakieś sugestie?
Pmpr
84
Ten nie działa, ponieważ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
Timo
6
@TimoLehto Czy udało Ci się rozwiązać ten problem?
Mam ten
3
@TimoLehto Nie mam pojęcia, czy jest to „dobra praktyka”, czy nawet bezpieczne, ale zawsze możesz utworzyć łącze z / usr / local / bin do / usr / local / opt / openssl / bin / openssl. Można to zrobić za pomocą następującego polecenia: ln -s /usr/local/opt/openssl/bin/openssl /usr/local/bin/openssl. Żeby było jasne: nie mogę obiecać, że jest to bezpieczny lub właściwy sposób postępowania.
brunodd
2
więcej informacji na ten temat: stackoverflow.com/questions/38670295/…
ekkis
12

W terminalu uruchom:

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

Być może będziesz musiał najpierw odłączyć openssl, jeśli pojawi się ostrzeżenie: brew unlink openssl

Gwarantuje to, że łączymy poprawny plik openssl dla tej sytuacji. (i nie zadziera z .profile)

Cynk kapelusza do odpowiedzi @ Olafa i komentarza @ Felipe. Niektórzy ludzie - na przykład ja - mogą mieć dość popsute zmienne PATH.

Marc Smith
źródło
9
Jest po prostu napisaneRefusing to link: openssl
rogerdpack
12

zainstalowany openssl na komputerze Mac z naparem, ale nie znaleziono niczego, /usr/local/bingdzie znajdują się inne zainstalowane pojemniki na napar. Tutaj znalazłem mój nowy plik openssl:

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

Uruchom to w ten sposób:

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

Nie chcę aktualizować OS X openssl, podczas gdy niektóre elementy systemu operacyjnego lub aplikacje innych firm mogą zależeć od starszej wersji.

Nie przeszkadza mi też dłuższa ścieżka niż zwykła openssl

Piszę to tutaj dla wszystkich pracowników Google, którzy szukają lokalizacji pliku openssl zainstalowanego przez brew.

Lukas Liesis
źródło
6

Miałem ten problem i stwierdziłem, że instalacja nowszej wersji opensslfaktycznie zadziałała, ale moja PATHkonfiguracja była do tego niepoprawna - moja $PATHścieżka portów została umieszczona przed ścieżką parzenia, więc zawsze znajdowała starszą wersję openssl.

Rozwiązaniem dla mnie było umieszczenie ścieżki do brew(/ usr / local / bin) na początku pliku $PATH.

Aby dowiedzieć się, skąd ładujesz openssl, uruchom which openssli zanotuj dane wyjściowe. Będzie to lokalizacja wersji używanej przez system podczas uruchamiania openssl. Będzie to miejsce inne niż brewścieżka „/ usr / local / bin”. Zmień swoją $PATH, zamknij tę kartę terminala i otwórz nowy i uruchom which openssl. Powinieneś teraz zobaczyć inną ścieżkę, prawdopodobnie w / usr / local / bin. openssl versionUruchom teraz i powinieneś zobaczyć zainstalowaną nową wersję „OpenSSL 1.0.1e 11 lutego 2013”.

GregT
źródło
5

Aby odpowiedzieć na twoje pytanie dotyczące aktualizacji openssl, wykonałem następujące kroki, aby pomyślnie zaktualizować wersję znalezioną na moim Macu do najnowszej wersji openssl 1.0.1e.

Postępowałem zgodnie z instrukcjami tutaj: http://foodpicky.com/?p=99

Kiedy dotrzesz do kroków dla poleceń terminala make i make install, upewnij się, że używasz sudo make i sudo make install (musiałem przejść przez krok po kroku dwa razy, ponieważ zrobiłem to bez sudo i nie zaktualizowałem).

Mam nadzieję że to pomoże

świeży
źródło
3
FYI na dzień dzisiejszy 1.0.1e (a konkretnie 1.0.1a-f) jest znane z poważnej luki w zabezpieczeniach. Przyszli czytelnicy, upewnijcie się, że uaktualniacie do wersji co najmniej 1.0.1g heartbleed.com
SapphireNdz
Stara wersja wciąż mi się wyświetla: stackoverflow.com/questions/22974590/ ...
quantumpotato
2
Minus jeden : "... pamiętaj, aby użyć sudo make ..." - Nie robisz z przywilejami. Po prostu,makea potem wsudo make installrazie potrzeby. Zacytowałeś również okropną wzmiankę. Zastępuje OpenSSL/usr0.9.8firmy Applezaktualizowaną wersją 1.0.x. To naprawdę zła rzecz, ponieważ nie ma zgodności binarnej.
jww
3

Miałem problemy z instalacją niektórych wtyczek Wordpress na moim lokalnym serwerze z php56 na OSX10.11. Nie udało się połączyć z zewnętrznym interfejsem API przez SSL.

Zainstalowanie openSSL nie rozwiązało mojego problemu. Ale potem zorientowałem się, że CURL również wymaga ponownej instalacji.

To rozwiązało mój problem z Homebrew.

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

brew uninstall php56 && brew install php56 --with-homebrew-curl --with-openssl
De Potter Bart
źródło
1

Na Mac OS X Yosemite, po zainstalowaniu go z brewem, umieścił go w

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

Ale ciągle pojawia się błąd „Łączenie openssl tylko do beczek oznacza, że ​​możesz skończyć linkowanie z niezabezpieczonym” podczas próby połączenia

Więc po prostu połączyłem to, podając pełną ścieżkę w ten sposób

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

Teraz pokazuje wersję OpenSSL 1.0.2o kiedy robię „openssl version -a”, zakładam, że zadziałało

Robert Sinclair
źródło
-8
  1. zainstaluj port: https://guide.macports.org/
  2. zainstaluj lub zaktualizuj pakiet openssl: sudo port install openssllubsudo port upgrade openssl
  3. to wszystko, biegnij, openssl versionaby zobaczyć wynik.
Morteza Sepehri Niya
źródło
2
Pytanie dotyczyło Homebrew ... macports to nie homebrew ... OP mówi, że wolą nie używać portów mac.
Wade Williams
@WadeWilliams mac w nowej wersji dawka nie pozwala na aktualizację opensslza pomocą Homebrew, to znaczy możesz zainstalować lub zaktualizować go za pomocą, Homebrewale nie możesz nadać mu priorytetu. Więc zamiast aktualizować go za pomocą Homebrew, możesz go zaktualizować za pomocą macports i nadać mu priorytet.
Morteza Sepehri Niya