Доморощенные отказываются связывать OpenSSL



Я на: OSX 10.11.6, доморощенная версия 0.9.9 m OpenSSL 0.9.8 zg 14 июля 2015



Я пытаюсь играть с dotnetcore и следуя их - инструкции,



я обновил/установил последнюю версию OpenSSL:



> brew install openssl
==> Downloading https://homebrew.bintray.com/bottles/openssl-1.0.2h_1.el_capitan.bottle.tar.gz
Already downloaded: /Users/administrator/Library/Caches/Homebrew/openssl-1.0.2h_1.el_capitan.bottle.tar.gz
==> Pouring openssl-1.0.2h_1.el_capitan.bottle.tar.gz
==> Caveats
A CA file has been bootstrapped using certificates from the system
keychain. To add additional certificates, place .pem files in
/usr/local/etc/openssl/certs

and run
/usr/local/opt/openssl/bin/c_rehash

This formula is keg-only, which means it was not symlinked into /usr/local.

Apple has deprecated use of OpenSSL in favor of its own TLS and crypto libraries

Generally there are no consequences of this for you. If you build your
own software and it requires this formula, you'll need to add to your
build variables:

LDFLAGS: -L/usr/local/opt/openssl/lib
CPPFLAGS: -I/usr/local/opt/openssl/include


но когда я пытаюсь связать openssl я продолжаю работать в эту ошибку связывания:



> brew link --force openssl
Warning: Refusing to link: openssl
Linking keg-only OpenSSL means you may end up linking against the insecure,
deprecated system version while using the headers from the Homebrew version.
Instead, pass the full include/library paths to your compiler e.g.:
-I/usr/local/opt/openssl/include -L/usr/local/opt/openssl/lib


опция включения флагов компилятора не имеет смысла для меня, так как я не компилирую их библиотеки, от которых я зависим.



EDIT dotnetcore обновил свои инструкции:



brew update    
brew install openssl
ln -s /usr/local/opt/openssl/lib/libcrypto.1.0.0.dylib /usr/local/lib/
ln -s /usr/local/opt/openssl/lib/libssl.1.0.0.dylib /usr/local/lib/
615   11  

11 ответов:

как следует из обновления к другому ответу, обходной путь установки старого openssl101 brew больше не будет работать. Для решения проблемы прямо сейчас см. этот комментарий на dotnet / cli#3964.

самая актуальная часть вопроса скопирована здесь:

Я посмотрел на другой вариант, который был предложен для установки rpath в библиотеке. Я думаю, что следующее является лучшим решением, которое будет влиять только на эту конкретную библиотеку.

sudo install_name_tool -add_rpath /usr/local/opt/openssl/lib /usr/local/share/dotnet/shared/Microsoft.NETCore.App/1.0.0/System.Security.Cryptography.Native.dylib

и / или если у Вас установлен NETCore 1.0.1, выполните ту же команду для 1.0.1:

sudo install_name_tool -add_rpath /usr/local/opt/openssl/lib /usr/local/share/dotnet/shared/Microsoft.NETCore.App/1.0.1/System.Security.Cryptography.Native.dylib

по сути, вместо того, чтобы говорить операционной системе всегда использовать доморощенную версию SSL и потенциально вызывать что-то сломать, мы говорим dotnet, как найти правильную библиотеку.

также важно, похоже, что Microsoft знает об этой проблеме и имеет как a) несколько немедленный план по смягчению, а также Б) долгосрочное решение (probaby связывание OpenSSL с dotnet).

еще одна вещь, чтобы отметить:/usr/local/opt/openssl/lib где варево связано по умолчанию:

13:22 $ ls -l /usr/local/opt/openssl
lrwxr-xr-x  1 ben  admin  26 May 15 14:22 /usr/local/opt/openssl -> ../Cellar/openssl/1.0.2h_1

если по какой-либо причине вы устанавливаете brew и связываете его в другом месте, то этот путь является тем, который вы должны использовать в качестве rpath.

после того как вы обновите путь rpath системы.Безопасность.Криптография.Родной.dylib libray, вам нужно будет перезапустить интерактивный сеанс (т. е. закройте консоль и запустите другую).

Это то, что сработало для меня:

brew update
brew install openssl
ln -s /usr/local/opt/openssl/lib/libcrypto.1.0.0.dylib /usr/local/lib/
ln -s /usr/local/opt/openssl/lib/libssl.1.0.0.dylib /usr/local/lib/
ln -s /usr/local/Cellar/openssl/1.0.2j/bin/openssl /usr/local/bin/openssl

благодаря @dorlandode в этой теме https://github.com/Homebrew/brew/pull/597

