시스템에 여러 버전의 OpenSSL을 설치할 수 있습니다. 이 두 가지 테스트는 빌드를 수행하는 경우 루비에 링크 될 버전과 현재 사용중인 루비에서 실제로 링크 된 버전을 알려줍니다.
예를 들어, 아직 Ruby 1.9.3을 사용 중이며 작년에 설치/컴파일했다고 가정 해 봅시다. 그 당시에 설치 한 OpenSSL 버전과 링크되었을 것입니다. 그동안 Heartbleed 문제에 대한 응답으로 OpenSSL 버전 (예 : Homebrew 사용)을 업데이트했습니다.
첫 번째 테스트를 실행 한 경우 OpenSSL 1.0.1g가 다시 제공되며 업그레이드 한 현재 버전이 링크되어 있습니다.
두 번째 테스트를 실행하면 Ruby 복사본이 OpenSSL의 오래된 취약한 복사본에 여전히 연결되어있는 것으로 나타납니다. 시스템에
결과 루비 (2.0.0) :
[~] $ ruby -v -ropenssl -rfiddle -e 'puts Fiddle::Function.new(Fiddle.dlopen(nil ["SSLeay_version"], [Fiddle::TYPE_INT], Fiddle::TYPE_VOIDP).call(0)'`
ruby 2.0.0p247 (2013-06-27 revision 41674) [universal.x86_64-darwin13]
/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/openssl/ssl.rb:10 1: warning: assigned but unused variable - id
OpenSSL 0.9.8y 5 Feb 2013
[~] $ ruby -ropenssl -e 'puts OpenSSL::OPENSSL_VERSION'
OpenSSL 0.9.8y 5 Feb 2013
결과 예를 들어, 나는 내 자신의 시스템 (맥 OSX 10.9)의 출력을 사용합니다함으로써
루비 2.1.1p76에 (rbenv에 의해 관리하지만, RVM 또는 다른 수) : 시스템 루비 볼 수 있듯이
[~] $ ruby -v -ropenssl -rfiddle -e 'puts Fiddle::Function.new(Fiddle.dlopen(nil)["SSLeay_version"], [Fiddle::TYPE_INT], Fiddle::TYPE_VOIDP).call(0)'
ruby 2.1.1p76 (2014-02-24 revision 45161) [x86_64-darwin13.0]
OpenSSL 1.0.1g 7 Apr 2014
[~] $ ruby -ropenssl -e 'puts OpenSSL::OPENSSL_VERSION'
OpenSSL 1.0.1g 7 Apr 2014
를 내가 OS X에 포함 된 OpenSSL
과 연결되어 있으며 아직 Apple에서 패치하지 않았습니다. Ruby 2.1.1 Homebrew
을 사용한 후 다시 설치하여 OpenSSL
설치를 업그레이드했습니다.
[~] $ brew list openssl
/usr/local/Cellar/openssl/1.0.1g/bin/openssl
/usr/local/Cellar/openssl/1.0.1g/bin/c_rehash
/usr/local/Cellar/openssl/1.0.1g/include/openssl/ (75 files)
/usr/local/Cellar/openssl/1.0.1g/lib/libcrypto.1.0.0.dylib
/usr/local/Cellar/openssl/1.0.1g/lib/libssl.1.0.0.dylib
/usr/local/Cellar/openssl/1.0.1g/lib/engines/ (12 files)
/usr/local/Cellar/openssl/1.0.1g/lib/pkgconfig/ (3 files)
/usr/local/Cellar/openssl/1.0.1g/lib/ (4 other files)
/usr/local/Cellar/openssl/1.0.1g/share/man/ (1126 files)
먼저 당신이 Homebrew를 사용하는 경우, 가장 최근에는 OpenSSL이 있는지 확인, 그냥 사용
brew upgrade openssl
.
또한, I 시스템 루비,
rbenv 또는
RVM 같은 루비 버전 관리자를 사용하는 것이 가장 패치를하지 않는 것이 좋습니다
brew cleanup openssl
와의 OpenSSL 이전 버전을 제거해야합니다.SSL을 업데이트 한 후 버전 관리자의 일반 빌드/설치 지침에 따라 사용하는 Ruby 버전을 제거하고 다시 작성하십시오.
OpenSSL을 Ruby 바이너리로 컴파일하거나 런타임시 시스템 라이브러리에 연결할 수 있다고 생각합니까? 그것이 맞다면 특정 루비 바이너리가 OpenSSL을 사용하는 방법을 어떻게 알 수 있습니까? –