2013-08-21 48 views
8

Tôi đã nhận được "certificate verify failed (OpenSSL::SSL::SSLError)" trong ứng dụng ruby ​​của mình và đã quyết định đã đến lúc cập nhật openssl cũ trên hệ điều hành Mac OS X của tôi (Mountain Lion).cài đặt openssl trên OS X

Tôi túm lấy các nguồn mới nhất từ ​​here và đã làm như thường lệ

  • ./configure darwin64-x86_64-cc
  • làm
  • làm thử nghiệm
  • sudo make install

... và mọi thứ đã hoàn thành mà không có lỗi rõ ràng. Nhưng tôi nhận thấy rằng openssl mới đã không thay thế openssl cũ:

$ which openssl 
/usr/bin/openssl 
$ /usr/bin/openssl version 
OpenSSL 0.9.8x 10 May 2012 
$ /usr/local/ssl/bin/openssl version 
OpenSSL 1.0.1e 11 Feb 2013 

Tôi do dự để gây rối với các tệp hệ thống quan trọng vì sợ phá vỡ mọi thứ hiện có. Phương pháp được đề nghị là gì? Tôi đang nghĩ đến việc thay thế/usr/bin/openssl bằng một liên kết tượng trưng đến phiên bản/usr/local/ssl/bin. Liệu điều đó có hiệu quả?

+0

Kiểm tra giải pháp tôi đã sử dụng tại đây> https://stackoverflow.com/a/46179272/844890 – shaunthomas999

Trả lời

9

Ưu tiên bản sao cục bộ của bạn trên hệ thống sao chép bạn cần phải thêm nó vào shell của bạn PATH biến

export PATH="/usr/local/ssl/bin:$PATH" 

Nếu bạn muốn điều này để thực hiện mỗi khi bạn bắt đầu một vỏ chỉ cần thêm nó vào .bash_profile của bạn trong thư mục chính của bạn. Tuy nhiên, điều này sẽ không khắc phục được vấn đề của bạn vì Ruby cần được biên dịch lại OpenSSL mới (chúng tôi sẽ giả định tệp chứng chỉ gốc được cập nhật đi kèm với OpenSSL mới sẽ giả định vấn đề này). Tôi khuyên bạn nên cài đặt rvm hoặc rbenv và xây dựng lại ruby. Lưu ý rằng cả hai công cụ này đều muốn bạn cài đặt openssl qua homebrew.

+1

Điều đó đủ tốt cho tôi. FWIW, tôi có các kịch bản xây dựng của riêng tôi để đặt tất cả các tệp thực thi và thư viện ruby ​​trong một hộp cát và (như một điểm triết học) không bao giờ chạm vào các tệp hệ thống, cũng không yêu cầu sudo. Đó là phiên bản rvm của riêng tôi, tôi cho là vậy. –

Các vấn đề liên quan