2014-06-20 14 views
8

Ho uno script di upload Dropbox su una vecchia scatola di NAS che ho, di recente sto ottenendo il seguente errorePython riferimento vecchia versione SSL

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

credo che questo sia dovuto al openssl essere fuori data la casella

Così ho scaricato openssl, l'ho compilato dal sorgente e l'ho installato, ora quando eseguo quanto segue sembra essere aggiornato correttamente.

openssl version 
OpenSSL 1.0.1h 5 Jun 2014 

Ma sembrerebbe che Python faccia ancora riferimento a una vecchia versione, come aggiornarla?

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

Oh mio, 0.9.7 ... Hai bisogno di migrare a 0.9.8. 1.0.1 * non è * compatibile binario. – jww

+0

Avrai bisogno di ricompilare Python contro il più recente OpenSSL. –

+0

@Paul: il collegamento Python è statico? Pensavo che usasse il collegamento dinamico a OpenSSL. Da 'Modules/Setup.dist':' -L $ (SSL)/lib -lssl -lcrypto'. Se è dinamico, ha solo bisogno di impostare 'LD_PRELOAD', puntare all'oggetto condiviso 0.9.8 e quindi avviare Python. – jww

risposta

5

Si prega di fare riferimento al http://rkulla.blogspot.kr/2014/03/the-path-to-homebrew.html

Ho avuto lo stesso problema come la tua, e così ho cercato più risposte, ma non mi ha aiutato;

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

Dopo l'aggiornamento openssl per 1.0.1j da homebrew su MAC, ma il sistema pitone ancora cui versione 0.9.8. Si è scoperto il pitone riferito a openssl. Così ho installato il nuovo python con Brews Open e ho completato questo problema su Mac, non ancora su Ubuntu.

In Mac OS X versione 10.10 e pitone sistema versione 2.7.6, la mia procedura è la seguente:

  1. $ birra aggiornamento
  2. $ birra install openssl. Quindi puoi vedere openssl versione 1.0.1j.
  3. $ brew link openssl --force
  4. $ brew installa python --with-brewed-openssl. Devi installare nuovo python con openssl fermentato. Quindi, puoi vedere /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. Naturalmente,/usr/local/* dovrebbe essere di $ USER, non root, che viene detto da Ryan, ma ho usato 'sudo'. E, prima di questa istruzione, non avevo/usr/local/bin/python. Dopo questa istruzione, puoi usare python versione 2.7.8 non 2.7.6.

Infine, è possibile vedere come belows;

$ python --version

Python 2.7.8

$ python -c "import ssl; stampa ssl.OPENSSL_VERSION"

OpenSSL 1.0.1j 15 Ottobre 2014

Fino ora, ci sto lavorando su Ubuntu 12.04. Se avrò una soluzione per Ubuntu 12.04, aggiornerò la mia risposta. Spero che questa procedura ti aiuti.

1

Questo ha funzionato per me.

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

Ho fatto tutti i passaggi sopra e continuavo a ottenere lo stesso problema. Ho risolto il mio problema aggiungendo il seguente comando dopo tutti quelli elencati sulle risposte precedenti:

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

Speranza che aiuta chiunque :)

4

ottenuto questo lavoro dopo diversi giorni. MAC OS X El Captian o maggiore

> 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 

Ora installare python e openssl nuovamente utilizzando brew.

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

Aggiungere il seguente al PATH in ~/.bash_profile sul vostro Mac

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

riavvio del terminale

> 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" 

dovrebbe dare l'ultima versione di SSL APERTO versione

+0

Hai appena salvato la mia notte! ore perse super scusa hai perso giorni ma grazie mille per aver condiviso questo !! –

Problemi correlati