OpenSSL 연결을 거부하는 Homebrew


141

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/

3
.NET Core의 경우 지원되는 OpenSSL 버전 (1.0.1 또는 1.0.2 버전)이 필요합니다. 0.9.8 버전을보고하므로 brew upgrade openssl먼저 해야 합니까?
bartonjs

2
나는 이미 그렇게했습니다. 분명히해야했지만 질문에 해당 단계를 추가하지 않았습니다. 그러나 나는 이미 brew updateand을 수행했습니다 brew install openssl. 지원되는 버전을 설치하려고합니다.
daviddeath

2
Homebrew에서 명시 적으로 차단 한 것 같습니다 ( github.com/Homebrew/brew/commit/…) .
bartonjs

4
그리고 .. 계속해서 엉망진창
bartonjs

2
"... openssl을 연결하려고하면이 연결 오류가 계속 발생합니다 ..." - Mac OSX에서 gcc를 사용하여 실행 파일의 런타임 경로 (-rpath)를 설정하는 방법을 참조하십시오 . . Brew가 라이브러리를 추가하지 않으면 런타임에 항상 올바른 라이브러리를로드하는 데 도움이 될 수 있습니다.
jww

답변:


63

다른 답변에 대한 업데이트에서 알 수 있듯이 이전 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 라이브러리의 경로를 업데이트 한 후에는 대화식 세션을 다시 시작해야합니다 (예 : 콘솔을 닫고 다른 세션을 시작).


그 줄을 어디에 추가해야합니까? CI 에서이 작업을 수행하려고합니다. 을 받고 있습니다 /usr/local/share/dotnet/shared/Microsoft.NETCore.App/1.0.0/System.Security.Cryptography.Native.dylib (No such file or directory).
mrahhal

@mrahhal 이것이 dotnet툴링 의 설치 경로입니다 . 설치되지 않았거나 설치했거나 다른 위치에있을 수 있습니다. 설치되어 있고 사용자 which dotnet가 찾은 경우 찾을 수 있습니다.
벤 콜린스

아, 방금 설치하기 전에이 줄을 추가하고 있음을 깨달았습니다 dotnet. 다시 시도하고 다시 올 것이다.
mrahhal

3
내 경우에는 SDK가 다른 디렉토리에 설치되어 경로를 변경해야했습니다.
mrahhal

4
dotnet 1.1.0으로 다음을 수행해야합니다.sudo install_name_tool -add_rpath /usr/local/opt/openssl/lib /usr/local/share/dotnet/shared/Microsoft.NETCore.App/1.1.0/System.Security.Cryptography.Native.OpenSsl.dylib
Bouke

60

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

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의 의견에있는 링크를 읽으십시오.


9
마지막 링크의 전체 경로 /usr/local/bin/openssl입니까?
Mohamed Hafez

이 대답이 받아 들여지지 않는 이유는 내 생명을 구한 것입니다. :: thumb up ::
wukong

2
brew가 이것을 거부하는 좋은 이유가 있습니다. github.com/Homebrew/brew/pull/597 도 참조하십시오 .
Bouke

7
이 솔루션은 저에게 효과적이지만 버전 차이 1.0.2j1.0.2k인해 변경 해야했습니다 . 따라서 사용자는 현재 버전의 경로를 조정해야 할 수도 있습니다.
Jeff

@Jeff의 의견이 너무 늦었습니다. 당신도 역시 그렇게했다고 생각 ln -s -f /usr/local/Cellar/openssl/1.0.2k/bin/openssl /usr/local/bin/openssl합니다
shaneparsons

49

이 솔루션들 중 어느 것도 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

OS X에 .NET 코어를 설치하려는 경우 Docker로 감싸 야합니다.
mcgwier

6
이 모든 작업을 수행 한 후 : OpenSSL 0.9.8zh 2016 년 1 월 14 일 구축 날짜 : 2016 년 5 월 15 일 플랫폼 : darwin64-x86_64-llvm
AsimRazaKhan

5
다음과 같은 방법으로 심볼릭 링크를 만들면 나에게 도움이되었습니다 ln -s /usr/local/openssl-1.0.2h/bin/openssl /usr/local/bin/openssl. 터미널 세션을 다시 시작한 후 내장 which openssl버전 ( /usr/local/bin/openssl) 대신 업데이트 된 1.0.2 버전 ( )을 사용하고 있는지 입력 하십시오 /usr/bin/openssl.
Olivier

