ओएस एक्स में ओपनएसएसएल को अपग्रेड कैसे करें?


126

आज जंगल में हार्दिक ओपनएसएसएल कारनामे की घोषणा की गई, जो एक हमलावर को निजी सर्वर कुंजियों का पता लगाने और चोरी करने की अनुमति देता है (उन्हें मितीम करने की अनुमति देता है और आपके एन्क्रिप्ट किए गए डेटा को डिक्रिप्ट करता है और पासवर्ड चोरी करता है)। यह ओवाईएसएफ सहित ओपनएसएसएल संस्करणों को प्रभावित करता है, जो मेरे अप-टू-डेट मावेरिक्स कंप्यूटर मैक पर संस्करण है (क्योंकि मैंने अन्य सॉफ़्टवेयर स्थापित करने के लिए पोर्ट / काढ़ा का उपयोग किया था जो मुझे पता चले बिना मेरे ओपनसेल को अपडेट किया ):

$ openssl version
OpenSSL 1.0.1f 6 Jan 2014

यह प्रदर्शित करता है कि मैं OpenSSL के Mavericks संस्करण का उपयोग नहीं कर रहा हूं:

$ which openssl
/opt/local/bin/openssl

OpenSSL ने आज 1.0.1g में एक फिक्स जारी किया और मुझे आश्चर्य है कि मैं अपने वर्तमान संस्करण पर स्थापित इस निश्चित संस्करण को कैसे प्राप्त कर सकता हूं?


16
आप ओएस एक्स मावेरिक्स के साथ आए संस्करण का उपयोग नहीं कर रहे हैं - यह 0.9.8y है, जिसमें हार्दिक बग नहीं है (यह 1.0.1 में पेश किया गया था)। आपका सर्वश्रेष्ठ अपडेट पथ इस बात पर निर्भर करेगा कि आपने नया संस्करण कहाँ और कैसे स्थापित किया है। which opensslजानकारीपूर्ण हो सकता है। इसके अलावा, प्रमुख समस्या ओपनसेल कमांड नहीं है, यह ओपनसेल लाइब्रेरी (जो अन्य कार्यक्रमों द्वारा उपयोग की जाती हैं) - वे संस्करण 0.9.x और 1.0.x के बीच संगत नहीं हैं, इसलिए आप अपडेट नहीं करना चाहते हैं सिस्टम-सप्लाई ओपनसेल लाइब्रेरी!
गॉर्डन डेविसन

@GordonDavisson - आप पूरी तरह से सही हैं। मुझे गलत समझा गया था। मैंने स्पष्ट MacPortरूप से इस मशीन पर कुछ बिंदु पर स्थापित किया था जिसने मेरे ओपनसेल को अपग्रेड किया था। (शायद जब मैं python2.7 काम करने की कोशिश कर रहा था)। संभवतः इस प्रश्न को हटा देना चाहिए, लेकिन यदि अन्य लोग नीलमणि के महान उत्तर को उपयोगी पाते हैं तो वही गलती नहीं करेगा।
ड्रिम्ब जिम्बोब

उस स्पष्ट अद्यतन के साथ, मैं इसे छोड़ दूंगा। एक ही नाव में संभवतः अन्य लोग हैं, और यहां होने से उन्हें यह अंदाजा होना चाहिए कि क्या करने की जरूरत है।
गॉर्डन डेविसन

2
यदि आप OpenSSL को काढ़ा के साथ स्थापित करते हैं तो यह बायनेरिज़ को / usr / bin से लिंक नहीं करेगा । इसलिए इसे चलाया नहीं जाएगा यदि आप कमांड लाइन पर एक ओपनस्लैक जारी करते हैं ।
मैक्स राइड

@MaxRied आप उस संस्करण को कैसे चलाते हैं जो होमब्रे ने स्थापित किया है? मैंने स्वीकार किए गए उत्तर में निर्देशों के द्वारा नए ओप्सनल स्थापित किए हैं, और openssl version1.0.1 जी रिटर्न करता है, लेकिन आप कह रहे हैं कि opensslकमांड उस संस्करण का उपयोग नहीं कर रहे हैं?
अकार्बनिक

जवाबों:


147

