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
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
2018 sur MacOS
J'ai essayé avec les autres réponses sans succès:
--with-brewed-openssl
donne Warning: python: this formula has no --with-brewed-openssl option so it will be ignored!
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.
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é.
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.
$ brew update
$ brew install openssl.
Ensuite, vous pouvez voir la version 1.0.1j de openssl. $ brew link openssl --force
$ 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. $ 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.
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!
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
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 :)
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