[macos] OpenSSL 연결을 거부하는 Homebrew

OSX 10.11.6, Homebrew 버전 0.9.9m OpenSSL 0.9.8zg 2015 년 7 월 14 일

나는 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

컴파일러 플래그를 포함하는 옵션은 내가 의존하는 라이브러리를 컴파일하지 않기 때문에 의미가 없습니다.

편집 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/



답변

다른 답변에 대한 업데이트에서 알 수 있듯이 이전 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을 사용하도록 지시하고 잠재적으로 문제가 발생하는 대신 닷넷에 올바른 라이브러리를 찾는 방법을 알려줍니다.

또한 중요한 점은 Microsoft가 문제를 인식하고 있으며 a) 완화하기위한 다소 즉각적인 계획과 b) 장기적인 솔루션 (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

어떤 이유로 든 추출을 설치하고 다른 위치에 연결하는 경우 해당 경로는 rpath로 사용해야합니다.

System.Security.Cryptography.Native.dylib 라이브러리의 경로를 업데이트 한 후에는 대화식 세션을 다시 시작해야합니다 (예 : 콘솔을 닫고 다른 세션을 시작).


답변

이것이 나를 위해 일한 것입니다.

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의 기본 버전이 우수하기 때문에 탬 퍼링을 좋아하지 않는다고 생각할 수 있습니다.

그래서 나는 높은 길을 밟아 신선하게 시작했습니다 …


수동 설치 및 symlink

cd /usr/local/src
  • “No such file or directory”가 표시되면 다음을 수행하십시오.

    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의 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과 같이 정보를 실행 하고 읽으십시오.

PATH에서이 소프트웨어를 먼저 사용해야하는 경우 다음을 실행하십시오. echo 'export PATH="/usr/local/opt/openssl/bin:$PATH"' >> ~/.bash_profile


답변

Mac을 마이그레이션하면 homebrew가 중단되는 경우 :

Mac을 마이그레이션했으며 OpenSSL을 포함한 모든 가정용 설치를 연결 해제했습니다 . 이 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


답변

비슷한 경우가 있습니다. brew를 통해 openssl을 설치 한 다음 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