2014-06-20 4 views
8

मैं एक पुराने NAS बॉक्स मेरे पास है पर एक ड्रॉपबॉक्स अपलोड स्क्रिप्ट है, हाल ही में मैं निम्न त्रुटिअजगर को संदर्भित वर्ष एसएसएल संस्करण

SSL certificate error: [Errno 1] _ssl.c:504: error:0D0890A1:asn1 encoding routines:ASN1_verify:unknown message digest algorithm

मुझे लगता है कि इस openssl पर पुराना हो चुका जा रहा है की वजह से है हो रही किया गया है बॉक्स

तो मैं openssl डाउनलोड करता हूं, इसे स्रोत से बनाया गया है और इसे स्थापित किया है, अब जब मैं निम्नलिखित चलाता हूं तो यह सही ढंग से अपडेट किया जाता है।

openssl version 
OpenSSL 1.0.1h 5 Jun 2014 

लेकिन ऐसा लगता है कि पाइथन अभी भी पुराने संस्करण का संदर्भ दे रहा है, मैं इसे कैसे अपडेट करूं?

python -c "import ssl; print ssl.OPENSSL_VERSION" 
OpenSSL 0.9.7m 23 Feb 2007 
+1

देना चाहिए ओह, 0.9.7 ... आपको 0.9.8 पर माइग्रेट करने की आवश्यकता है। 1.0.1 * बाइनरी संगत नहीं है। – jww

+0

आपको नए ओपनएसएसएल के खिलाफ पायथन को दोबारा जोड़ना होगा। –

+0

@ पॉल - क्या पायथन लिंक स्थिर रूप से करता है? मैंने सोचा कि यह ओपनएसएसएल को गतिशील लिंकिंग का उपयोग करता है। 'मॉड्यूल/Setup.dist' से:' -L $ (SSL)/lib -lssl -lcrypto'। यदि इसकी गतिशीलता है, तो उसे केवल 'LD_PRELOAD' सेट करने की आवश्यकता है, 0.9.8 साझा ऑब्जेक्ट को इंगित करें और फिर पायथन लॉन्च करें। – jww

उत्तर

5

कृपया http://rkulla.blogspot.kr/2014/03/the-path-to-homebrew.html

का उल्लेख मैं आपके जैसे ही मुद्दा मिल गया, और इसलिए मैं कई जवाब खोज की है, लेकिन यह मेरी मदद नहीं करते थे;

1) Updating openssl in python 2.7

2) Update OpenSSL on OS X with Homebrew

3) https://apple.stackexchange.com/questions/126830/how-to-upgrade-openssl-in-os-x

मैक पर homebrew द्वारा 1.0.1j को openssl अपग्रेड करने के बाद, लेकिन प्रणाली अजगर अभी भी पुराने संस्करण 0.9.8 करने के लिए भेजा। यह openssl को संदर्भित पायथन बाहर निकला। तो मैंने ब्रूड ओपनस्ल के साथ नया पायथन स्थापित किया है और मैक पर इस मुद्दे को समाप्त किया है, अभी तक उबंटू नहीं।

  1. $ काढ़ा अद्यतन
  2. $ काढ़ा openssl स्थापित:

    मैक ओएस एक्स संस्करण 10.10 और सिस्टम अजगर संस्करण 2.7.6 पर, मेरे प्रक्रिया इस प्रकार है। फिर आप openssl संस्करण 1.0.1j देख सकते हैं।

  3. $ ब्रू लिंक openssl --force
  4. $ brew इंस्टॉल करें python --with-brewed-openssl। आपको ब्रूड ओपनएसएल के साथ नया पायथन स्थापित करना होगा। फिर, आप /usr/local/Cellar/python/2.7.8_2/bin/python देख सकते हैं।
  5. $ sudo ln -s /usr/local/Cellar/python/2.7.8_2/bin/python/usr/local/bin/python। बेशक,/usr/local/* का स्वामित्व $ USER के स्वामित्व में होना चाहिए, रूट नहीं, जिसे रयान ने बताया है, लेकिन मैंने 'सुडो' का उपयोग किया था। और, इस निर्देश से पहले, मेरे पास/usr/local/bin/python नहीं था। इस निर्देश के बाद, आप अजगर संस्करण 2.7.8 2.7.6 का उपयोग कर सकते हैं।

अंत में, आप belows के रूप में देख सकते हैं;

$ अजगर --version

अजगर 2.7.8

$ अजगर -c "आयात ssl; प्रिंट ssl.OPENSSL_VERSION"

OpenSSL 1.0.1j 15 अक्टू 2014

तक

अब, मैं उबंटू 12.04 पर इस पर काम कर रहा हूं। अगर मेरे पास उबंटू 12.04 का समाधान है, तो मैं अपना जवाब अपडेट कर दूंगा। मुझे उम्मीद है कि यह प्रक्रिया आपकी मदद करेगी।

1

यह मेरे लिए काम किया।

python -c "import ssl; print ssl.OPENSSL_VERSION" 
brew link openssl --force 
brew install python --with-brewed-openssl 
mv /usr/local/bin/python /usr/local/bin/python_old 
sudo ln -s /usr/local/Cellar/python/2.7.11/bin/python /usr/local/bin/python 
1

मैंने उपर्युक्त सभी कदम उठाए और अभी भी वही समस्या हो रही थी।

brew unlink openssl --force --overwrite python && brew link openssl --force --overwrite python 

आशा है कि यह मदद करता है किसी को भी :)

4

कई दिनों के बाद इस काम के समझे: मैं सब पिछले उत्तरों के सूचीबद्ध होने के बाद निम्न आदेश जोड़ने मेरी समस्या हल। मैक ओएस एक्स एल कैप्टन या अधिक

> sudo rm -rf /Library/Frameworks/Python.framework/Versions/2.7 
> sudo rm -rf "/Applications/Python 2.7" 
> cd /usr/local/bin/ 
> ls -l /usr/local/bin | grep '../Library/Frameworks/Python.framework/Versions/2.7' | awk '{print $9}' | tr -d @ | xargs rm 
> brew uninstall python 
> brew uninstall openssl 
> brew link --force openssl 

अब ब्रू का उपयोग करके अजगर और openssl स्थापित करें।

> brew install openssl 
> brew install python --with-brewed-openssl 

अपने मैक पर ~/.bash_profile में पथ के लिए निम्न जोड़े

> vi ~/.bash_profile 
> export PATH=/usr/local/opt/openssl/bin:/usr/local/opt/python/libexec/bin:$PATH 

पुनः आरंभ टर्मिनल

> python --version (verify if it is picking up the right version) 
> openssl version -a (verify if it is picking up the right version) 
> python -c "import ssl; print ssl.OPENSSL_VERSION" 

आप नवीनतम संस्करण खुली एसएसएल संस्करण

+0

आपने अभी मेरी रात बचाई है! घंटे खो गए सुपर माफ करना आप दिन खो गए लेकिन इसे साझा करने के लिए आपको बहुत बहुत धन्यवाद !! –

संबंधित मुद्दे