OS X에서 OpenSSL을 업그레이드하는 방법은 무엇입니까?


120

오늘 하트 OpenSSL 익스플로잇은 공격자가 사적인 서버 키를 은밀하게 탐지하고 훔쳐 (MitM을 허용하고 암호화 된 데이터의 암호를 해독하고 패스워드를 훔치는) 것을 허용한다. 이것은 1.0.1f를 포함한 OpenSSL 버전에 영향을 미칩니다. 최신 매버릭스 컴퓨터 Mac (내가 ports / brew를 사용하여 나의 openssl을 업데이트하지 않고 다른 소프트웨어를 설치했기 때문에) ) :

$ openssl version
OpenSSL 1.0.1f 6 Jan 2014

이것은 OpenSSL의 Mavericks 버전을 사용하지 않음을 보여줍니다.

$ which openssl
/opt/local/bin/openssl

OpenSSL은 오늘 1.0.1g 현재 버전보다이 고정 버전을 어떻게 설치할 수 있을지 궁금합니다.


16
너는 아니 OS X Mavericks와 함께 제공되는 버전을 사용합니다. 0.9.8y입니다.이 버전은 heartbleed 버그가 없습니다 (1.0.1에서 소개되었습니다). 최상의 업데이트 경로는 새 버전을 설치 한 위치와 방법에 따라 다릅니다. which openssl 유익한 정보 일 수 있습니다. 또한, 주요 문제는 openssl 명령이 아니라 openssl 라이브러리 (다른 프로그램에서 사용)입니다. 0.9.x와 1.0.x 버전간에 API 호환이되지 않으므로 원하지 않아. 시스템 제공 openssl 라이브러리를 업데이트하십시오!
Gordon Davisson

@ GordonDavisson - 당신은 완전히 맞습니다. 나는 틀렸다. 나는 분명히 설치했다. MacPort 내 오픈 셀을 업그레이드 한이 컴퓨터의 어느 시점에서. (아마 내가 python2.7을 작동 시키려고했을 때). 아마도이 질문을 삭제해야하지만, 다른 사람들이 SapphireSun의 훌륭한 대답이 유용하다는 사실을 알게되면 같은 실수를하지 않을 것입니다.
dr jimbob

그 명확한 업데이 트와 함께, 나는 그것을 떠날거야. 같은 배에 아마 다른 사람들이있을 것이고, 여기에 이것을 가지고 있으면 그들이해야 할 일이 무엇인지 알게 될 것입니다.
Gordon Davisson

2
OpenSSL을 다음과 같이 설치하면 꾸미다 그것은 아니 바이너리를 / usr / bin에 링크하십시오. 따라서 귀하가 openssl 명령 줄에서.
Max Ried

@MaxRied homebrew가 설치 한 버전을 어떻게 실행합니까? 나는 받아 들여진 응답에있는 지시에 의하여 새로운 openssl를 설치했다, 그리고 openssl version 1.0.1g를 반환하지만, 당신은 말하고있다. openssl 명령이 해당 버전을 사용하고 있지 않습니까?
inorganik

답변:


143

그것이 가치가있는 것을 위해, 나는 단지 집에서 만든 것을 사용했다 ( http://brew.sh/ ) :

brew update  
brew install openssl  
brew link --force openssl 
openssl version -a  

불량 버전 중 하나 (1.0.1a-f)가 나오면 다음과 같이 사용중인 openssl 버전을 파악할 수 있습니다.

which openssl

종종 이것은 / usr / bin에 있습니다. 업데이트 된 버전을 얻으려면 symlink를 / usr / local / bin에 놓아서 다음과 같이 업데이트 된 openssl을 가리 키도록하십시오.

ln -s /usr/local/Cellar/openssl/1.0.1g/bin/openssl /usr/local/bin/openssl

마지막 단계의 대안으로, 일부 사람들은 다음과 같이 openssl을 대체합니다. /usr/bin 에 대한 심볼릭 링크가있는 /usr/local/Cellar/openssl/1.0.1g/bin/openssl (또는 귀하의 버전이 무엇이든) :

mv /usr/bin/openssl /usr/bin/openssl_OLD  
ln -s /usr/local/Cellar/openssl/1.0.1g/bin/openssl /usr/bin/openssl

그러나 이는 OSX의 최신 버전에서 문제를 일으키는 것으로 알려져 있습니다. / usr / local / bin에 새로운 심볼릭 링크를 삽입하는 것이 더 낫습니다. 경로는 / usr / bin에 우선합니다.


7
원본을 삭제하지 말고 이름을 변경하십시오. 홈 브루가 제작 한 버전이 어떤 목적을 위해 작동하지 않는다는 것을 알게되면, (일하는) 외륜없이 크릭을 올라갈 이유가 없습니다.
Terry N

1
충분히 공정하지만, 다른 한편으로는, 나는 그 버전이 작동하도록 부르지 않을 것이다 ...
SapphireSun

1
이 취약점이 있더라도 계산 된 위험을 감수하면서 앱 X (이에 따라 달라질 수 있음)를 잠시 동안 작동시키려는 상황에서는 여전히 유용합니다. 또는, 만약 당신이 선호한다면 ... 깨진 패들이 여전히 물을 밀 수 있다는 의미에서 "일하고"있습니다. :-피
Terry N

8
참고 사항 -이 단계를 수행 한 후에 터미널 창에서 "openssl"을 입력하면 이전 복사본을 가리키는 "no such file or directory"오류 (새 터미널 창에서 작동 함)와 함께 실패했습니다. 내가 작업하고있는 터미널 창을 수정하려면 다음을 수행해야했습니다. hash -r
Mike Hedman

6
심볼릭 링크를 만드는 것보다 낫다. /usr/bin/openssl,에서 링크를 만들 수 있습니다. /usr/local/bin/openssl. 그 전에해야합니다. /usr/bin 너의 $PATH 최신 버전의 OS X에서 "시스템 무결성 보호"로 인한 모든 문제를 무시하십시오.
mrKelley

13

또는 Mac 포트를 사용하는 사람들은 버전 유지에 대해 걱정하지 않아도됩니다.

sudo port upgrade openssl

simples :-)


