Cập nhật OpenSSL trên OS X bằng Homebrew


81

Tôi đang sử dụng MacOS X 10.7.5 và tôi cần phiên bản OpenSSL mới hơn do lỗi bắt tay . Có một số hướng dẫn trên internet và tôi đã thử những cách sau:

brew install openssl
brew link openssl --force

Tuy nhiên, nó không hoạt động:

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

Vấn đề SVN cũng không được giải quyết. Có ý kiến ​​gì không? Tôi không muốn thử cách MacPorts vì nó có thể gây trở ngại cho Homebrew.


1
Hãy vui mừng vì nó không hoạt động. Phiên bản 0.9.8r không bị lỗi HeartBleed. Nếu bạn đã nâng cấp thành công vào tháng 3 năm 2013, bất kỳ chứng chỉ SSL nào bạn tạo đều bị xâm phạm và bạn phải khóa lại ngay bây giờ. xem heartbleed.com để biết các phiên bản bị ảnh hưởng.
Houman

3
Câu hỏi này có vẻ lạc đề vì nó không phải về lập trình hay phát triển. Xem những chủ đề tôi có thể hỏi tại đây trong Trung tâm trợ giúp. Có lẽ Super User hoặc Apple Stack Exchange sẽ là nơi tốt hơn để hỏi.
jww

Câu trả lời:


89

Nếu bạn đang sử dụng Homebrew / usr / local / bin thì phải ở trước $PATHhoặc ít nhất là trước / usr / bin . Nếu bây giờ bạn chạy brew link --force openssltrong cửa sổ đầu cuối của mình, hãy mở một cửa sổ mới và chạy which openssltrong đó. Bây giờ nó sẽ hiển thị openssldưới / usr / local / bin .


2
Mình đã cài đặt 1.0.2h_1nhưng cũng chính xác tình trạng như vậy nhưng openssl version -avẫn cho mình OpenSSL 0.9.8zg 14 July 2015. Bất kỳ đề xuất?
Pmpr

84
Cái này không hoạt động vì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 Bạn có thể giải quyết sự cố này không? Đang phải đối mặt với cùng một vấn đề và không thể dường như để tìm một giải pháp bất cứ nơi nào
Tuhina Singh

3
@TimoLehto Không biết đây có phải là 'phương pháp hay' hay thậm chí là an toàn để làm hay không, nhưng bạn luôn có thể tạo liên kết từ / usr / local / bin đến / usr / local / opt / openssl / bin / openssl. Điều này có thể được thực hiện bằng cách sử dụng lệnh sau: ln -s /usr/local/opt/openssl/bin/openssl /usr/local/bin/openssl. Nói rõ hơn: Tôi không thể hứa với bạn rằng đây là một cách tiến hành an toàn hoặc đúng đắn.
brunodd

2
thêm thông tin về vấn đề này: stackoverflow.com/questions/38670295/…
ekkis Ngày

12

Trong một thiết bị đầu cuối, hãy chạy:

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

Trước tiên, bạn có thể phải hủy liên kết openssl nếu nhận được cảnh báo: brew unlink openssl

Điều này đảm bảo rằng chúng tôi đang liên kết các opensl chính xác cho tình huống này. (và không gây rối với .profile)

Mẹo cho câu trả lời của @ Olaf và nhận xét của @ Felipe. Một số người - chẳng hạn như tôi - có thể có một số vars PATH khá lộn xộn.


9
Nó chỉ nóiRefusing to link: openssl
rogerdpack

12

đã cài đặt openssl trên mac với brew nhưng không tìm thấy gì trên /usr/local/binnơi đặt các thùng đã cài đặt brew khác. Tìm thấy opensl mới của tôi ở đây:

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

Chạy nó như thế này:

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

Tôi không muốn cập nhật openssl OS X, trong khi một số nội dung hệ điều hành hoặc các ứng dụng bên thứ 3 khác có thể phụ thuộc vào phiên bản cũ hơn.

Tôi cũng không ngại con đường dài hơn chỉ openssl

Viết điều này ở đây cho tất cả nhân viên Google đang tìm kiếm vị trí của openssl được cài đặt bởi brew.


6

Tôi gặp sự cố này và nhận thấy rằng quá trình cài đặt mới hơn opensslthực sự hoạt động, nhưng của tôi PATHđã được thiết lập không chính xác cho nó - tôi $PATHđã đặt đường dẫn cổng trước đường dẫn bia của mình nên nó luôn tìm thấy phiên bản cũ hơn của openssl.

