web-dev-qa-db-fra.com

Python référençant l'ancienne version SSL

J'ai un script de téléchargement Dropbox sur une vieille boîte nasale que j'ai, récemment, le message d'erreur suivant s'affiche:

Erreur de certificat SSL: [Errno 1] _ssl.c: 504: erreur: 0D0890A1: routines de codage asn1: ASN1_verify: algorithme de résumé du message inconnu.

Je pense que cela est dû au fait que openssl est obsolète sur la boîte.

Je télécharge donc openssl, le construit à partir des sources et je l’installe. À présent, lorsqu’il est lancé, il semble être mis à jour correctement.

openssl version
OpenSSL 1.0.1h 5 Jun 2014

Mais il semblerait que Python fasse toujours référence à une ancienne version, comment pourrais-je le mettre à jour?

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

Je travaille après plusieurs jours. MAC OS X El Captian ou supérieur

 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

Maintenant, installez à nouveau python et openssl en utilisant brew. 

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

Ajoutez ce qui suit au PATH dans ~/.bash_profile sur votre MAC

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

redémarrer le terminal 

 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"

(note: si vous avez installé Python3, vous devrez mettre à jour la syntaxe print à l'étape du compilateur intégré)

python -c "import ssl; print(ssl.OPENSSL_VERSION)"

devrait vous donner la dernière version OPEN SSL version

18
Arun Ganesan

2018 sur MacOS
J'ai essayé avec les autres réponses sans succès: 

  • L'option --with-brewed-openssl donne Warning: python: this formula has no --with-brewed-openssl option so it will be ignored! 
  • et la commande brew link openssl --force donne Warning: Refusing to link: openssl

Je l'ai eu avec

brew install openssl
brew install python@2

Ensuite 

openssl version

et

python -c "import ssl; print ssl.OPENSSL_VERSION"

m'a donné la même version OpenSSL.

5
Guglie

Veuillez vous référer à http://rkulla.blogspot.kr/2014/03/the-path-to-homebrew.html .

J'ai le même problème que vous et j'ai donc cherché plusieurs réponses, mais cela ne m'a pas aidé.

  1. Mise à jour de openssl en python 2.7
  2. Mettez à jour OpenSSL sur OS X avec Homebrew
  3. https://Apple.stackexchange.com/questions/126830/how-to-upgrade-openssl-in-os-x

Après la mise à niveau de openssl vers 1.0.1j par homebrew sur MAC, le système python faisait toujours référence à l’ancienne version 0.9.8. Il s'est avéré que le python a fait référence à openssl. J'ai donc installé un nouveau python avec OpenSL brassé et terminé ce problème sur Mac, pas encore Ubuntu.

Sous Mac OS X version 10.10 et python système version 2.7.6, ma procédure est la suivante.

  1. $ brew update 
  2. $ brew install openssl. Ensuite, vous pouvez voir la version 1.0.1j de openssl. 
  3. $ brew link openssl --force 
  4. $ brew install python --with-brewed-openssl. Vous devez installer un nouveau python avec openssl brassé. Ensuite, vous pouvez voir /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. Bien sûr,/usr/local/* devrait appartenir à $ USER, pas à root, comme le dit Ryan, mais j’ai utilisé 'Sudo'. Et, avant cette instruction, je n'avais pas/usr/local/bin/python. Après cette instruction, vous pouvez utiliser python version 2.7.8 et non 2.7.6.

Enfin, vous pouvez voir comme des belows;

$ python --version

Python 2.7.8

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

OpenSSL 1.0.1j 15 octobre 2014

Jusqu'à présent, je travaille sur Ubuntu 12.04. Si j'ai une solution pour Ubuntu 12.04, je mettrai à jour ma réponse. J'espère que cette procédure vous aidera.

5
user2434741

J'ai trouvé que je devais changer le PATH pour utiliser le système SSL (mis à niveau):

$ pip install --editable .

Obtaining file:///Users/jhlynch/Projects/flaskr
Collecting flask (from flaskr==0.0.0)
  Could not fetch URL https://pypi.python.org/simple/flask/: There was a problem confirming the ssl certificate: [SSL: TLSV1_ALERT_PROTOCOL_VERSION] tlsv1 alert protocol version (_ssl.c:661) - skipping
  Could not find a version that satisfies the requirement flask (from flaskr==0.0.0) (from versions: )
No matching distribution found for flask (from flaskr==0.0.0)

$ python -c "import ssl; print(ssl.OPENSSL_VERSION)"

OpenSSL 0.9.8zh 14 Jan 2016                      <<< note older version


$ echo $PATH
/Library/Frameworks/Python.framework/Versions/2.7/bin:/Library/Frameworks/Python.framework/Versions/3.6/bin:/Users/jhlynch/.nix-profile/bin:/Users/jhlynch/.nix-profile/sbin:/Users/jhlynch/.nix-profile/lib/kde4/libexec:/nix/var/nix/profiles/default/bin:/nix/var/nix/profiles/default/sbin:/nix/var/nix/profiles/default/lib/kde4/libexec:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin

$ PATH="/usr/local/bin:/usr/local/sbin:${PATH}"

$ export PATH

$ python -c "import ssl; print(ssl.OPENSSL_VERSION)"

OpenSSL 1.0.2o  27 Mar 2018                       <<< note newer version

$ pip install --editable .

Obtaining file:///Users/jhlynch/Projects/flaskr
Collecting flask (from flaskr==0.0.0)
  Downloading https://files.pythonhosted.org/packages/77/32/e3597cb19ffffe724ad4bf0beca4153419918e7fa4ba6a34b04ee4da3371/Flask-0.12.2-py2.py3-none-any.whl (83kB)
...                <<< works this time!
3
JHLynch

Cela a fonctionné pour moi.

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
2
Shafi Ulla

J'ai fait toutes les étapes ci-dessus et je continuais à avoir le même problème. J'ai résolu mon problème en ajoutant la commande suivante après toutes celles énumérées dans les réponses précédentes:

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

J'espère que ça aide n'importe qui :)

1
greenFedoraHat

OSX Sierra, Python 3.7, même problème, réinstaller/mettre à jour Python & OpenSSL n’a pas aidé à résoudre ce problème particulier (mais était utile de toute façon, je suppose).

Solution de base: nettoyez votre $ PATH in .bash_profile! Je devais manuellement supprimer tas de répertoires obsolètes (/Library/Frameworks/Python.framework/Versions/3.4/bin:/Library/Frameworks/Python.framework/Versions/3.6/bin:/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages:/Library/Frameworks/Python.framework/Versions/2.7/bin)

Puis lancez:

brew link --overwrite --dry-run python

Si tout se passe bien, recommencez sans --dry-run:

brew link --overwrite python

Résultat:

Linking /usr/local/Cellar/python/3.7.0... 25 symlinks created
~
$  python3 -c "import ssl; print(ssl.OPENSSL_VERSION)"
OpenSSL 1.0.2p  14 Aug 2018
1
Benny K