Mise à jour d'openssl en python 2.7

je me demande si quelqu'un peut m'expliquer comment openssl fonctionne en python2.7. Je ne suis pas sûr que python ait son propre openssl ou l'ait récupéré sur une machine locale/env?

laissez-moi vous expliquer: (si je fais ça en Python)

>>> import ssl
>>> ssl.OPENSSL_VERSION
'OpenSSL 0.9.8x 10 May 2012'

(en terminal)

$ openssl version
OpenSSL 0.9.8x 10 May 2012
$ which openssl 
/usr/bin/openssl

maintenant, j'ai mis à jour openssl (téléchargé .)

$ cd openssl-1.0.1c
$ ./Configure darwin64-x86_64-cc --prefix=/usr --openssldir=/opt/local/etc/openssl shared
$ make
$ sudo make install

cela a créé un directeur séparé (comme spécifié), donc je l'ai copié sur l'ancien chemin

cp -f /usr/local/ssl/bin/openssl /usr/bin/openssl

maintenant dans la version openssl du terminal mis à jour mais pas depuis python!

$ openssl version
OpenSSL 1.0.1c 10 May 2012

j'ai remarqué ça .dylib pointe toujours vers l'ancienne version, comment puis-je changer cela?

$ ls -l /usr/lib/*ssl*
-rwxr-xr-x  1 root  wheel  411680 Jul 17  2012 /usr/lib/libssl.0.9.7.dylib
-rwxr-xr-x  1 root  wheel  602800 May 24 03:43 /usr/lib/libssl.0.9.8.dylib
-rwxr-xr-x  1 root  wheel  390908 Sep  9 17:37 /usr/lib/libssl.1.0.0.dylib
lrwxr-xr-x  1 root  wheel      18 Jul 17  2012 /usr/lib/libssl.dylib -> libssl.0.9.8.dylib

mise à Jour: j'ai changé le lien a encore une version ancienne chez python.

$ ls -l /usr/lib/*ssl*
-rwxr-xr-x  1 root  wheel  411680 Jul 17  2012 /usr/lib/libssl.0.9.7.dylib
-rwxr-xr-x  1 root  wheel  602800 May 24 03:43 /usr/lib/libssl.0.9.8.dylib
-rwxr-xr-x  1 root  wheel  390908 Sep  9 17:37 /usr/lib/libssl.1.0.0.dylib
lrwxr-xr-x  1 root  wheel      18 Sep 11 15:47 /usr/lib/libssl.dylib -> libssl.1.0.0.dylib
24
demandé sur Peter 2013-09-12 02:34:53
la source

6 ответов

prière de se référer à http://rkulla.blogspot.kr/2014/03/the-path-to-homebrew.html

après la mise à niveau d'openssl en 1.0.1 j par homebrew sur MAC, mais le système python fait encore référence à l'ancienne version 0.9.8. Il s'est avéré que le python fait référence à openssl. J'ai donc installé new python avec brewed openssl et j'ai terminé ce numéro sur Mac, pas encore Ubuntu.

sur Mac OS X version 10.10 et system python version 2.7.6, ma procédure est aussi suit:

$ brew update

$ brew install openssl

alors vous pouvez voir openssl version 1.0.1 J.

$ brew link openssl --force 

$ brew install python --with-brewed-openssl    

Vous devez installer python avec brassée openssl. Ensuite, vous pouvez voir /usr/local/Cave/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/* doit être possédé par $UTILISATEUR, pas de racine, qui est dit par Ryan, mais j'ai utilisé de 'sudo'. Et avant cette instruction, Je n'avais pas /usr/local/bin/python. Après cette instruction, vous pouvez utiliser la version 2.7.8 de python 2.7.6.

Enfin, vous pouvez voir comme belows;

$ python --version  
Python 2.7.8

$ python -c "import ssl; print ssl.OPENSSL_VERSION"
OpenSSL 1.0.1j 15 Oct 2014

Jusqu'à maintenant, je travaille sur Ubuntu 12.04. Si j'ai une solution pour Ubuntu 12.04, alors je vais mettre à jour ma réponse. J'espère que cette procédure vous aider.

33
répondu user2434741 2015-10-20 11:04:51
la source

Le SSL désuet est un problème courant sur plusieurs plateformes:

Voici l'approche générale...

0. Installez OpenSSL

  • Option I: Installer les paquets du système de side-by-side OpenSSL 1.x paquets libs (-dev or-devel).

    # FreeBSD
    
    pkg install openssl
    OPENSSL_ROOT=/usr/local
    
    
    # Mac (brew)
    
    brew install openssl # DO NOT DO ANY WEIRD SYMLINK HACKS, ITS KEG-ONLY FOR A REASON!
    OPENSSL_ROOT="$(brew --prefix openssl)"
    
  • Option II: Installer OpenSSL depuis la source vers un répertoire temporaire

    OPENSSL_ROOT="$HOME/.build/openssl-1.0.1e"
    
    curl http://www.openssl.org/source/openssl-1.0.1e.tar.gz | tar zxvf -
    cd openssl-1.0.1e
    mkdir -p "$OPENSSL_ROOT"
    ./config no-hw --prefix="$OPENSSL_ROOT" --openssldir=...
    # osx (instead of previous line): ./Configure darwin64-x86_64-cc no-hw --prefix="$OPENSSL_ROOT" --openssldir=...
    make install
    cd ..
    rm -rf openssl-1.0.1e
    

1. Construire Python à partir de la source

  • Option A: Utiliser pyenv:

    export CONFIGURE_OPTS="CPPFLAGS=-I"$OPENSSL_ROOT"/include LDFLAGS=-L"$OPENSSL_ROOT"/lib [your other options here]"
    pyenv install 2.7.6
    
  • Option B: Installer Python à partir de la source

    ./configure CPPFLAGS="-I$OPENSSL_ROOT/include" LDFLAGS="-L$OPENSSL_ROOT/lib" [your other options here]`
    make
    # ...
    # if compiled openssl was used, it can be safely deleted because python's module ssl links openssl statically.
    

exemple: FreeBSD 9.2 (sauter make install pour des fins de démonstration)

pkg install openssl curl gmake gdbm sqlite3 readline ncurses
OPENSSL_ROOT=/usr/local
curl http://www.python.org/ftp/python/2.7.6/Python-2.7.6.tar.xz | tar jxvf -
cd Python-2.7.6
./configure CPPFLAGS="-I$OPENSSL_ROOT/include" LDFLAGS="-L$OPENSSL_ROOT/lib" [your other options here]
make
./python -c 'import ssl; print(ssl.OPENSSL_VERSION)' # osx: ./python.exe ...
# prints: OpenSSL 1.0.1e 11 Feb 2013

par la suite, les bibliothèques openssl temporaires ne sont plus nécessaires avec le modèle ssl avec openssl statiquement dans l'exécutable python (vérifier en utilisant otool ou readelf).

16
répondu Barry 2013-12-23 14:42:01
la source

cela pourrait être dû à une version périmée de Python.

après avoir couru python -c "import ssl; print ssl.OPENSSL_VERSION" sur Python 2.7.1, j'ai vu que j'avais cette version obsolète: OpenSSL 0.9.7l 28 Sep 2006.

il semble que ma version de Python dépendait d'une version dépréciée D'OpenSSL, comme indiqué par ce forum:

pour la prochaine version de python 2.7.9 (prévu pour début décembre), j'ai l'intention d'avoir les Pythons dans le python.org les installateurs OS X utilisent leurs propres versions D'OpenSSL et donc de no plus longtemps dépendent du système maintenant déprécié OpenSSL.

j'ai mis à jour en python 2.7.9 et le problème a été immédiatement corrigé. Maintenant, après l'exécution de python -c "import ssl; print ssl.OPENSSL_VERSION", j'obtiens OpenSSL 0.9.8za 5 Jun 2014.

4
répondu aralar 2014-12-27 04:10:32
la source

ce qui suit a fonctionné pour moi. J'étais déjà capable de mettre à jour OpenSSL de 0.9.8 zh à une version 1.0.2 o, mais python n'a jamais accédé à la nouvelle version avant de trouver cette suggestion d'utiliser pyenv pour réinstaller python (avec 2.7.10, la version que je voulais).

brew update
brew install pyenv

echo 'eval "$(pyenv init -)"' >> .bashrc
source .bashrc

pyenv install 2.7.10
pyenv global 2.7.10

et ensuite pour vérifier...

python --version
Python 2.7.10

python -c 'import ssl; print ssl.OPENSSL_VERSION'
OpenSSL 1.0.2o  27 Mar 2018

j'ai dû réinstaller les paquets python bien sûr.

https://github.com/ianunruh/hvac/issues/75

1
répondu bkinnell 2018-07-15 00:25:50
la source

je pense que python a reconnu que c'est un problème: https://www.python.org/downloads/release/python-2715/

Remarque:

Attention utilisateurs de macOS: à partir de 2.7.15, tous python.org installateurs macOS envoyer avec une copie intégrée D'OpenSSL. En outre, il est une nouvelle variante d'installateur supplémentaire pour macOS 10.9+ qui comprend un version de Tcl/Tk 8.6. Voir l'installateur README pour plus information.

simplement installer 2.7.15 corrigé mes problèmes OpenSSL.

1
répondu KeelyD 2018-09-17 19:22:25
la source

résolu aucun piratage, aucun de ces éléments n'a fonctionné pour moi. J'ai fini par adopter une approche plus simple et simple....

  1. installer python 2.7.13 à partir du site officiel, il s'installe comme python par défaut, mettant automatiquement à niveau l'ancien système python (Oui! ).

https://www.python.org/downloads/mac-osx/

  1. mise à jour d'openssl après l'installation de python. Mise à jour pour le système python ( Oui! ).

sudo pip install --upgrade pyOpenSSL

  1. vous devrez ré-installer tous vos modules python (parce que vous avez remplacé python ), je recommande fortement d'utiliser pip. Après quelques minutes d'installation de pip, mon Python OSX par défaut a été mis à jour, openssl a été mis à jour, et tous mes modules ( y compris django) ont fonctionné.
-4
répondu Paul Kenjora 2017-09-15 14:34:07
la source

Autres questions sur