Cách khắc phục đối với tôi là đặt đường dẫn đến brew(/ usr / local / bin) ở phía trước của tôi $PATH.

Để biết bạn đang tải openssltừ đâu, hãy chạy which opensslvà ghi lại đầu ra. Nó sẽ là vị trí của phiên bản mà hệ thống của bạn đang sử dụng khi bạn chạy openssl. Nó sẽ ở đâu đó ngoài brewđường dẫn của "/ usr / local / bin". Thay đổi của bạn $PATH, đóng tab đầu cuối đó và mở tab mới và chạy which openssl. Bây giờ bạn sẽ thấy một đường dẫn khác, có thể là dưới / usr / local / bin. Bây giờ hãy chạy openssl versionvà bạn sẽ thấy phiên bản mới mà bạn đã cài đặt "OpenSSL 1.0.1e 11 Feb 2013".


5

Để trả lời câu hỏi của bạn về việc cập nhật openssl, tôi đã làm theo các bước sau để cập nhật thành công phiên bản có trên máy Mac của mình lên phiên bản openssl mới nhất 1.0.1e.

Tôi đã làm theo các bước được tìm thấy tại đây: http://foodpicky.com/?p=99

Khi bạn đến các bước cho lệnh đầu cuối makethực hiện cài đặt, hãy đảm bảo sử dụng sudo makesudo make install (tôi phải thực hiện từng bước hai lần vì tôi đã làm mà không có sudo và nó không cập nhật).

Hi vọng điêu nay co ich


3
FYI tính đến ngày hôm nay, 1.0.1e (cụ thể là 1.0.1a-f) được biết là có lỗ hổng bảo mật nghiêm trọng. Độc giả trong tương lai, hãy đảm bảo bạn nâng cấp lên ít nhất 1.0.1g heartbleed.com
SapphireSun

Phiên bản cũ vẫn đang hiển thị cho tôi: stackoverflow.com/questions/22974590/…
quantumpotato,

2
Điểm trừ thứ nhất : "... hãy sử dụng sudo make ..." - Bạn không thực hiện bằng các đặc quyền. Bạn chỉ cầnmakevà sau đósudo make installnếu cần. Bạn cũng đã trích dẫn một tài liệu tham khảo kinh khủng. Nó thay thế OpenSSL/usr0.9.8 của Apple bằng 1.0.x được cập nhật. Đó là một điều thực sự tồi tệ để làm vì không có khả năng tương thích nhị phân.
jww

3

Tôi đã gặp sự cố khi cài đặt một số plugin Wordpress trên máy chủ cục bộ của mình đang chạy php56 trên OSX10.11. Họ không kết nối được trên API bên ngoài qua SSL.

Cài đặt openSSL không giải quyết được vấn đề của tôi. Nhưng sau đó tôi phát hiện ra rằng CURL cũng cần được cài đặt lại.

Điều này đã giải quyết vấn đề của tôi bằng cách sử dụng Homebrew.

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

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

1

Trên mac OS X Yosemite, sau khi cài đặt nó với brew, nó sẽ đưa nó vào

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

Nhưng tiếp tục gặp lỗi "Liên kết openssl chỉ có keg có nghĩa là bạn có thể kết thúc liên kết chống lại sự không an toàn" khi cố gắng liên kết nó

Vì vậy, tôi chỉ liên kết nó bằng cách cung cấp đường dẫn đầy đủ như vậy

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

Bây giờ nó đang hiển thị phiên bản OpenSSL 1.0.2o khi tôi làm "phiên bản openssl -a", tôi cho rằng nó hoạt động


-8
  1. cài đặt cổng: https://guide.macports.org/
  2. cài đặt hoặc nâng cấp gói openssl: sudo port install opensslhoặcsudo port upgrade openssl
  3. thế là xong, chạy openssl versionđể xem kết quả.

2
Câu hỏi là về Homebrew ... macports không phải là homebrew ... OP nói rằng họ không muốn sử dụng cổng mac.
Wade Williams

@WadeWilliams mac trong phiên bản mới không cho phép bạn cập nhật opensslbằng cách sử dụng Homebrew, ý tôi là bạn có thể cài đặt hoặc cập nhật nó bằng cách sử dụng Homebrewnhưng bạn không thể ưu tiên nó. Vì vậy, thay vì cập nhật nó bằng cách sử dụng, Homebrewbạn có thể cập nhật nó bằng cách sử dụng macports và ưu tiên nó.
Morteza Sepehri Niya
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.