3
sudo port upgrade outdated 또한 작동합니다.
dr jimbob

1
그건 재미있어, 두 macports 및 양조 내 기계에 openssl을 설치하는 것은 사실이 일이 내게 원인이었습니다. 달리는 sudo port -f uninstall openssl @<old-version> 나를 위해 속임수를했다 :)
yair

@yair가 macports와 homebrew를 가지고 있으면 많은 문제가 발생할 것입니다.
Mark

6

해결을 위해 OCSP 상태 요청 확장 무제한 메모리 증가 (CVE-2016-6304) macOS Sierra를 사용하여 brew 시스템 무결성 보호 사용 :

  1. 사용 권한을 일시적으로 조정 /usr/local brew가 업데이트 할 수 있습니다.

    sudo chgrp -R admin /usr/local
    sudo chmod -R g+w /usr/local
    
  2. 업데이트 된 버전의 OpenSSL을 설치하십시오 (아마도 1.0.2i를 원할 것입니다).

    brew install openssl
    
  3. openssl의 기존 심볼릭 링크를 삭제할 수 있습니다. /usr/local/bin:

    rm /usr/local/bin/openssl
    
  4. 적절한 양조 버전을 다시 연결하십시오.

    sudo ln -s /usr/local/Cellar/openssl/1.0.2i/bin/openssl /usr/local/bin/openssl
    
  5. 에 원래 사용 권한 복원 /usr/local/bin:

    sudo chown root:wheel /usr/local
    

필자의 경우 이전 버전의 OpenSSL은 / usr / bin에 있습니다. bin 권한을 변경하려고 할 때 실패합니다.
Ramis

Sudo를 사용하고 있습니까?
brandonscript

예. 나는 sudo를 사용했다. 나는 OS X의 최신 버전 os에서이 파일의 허가를 변경할 수있는 방법이 없다는 것을 발견했다. 그래서 나는 그것을 달성하지 않습니다.
Ramis

왜 당신을 바꾸지 않는 것일까 요? $PATH 살펴볼 변수 /usr/local/bin?
brandonscript

안녕 모두, 나는 모든 답변, symlinks, 링크, heartbleed 버그, 등 떨어지는 혼란 스러워요 ... 내가 실행할 때 $ openssl version 나는 얻다 OpenSSL 0.9.8zh 14 Jan 2016 하지만 내가 달릴 때 $ brew install openssl 나는 얻다 Warning: openssl 1.0.2l is already installed. 이것은 두 가지 버전이 설치되어 있음을 의미합니까? 지금 정확히 무엇을해야합니까?
Joshua

1

양조 또는 포트를 사용하고 싶지 않고 기본 OpenSSL 0.9.8 설치를 바꾸려는 사람은 복구 모드 (cmd + R)로 재부팅하고 시스템을 다시 시작하여 시스템 무결성 보호를 비활성화 할 수 있습니다

csrutil disable

나중에 openssl을 컴파일합니다.

./config --prefix=/usr
make install

그것은 나를 위해 ElCapitan의 OpenSSL을 성공적으로 대체했으며 소스에서 직접 문제없이 curl과 apache의 httpd 2.4를 컴파일 할 수있었습니다. 일부 사람들은 ElCapitan이 더 이상 Apple에 의해 관리되지 않으며 업데이트가 없을 것이므로 쉽게 중단되지 않을 것이라고 생각할 수도 있습니다. 둘째, 컴파일 할 때마다 컴파일하는 모든 프로그램에 대해 / usr / local의 openssl 폴더를 가리키는 것을 방지 할 수 있습니다.

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