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.


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 .


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.


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.


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”.


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


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

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


-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.

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
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.