NB: я использовал это только как временное исправление, пока не смог правильно установить Openssl снова с нуля. Как я помню, я провел большую часть дня отладки и возникли проблемы, прежде чем я понял, что лучший способ-это вручную установить сертификаты, которые мне нужны один за другим. Пожалуйста, прочитайте ссылку в комментарии @bouke раньше пытаюсь это сделать.

ни одно из этих решений не работало для меня на OS X El Capitan 10.11.6. Вероятно, потому, что OS X имеет родную версию openssl, которая, по его мнению, превосходит, и как таковая, не любит подделывать.

Итак, я пошел по большой дороге и начал все заново...


ручная установка и символическая ссылка

cd /usr/local/src  
  • если вы получаете "нет такого файла или каталога", сделать это:

    cd /usr/local && mkdir src && cd src

скачать openssl:

curl --remote-name https://www.openssl.org/source/openssl-1.0.2h.tar.gz

извлечение и cd в:

tar -xzvf openssl-1.0.2h.tar.gz
cd openssl-1.0.2h

компиляция и установка:

./configure darwin64-x86_64-cc --prefix=/usr/local/openssl-1.0.2h shared
make depend
make
make install

теперь symlink OS X's openssl для вашего нового и обновленного openssl:

ln -s /usr/local/openssl-1.0.2h/bin/openssl /usr/local/bin/openssl

закройте терминал, откройте новый сеанс и убедитесь, что OS X использует ваш новый openssl:

openssl version -a

просто выполнить brew info opensslи прочитайте информацию, где он говорит:

Если вам нужно иметь это программное обеспечение сначала в вашем пути запуска:echo 'export PATH="/usr/local/opt/openssl/bin:$PATH"' >> ~/.bash_profile

просто чтобы оставить заметку об этом, я перенес свой mac, и он отключил все мои доморощенные установки, включая этот. Это сломалось gem install, именно так я впервые начал пытаться исправить это.

я попробовал миллион решений (я на OSX Sierra-10.12.5), и решение оказалось комично простым:

brew reinstall ruby
brew reinstall openssl

попробовав все, что я мог найти, и ничего не сработало, я просто попробовал это:

touch ~/.bash_profile; open ~/.bash_profile

внутри файла добавлена эта строка.

export PATH="$PATH:/usr/local/Cellar/openssl/1.0.2j/bin/openssl"

Теперь все работает :)

Jorns-iMac:~ jorn$ openssl version -a
OpenSSL 1.0.2j  26 Sep 2016
built on: reproducible build, date unspecified
//blah blah
OPENSSLDIR: "/usr/local/etc/openssl"

Jorns-iMac:~ jorn$ which openssl
/usr/local/opt/openssl/bin/openssl

у меня похожий случай. Мне нужно установить openssl через brew, а затем использовать pip для установки mitmproxy. Я получаю ту же жалобу от brew link --force. Ниже приведено решение, которое я достиг: (без силовой связи с помощью brew)

LDFLAGS=-L/usr/local/opt/openssl/lib 
CPPFLAGS=-I/usr/local/opt/openssl/include
PKG_CONFIG_PATH=/usr/local/opt/openssl/lib/pkgconfig 
pip install mitmproxy

это не решает вопрос прямолинейно. Я оставляю один лайнер на случай, если кто-то использует pip и требует OpenSSL lib.

Примечание:/usr/local/opt/openssl/lib пути получаются с помощью brew info openssl

это сработало для меня:

 brew install openssl
 cd /usr/local/include 
 ln -s ../opt/openssl/include/openssl .

решение выше от edwardthesecond работало для меня тоже на Sierra

 brew install openssl
 cd /usr/local/include 
 ln -s ../opt/openssl/include/openssl 
 ./configure && make

другие шаги, которые я сделал раньше были:

  • установка openssl через brew

    brew install openssl
    
  • добавление openssl к пути, как предложено homebrew

    brew info openssl
    echo 'export PATH="/usr/local/opt/openssl/bin:$PATH"' >> ~/.bash_profile
    

Примечание: это больше не работает из-за https://github.com/Homebrew/brew/pull/612

У меня была такая же проблема сегодня. Я удалил (unbrewed??) openssl 1.0.2 и установлен 1.0.1 также с доморощенным. Dotnet new / restore / run тогда работал нормально.

установить openssl 101:
brew install homebrew / versions / openssl101
Связывание:
brew link --force homebrew / versions / openssl101

для меня это сработало...

я редактировал ./bash_profile и добавил следующую команду

экспортировать переменную path="/usr/местные/опт/поддержка/ОГРН:$путь"

Comments

    Ничего не найдено.