OSSS'de OpenSSL nasıl yükseltilir?


120

Bugün Heartbleed OpenSSL istismarı, saldırganın özel sunucu anahtarlarını gizlice tespit edip çalmalarına izin veren (MitM ile şifreli verilerinizin şifresini çalmalarını ve şifrelerini çalmalarını sağlar), vahşi ortamda duyuruldu. Bu, benim sürümüm olan 1.0.1f içeren OpenSSL sürümlerini etkiler. güncel Mavericks bilgisayarı Mac (çünkü benden farkında olmadan beynimi güncelleyen başka bir yazılımı yüklemek için port / brew kullandım. ):

$ openssl version
OpenSSL 1.0.1f 6 Jan 2014

Bu, OpenSSL'in Mavericks versiyonunu kullanmadığımı gösteriyor:

$ which openssl
/opt/local/bin/openssl

OpenSSL bugün bir düzeltme yayınladı 1.0.1g ve bu sabit sürümü şu anki sürümüm üzerine nasıl yükleyebilirim?


16
Sen değil OS X Mavericks ile gelen sürümü kullanarak - bu 0.9.8y, bu da heartbleed hataya sahip değil (1.0.1'de tanıtıldı) En iyi güncelleme yolunuz, yeni sürümü nereye ve nasıl yüklediğinize bağlı olacaktır. which openssl bilgilendirici olabilir. Ayrıca, asıl sorun openssl komutu değil, openssl kitaplıkları (diğer programlar tarafından kullanılıyor) - bunlar sürüm 0.9.x ve 1.0.x sürümleri arasında API uyumlu değil. istemiyorum sistem tarafından sağlanan openssl kütüphanelerini güncellemek için!
Gordon Davisson

@GordonDavisson - Tamamen haklısın. Yanılmışım. Görünüşe göre kurmuştum MacPort openssl'ımı yükselten bu makinede bir noktada. (Muhtemelen python2.7 almaya çalıştığım zaman). Muhtemelen bu soruyu silmeli, ancak başkalarının SapphireSun'un büyük cevabını yararlı bulması durumunda aynı hatayı yapması durumunda olmaz)
dr jimbob

Bu açıklayıcı güncelleme ile, ben onu terkederdim. Muhtemelen aynı teknede başka insanlar da var ve bunun burada olması onlara ne yapılması gerektiği konusunda bir fikir vermeli.
Gordon Davisson

2
OpenSSL’i birlikte yüklüyorsanız, demlemek olacak değil ikili dosyaları / usr / bin dizinine bağlayın. Bu nedenle bir sorun çıkarırsanız çalıştırılmaz openssl komut satırında.
Max Ried

@MaxRied Homebrew'un kurulu olduğu sürümü nasıl çalıştırıyorsunuz? Kabul edilen cevabın talimatlarıyla yeni openssl kurdum ve openssl version 1.0.1g döndürür, ancak openssl komutları bu sürümü kullanmıyor musunuz?
inorganik

Yanıtlar:


143

Buna değer, sadece homebrew kullandım. http://brew.sh/ ):

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

Kötü sürümlerden biri gelirse (1.0.1a-f), hangi openssl sürümünü kullandığınızı anlayabilirsiniz:

which openssl

Genellikle bu / usr / bin'dendir. Güncellenmiş sürümü aldığınızdan emin olmak için, güncellenmiş openssl 'ye işaret etmek için / usr / local / bin dizinine bir link ekleyin:

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

Bu son adıma bir alternatif olarak, bazı insanlar /usr/bin bir link ile /usr/local/Cellar/openssl/1.0.1g/bin/openssl (veya sürümünüz ne olursa olsun):

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

Ancak bunun OSX'in daha yeni sürümlerinde sorunlara yol açtığı bilinmektedir. / Usr / local / bin dizinine yeni bir link eklemek, / usr / bin yolundan öncelikli olmalıdır.


7
Orijinali silmeyin - sadece yeniden adlandırın. Homebrew tarafından oluşturulmuş sürümün bir amaç için çalışmadığını fark ederseniz, kendinizi (çalışan) bir raket olmadan bir dereye sokmak için hiçbir neden yoktur.
Terry N

1
Yeterince adil, ama öte yandan, bu versiyonun çalışmasını istemem ...
SapphireSun

1
Güvenlik açığı olsa bile, X uygulamasının (buna bağlı olarak) kısaca çalışmasını sağlamak için hesaplanan riski almak istediğiniz her durumda sizin için hala yararlıdır. Veya, eğer istersen ... kırık bir kürek hala su itebilir anlamında "çalışmayı". :-p
Terry N