इसके लायक क्या है, मैंने अभी होमब्रेव ( http://brew.sh/ ) का उपयोग किया है :

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

यदि खराब संस्करणों में से एक (1.0.1a-f) आता है, तो आप यह पता लगा सकते हैं कि आपके द्वारा उपयोग किए जा रहे ओपनशेल के कौन से संस्करण इस प्रकार हैं:

which openssl

अक्सर यह / usr / bin से होता है। यह सुनिश्चित करने के लिए कि आपको अपडेट किया गया संस्करण मिला है, अपडेट किए गए ओपनसेल को इंगित करने के लिए / यूएसआर / लोकल / बिन में एक सिमलिंक छोड़ें, जैसे:

ln -s /usr/local/Cellar/openssl/1.0.1g/bin/openssl /usr/local/bin/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 / लोकल / बिन में एक नया सिमलिंक डालें, जो आपके रास्ते पर / usr / bin से पहले की राह पर चलना चाहिए।


7
मूल को नष्ट न करें - बस इसका नाम बदलें। यदि आप पाते हैं कि Homebrew- निर्मित संस्करण किसी उद्देश्य के लिए काम नहीं करता है, तो कोई भी कार्य (पैडल) किए बिना खुद को एक क्रीक में रखने का कोई कारण नहीं है।
टेरी एन

1
काफी उचित है, लेकिन दूसरी ओर, मैं उस संस्करण को काम नहीं करूंगा ...
नीलमणि

1
यहां तक ​​कि भेद्यता के साथ, यह आपके लिए किसी भी स्थिति में अभी भी उपयोगी है जिसमें आप एप्लिकेशन एक्स को प्राप्त करने के लिए गणना किए गए जोखिम को लेने के लिए तैयार हैं (जो उस पर निर्भर करता है) संक्षेप में काम करने के लिए। या, यदि आप पसंद करते हैं ... "काम" इस अर्थ में कि एक टूटी हुई चप्पू अभी भी पानी को धक्का दे सकती है। :
टेरी एन

8
बस एक नोट - इन चरणों को करने के बाद, टर्मिनल विंडो में "ओप्स्सेल" टाइप करने पर पुरानी कॉपी की ओर इशारा करते हुए "ऐसी कोई फ़ाइल या निर्देशिका" त्रुटि नहीं हुई (लेकिन यह एक नई टर्मिनल विंडो में काम करती है)। मैं जिस टर्मिनल विंडो में काम कर रहा था, उसे ठीक करने के लिए, मुझे एक करने की ज़रूरत थी:hash -r
माइक हैडमैन

6
पर एक सिमलिंक बनाने से बेहतर /usr/bin/openssl, कोई भी लिंक बना सकता है /usr/local/bin/openssl। ओएस एक्स के नए संस्करणों में "सिस्टम इंटीग्रिटी प्रोटेक्शन" से उत्पन्न होने वाली किसी भी समस्या को आप पहले /usr/binसे ही देख लें $PATHऔर इसे दूर कर
लें।

14

या उन लोगों के लिए जो मैक पोर्ट का उपयोग कर रहे हैं, और संस्करण को रखने के बारे में चिंतित नहीं हैं

sudo port upgrade openssl

प्रतीक :-)


3
sudo port upgrade outdatedभी काम करता है।
डॉ। जिम्बोब

1
यह मजेदार है, दोनों macports और काढ़ा दोनों मेरी मशीन पर खुलता है स्थापित वास्तव में मेरे लिए यह होने का कारण था। चल रहा है sudo port -f uninstall openssl @<old-version>मेरे लिए चाल :)
yair

@ दोनों macports और homebrew होने के कारण कई समस्याओं का कारण होगा
user151019

6

हल करने के लिए OCSP स्थिति अनुरोध विस्तार असीम स्मृति विकास (CVE-2016-6304) MacOS सिएरा पर का उपयोग कर brewके साथ सिस्टम वफ़ादारी संरक्षण सक्षम:

  1. अस्थायी रूप से समायोजित /usr/localकर सकते हैं तो काढ़ा पर अनुमति अद्यतन कर सकते हैं:

    sudo chgrp -R admin /usr/local
    sudo chmod -R g+w /usr/local
    
  2. OpenSSL का अद्यतन संस्करण स्थापित करें (आप शायद 1.0.2i चाहते हैं):

    brew install openssl
    
  3. आप किसी मौजूदा सिम्कलिन को Opensl से हटाना चाहते / चाह सकते हैं /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
    

मेरे मामले में OpneSSL का पुराना संस्करण / usr / bin में स्थित है। बिन अनुमति बदलने की कोशिश करने पर यह विफल हो रहा है।
रामिस

क्या आप सूडो का उपयोग कर रहे हैं?
ब्रैंडनस्क्रिप्ट 14

हाँ। मैंने सुडो का इस्तेमाल किया। मुझे टिप्पणी मिली कि नवीनतम संस्करण में ओएस ओएस एक्स यहां इस फाइल की अनुमति को बदलने का कोई तरीका नहीं है। इसलिए मैं इसे प्राप्त करना बंद कर देता हूं।
रामिस

सिर्फ $PATHदेखने के लिए अपने चर को क्यों नहीं बदला /usr/local/bin?
ब्रैंडनस्क्रिप्ट

हाय सब, मैं सभी जवाबों से उलझन में हूं, सिंपलिंक छोड़ रहा हूं, लिंक कर रहा हूं, हार्दिक बग, आदि ... जब मैं दौड़ता $ openssl versionहूं तो मुझे मिलता है OpenSSL 0.9.8zh 14 Jan 2016लेकिन जब मैं दौड़ता $ brew install opensslहूं तो मुझे मिलता है Warning: openssl 1.0.2l is already installed। क्या इसका मतलब है कि मेरे पास दो संस्करण हैं? अब मुझे क्या करना चाहिए?
जोशुआ

1

जो कोई भी काढ़ा या बंदरगाहों का उपयोग नहीं करना चाहता है और बस डिफ़ॉल्ट ओपनएसएसएल 0.9.8 को बदलना चाहता है, हमेशा रिकवरी मोड में रिबूट करके और सिस्टम जारी करके सिस्टम अखंडता सुरक्षा को अक्षम कर सकता है।

csrutil disable

और बाद में संकलन के साथ खुलता है

./config --prefix=/usr
make install

इसने मेरे लिए ElCapitan में OpenSSL को सफलतापूर्वक बदल दिया और मैं सीधे स्रोतों से किसी भी मुद्दे के बिना कर्ल और अपाचे के httpd 2.4 को संकलित करने में सक्षम था। विधि के पीछे तर्क कुछ कठोर हो सकता है कि ElCapitan अब Apple द्वारा बनाए नहीं रखा गया है और कोई भी अपडेट आगामी नहीं है इसलिए यह संभव नहीं होगा। दूसरे, यह आपको उस प्रोग्राम के लिए फोल्डर / फोल्डर / लोकल में खुलने से बचाता है जिसे आप संकलन को अधिक मजबूत बनाते हैं।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.