1
이 지침을 따랐지만 openssl을 입력하면 (/ opt / local / bin / openssl)이 나타납니다. / usr / local / bin / openssl이 되려면 어떻게해야합니까?
Chris

2
나는이 지침을 따르고 (단계별로 감사드립니다) 여전히 0.9.8이라고 말했습니다. 작동하는 대체 연결 방법에 대해 Olivier에게 감사합니다.
Onikoroshi

45

다음 brew info openssl과 같이 정보를 실행 하고 읽으십시오.

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


3
brew info openssl나에게도 같은 유용한 정보를 주었다. 위의 제안 된 명령을 실행 한 다음 source ~/.bash_profile새 터미널 을 실행 하거나 열면 해결되었습니다.
PanPipes

2
드디어. 이것은 또한 나를 위해 일했습니다. 위의 다른 답변은 그렇지 않았습니다!
user124384

2
또는echo 'export PATH="/usr/local/opt/openssl/bin:$PATH"' >> ~/.zshrc
B.Ma

16

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

Mac을 마이그레이션했으며 OpenSSL을 포함한 모든 가정용 설치를 연결 해제했습니다 . 이 gem install문제가 발생하여 처음 문제를 발견하고 복구를 시작했습니다.

백만 개의 솔루션 (OSX Sierra-10.12.5로 마이그레이션 할 때)이 끝난 후 솔루션은 코믹하게 단순 해졌습니다.

brew reinstall ruby
brew reinstall openssl

그리고 1 년 후, 이것은 나의 Mac을 이주시키는 데 일어 났고, 당신의 수정도 저에게 효과적이었습니다. 정말 고마워; 새 Mac을 지우고 새로 설치하고 모든 것을 수동으로 다시 설정하는 것을 고려하고있었습니다.
David

@David 나는 당신이 위기를 극복하지 못하게 기뻤습니다! 나는 거의 똑같이했다.
tobybot

1
위의 작업을 수행하기 전에이 폴더를 삭제해야 할 수도 있습니다. rm -rf /usr/local/opt/openssl
Gal Bracha

9

내가 찾은 모든 것을 시도했지만 아무것도 작동하지 않으면 다음과 같이 시도했습니다.

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

1
이것은 정말 간단한 해결책이며 그것이 나를 위해 일할 것이지만 여기서는 운이 없기를 바랍니다. PATH를 업데이트하고 셸 세션을 다시 시작한 which openssl후에도 여전히 가리 킵니다/usr/bin/openssl
Will Hitchcock

이 작업을 수행하려면 .bash_profile도 편집해야했습니다. 그러나 효과가 있었던 유일한 것은 / usr / bin 대신 / usr / local / bin을 찾도록하는 것입니다. 나는 이것을 추가함으로써 이것을했다export PATH=/usr/local/bin:$PATH
Alison

3
이 작업을 수행하려면, 당신은 추가 할 필요가 /usr/local/opt/openssl/bin, 없이/openssl 받는 사람, 마지막에 전면 : 경로가 아니라 말의 PATH=/usr/local/opt/openssl/bin:$PATH 사용 /usr/local/opt/openssl대신 /usr/local/Cellar/openssl/$version수단 것은 자동으로하지 않고 $ 경로에서 최신 버전을하겠습니다 업그레이드 할 때마다 변경하십시오.
Mark Reed

몇 시간의 바보 후 이것은 @MarkReed의 추가 노트와 함께 나를 위해 속임수를했다
Naomi See

나는 이것을 사용하고 나를 위해 일할 수있었습니다. 감사합니다. openssl 1.0.2q 버전이 있습니다.
Karthik NG

8

비슷한 경우가 있습니다. 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


이 파일은 pysqlcipher 설치에 유용한 것으로 나타났습니다
drtf

설치에 유용합니다 cryptography. PKG_CONFIG_PATH변수 가 누락되었습니다
Sagar

7

이것은 나를 위해 일했다 :

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

Mac OS High Sierra에서 PHP 7.2.1을 phpbrew로 컴파일하려고 시도했습니다. 감사합니다!
Bruno de Oliveira

6