8
Sadece bir not - bu adımları uyguladıktan sonra, terminal penceresine "openssl" yazmak eski kopyaya işaret eden "böyle bir dosya veya dizin yok" hatasıyla başarısız oldu (ancak yeni bir terminal penceresinde işe yaradı). Çalıştığım terminal penceresini düzeltmek için aşağıdakileri yapmam gerekiyordu: hash -r
Mike Hedman

6
Adresinde bir link oluşturmaktan daha iyidir /usr/bin/openssl, biri bağlantıyı oluşturabilir /usr/local/bin/openssl. Bundan önce gelmeli /usr/bin senin üzerinde $PATH ve OS X'in yeni sürümlerinde "Sistem Bütünlüğü Koruması" ndan kaynaklanan sorunları atlayın.
mrKelley

13

Veya mac portları kullananlar ve sürümlerini korumaktan endişe duymayanlar için

sudo port upgrade openssl

basitler :-)


3
sudo port upgrade outdated ayrıca çalışır.
dr jimbob

1
Bu çok komik, hem macport'lara hem de her ikisine de yüklemeye sahip olmak makinemdeki openssl kodunu alıyordu. Koşu sudo port -f uninstall openssl @<old-version> benim için hile yaptım :)
yair

Hem macport'lara hem de homebrew'a sahip olma
Mark

6

Çözmek için OCSP Durum İsteği uzantısı sınırsız bellek büyümesi (CVE-2016-6304) macOS'ta Sierra kullanıyor brew ile Sistem Bütünlüğü Koruması etkin:

  1. Geçici olarak izinleri ayarlama /usr/local Böylece demlemek güncelleyebilirsiniz:

    sudo chgrp -R admin /usr/local
    sudo chmod -R g+w /usr/local
    
  2. OpenSSL'nin güncellenmiş sürümünü yükleyin (muhtemelen 1.0.2i'yi istiyorsunuz):

    brew install openssl
    
  3. Openssl'ye varolan bir bağlantıyı silmek isteyebilir / silebilirsiniz /usr/local/bin:

    rm /usr/local/bin/openssl
    
  4. Uygun demleme versiyonunu tekrar bağlayın:

    sudo ln -s /usr/local/Cellar/openssl/1.0.2i/bin/openssl /usr/local/bin/openssl
    
  5. Tarihinde orijinal izinleri geri yükle /usr/local/bin:

    sudo chown root:wheel /usr/local
    

Benim durumumda OpenSSL'nin eski sürümü / usr / bin konumunda bulunuyor. Depo iznini değiştirmeye çalışırken başarısız oluyor.
Ramis

Sudo kullanıyor musunuz?
brandonscript

Evet. Ben sudo kullandım. OS X'in en son sürümünde, bu dosyanın iznini değiştirmenin bir yolu olmadığını yorumladım. Bu yüzden başarmayı bıraktım.
Ramis

Neden sadece değişmiyor $PATH bakmak için değişken /usr/local/bin?
brandonscript

Herkese merhaba, bütün cevapları karıştırdım, sembolik bağı bırakarak, bağlayarak, kalpli böcek, vb ... Koşarken $ openssl version alırım OpenSSL 0.9.8zh 14 Jan 2016 ama kaçtığımda $ brew install openssl alırım Warning: openssl 1.0.2l is already installed. Bu iki versiyonun yüklü olduğu anlamına mı geliyor? Şimdi tam olarak ne yapmalıyım?
Joshua

1

Demlemek veya bağlantı noktaları kullanmak istemeyen ve yalnızca varsayılan OpenSSL 0.9.8 kurulumunu değiştirmek isteyenler, kurtarma moduna (cmd + R) yeniden başlatarak ve vererek sistem bütünlüğü korumasını devre dışı bırakabilir

csrutil disable

ve daha sonra openssl ile derleme

./config --prefix=/usr
make install

Benim için ElCapitan'daki OpenSSL'i başarıyla değiştirdi ve curl ve apache'nin httpd 2.4'ünü doğrudan kaynaklardan hiçbir sorun çıkarmadan derleyebildim. Metodun arkasındaki nedenlerin sert olduğunu düşünmesinin nedeni, ElCapitan'ın artık Apple tarafından sağlanmadığı ve hiçbir güncellemenin gelmeyeceği ve bu nedenle de muhtemelen bozulmayacağı yönünde. İkincisi, derlemeyi daha sağlam hale getiren her program için / usr / local içindeki openssl klasörünü göstermekten sizi kurtarır.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.