2013-08-21 4 views
8

Я получаю "certificate verify failed (OpenSSL::SSL::SSLError)" в своем приложении ruby ​​и решил, что пришло время обновить старый openssl на моей системе Mac OS X (Mountain Lion).установка openssl на OS X

Я схватил последние источники из here и сделал обычный

  • ./configure darwin64-x86_64-CC
  • сделать
  • тест делают
  • Sudo сделать установку

... и все закончилось без видимой ошибки. Но я заметил, что новый OpenSSL не заменил старый OpenSSL:

$ 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 

Я колебался возиться с важными системными файлами для страха нарушить существующие вещи. Какой рекомендуемый подход? Я думаю о замене/usr/bin/openssl символической ссылкой на версию/usr/local/ssl/bin. Будет ли это работать?

+0

Проверьте решение, которое я использовал здесь> https://stackoverflow.com/a/46179272/844890 – shaunthomas999

ответ

9

Чтобы изменить приоритет локальной копии через систему копирования необходимо добавить его в оболочки переменной PATH

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

Если вы хотите, чтобы это выполнить каждый раз при запуске оболочки просто добавить его в свой .bash_profile в ваш домашний каталог.

Однако это не поможет устранить проблему, потому что Ruby необходимо будет перекомпилировать с новым OpenSSL (мы предположим, что обновленный файл корневых сертификатов, поставляемый с новым OpenSSL, предположительно исправит эту проблему). Я бы рекомендовал установить либо rvm, либо rbenv и восстановить рубин. Обратите внимание, что оба этих инструмента предпочитают устанавливать openssl через homebrew.

+1

Этого достаточно для меня. FWIW, у меня есть собственные скрипты сборки, которые помещают все исполняемые файлы ruby ​​и библиотеки в песочницу и (как философский момент) никогда не затрагивают системные файлы, а также не требуют sudo. По-моему, это моя собственная версия rvm. –