edwardthesecond의 위의 솔루션은 Sierra에서도 저에게 효과적이었습니다.

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

내가 전에 한 다른 단계는 다음과 같습니다.

  • brew를 통해 openssl 설치

    brew install openssl
    
  • homebrew가 제안한대로 openssl을 경로에 추가

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

la part './configure && make'를 건너 뛰었습니다
David 'mArm'Ansermot

2

기본적으로 homebrew는 OpenSSL 버전 1.1을 제공했으며 대신 1.0 버전을 찾고있었습니다. 이것은 나를 위해 일했습니다.

버전 1.0을 설치하려면

brew install https://github.com/tebelorg/Tump/releases/download/v1.0.0/openssl.rb

그런 다음 내 길을 symlink하려고했지만 다음과 같은 오류가 발생했습니다.

ln -s /usr/local/Cellar/openssl/1.0.2t/include/openssl /usr/bin/openssl
ln: /usr/bin/openssl: Operation not permitted

brew switch 명령을 사용하여 마지막으로 링크 된 openssl이 1.0 버전을 가리 키도록합니다.

brew switch openssl 1.0.2t
Cleaning /usr/local/Cellar/openssl/1.0.2t
Opt link created for /usr/local/Cellar/openssl/1.0.2t

1

참고 : https://github.com/Homebrew/brew/pull/612 로 인해 더 이상 작동하지 않습니다.

나는 오늘 같은 문제가 있었다. openssl 1.0.2를 제거 (unbrewed ??)하고 homebrew와 함께 1.0.1도 설치했습니다. Dotnet new / restore / run은 정상적으로 작동했습니다.

openssl 101 설치 :
brew install homebrew / versions / openssl101
연결 :
brew link --force homebrew / versions / openssl101


2
이렇게 했어요! 1.0.2가 연결하고 싶지 않은 것 같습니다. 다음 질문은 .netcore가 커뮤니티에서 권장하지 않는 것을 제안하는 이유입니다.
daviddeath

1.0.2 며칠 전에 다른 Mac에서 저에게 도움이 되었기 때문에 최근의 양조 또는 openssl 변경이있을 수 있습니다. 어쨌든, 닷넷 코어의 경우, 우리는 좋습니다 :)
user3488820

1
@bartonjs가 게시 한 github 링크는 brew가 며칠 전에 업데이트되었음을 ​​보여줍니다. 커밋을 보면 변경 사항은`HOMEBREW_PREFIX.to_s == "/ usr / local"&& keg.name == "openssl"인 경우 1.0.1 버전에서 다른 HOMEBREW_PREFIX를 사용하는 것으로 추측됩니다.
daviddeath

11
나를 위해 작동하지 않았지만 여전히 오류가 발생합니다Refusing to link: openssl101 Linking keg-only openssl101 means you may end up linking against the insecure, deprecated system OpenSSL while using the headers from Homebrew's openssl101. Instead, pass the full include/library paths to your compiler e.g.: -I/usr/local/opt/openssl101/include -L/usr/local/opt/openssl101/lib
dark_ruby

6
이 답변은 더 이상 github.com/Homebrew/brew/pull/612의
Joshka

1

최신 버전의 ruby ​​2.6.5 https://github.com/kelaberetiv/TagUI/issues/86 을 설치하는 동안 동일한 문제 가 발생하여 문제를 해결하는 데 도움이됩니다. macOS catalina 버전 10.15.1의 경우

기본적으로 나는 update and upgradehomebrew를하고 openssl을 설치하고 루비를 설치합니다.

brew update && brew upgrade
brew install openssl

그런 다음이 2 개의 심볼릭 링크를 만듭니다

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/

그런 다음 루비 2.6.5를 설치했습니다.


0

나를 위해 이것은 효과가 있었다 ...

./bash_profile을 편집하고 아래 명령을 추가했습니다.

내보내기 PATH = "/ usr / local / opt / openssl / bin : $ PATH"


0
export https_proxy=http://127.0.0.1:1087 http_proxy=http://127.0.0.1:1087 all_proxy=socks5://127.0.0.1:1080

나를 위해 일한다

나는 그것이 모든 문제를 해결할 수 있다고 생각합니다. Failed to connect to raw.githubusercontent.com port 443: Connection refused

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.