web-dev-qa-db-fra.com

Python et problème de référence de version OpenSSL sur OS X

J'essaie de résoudre un problème de version OpenSSL que je rencontre.

Il semble que j'ai trois versions différentes d'OpenSSL sur mon Mac.

  1. Python 2.7.11 a la version 0.9.7m:

    python -c "import ssl; print ssl.OPENSSL_VERSION"
    OpenSSL 0.9.7m 23 Feb 2007
    
  2. Au terminal:

    openssl version
    OpenSSL 1.0.1h 5 Jun 2014
    
  3. Récemment compilé/installé:

    /usr/local/ssl/bin/openssl
    OpenSSL> version
    OpenSSL 1.0.2h  3 May 2016
    OpenSSL>
    

J'ai récemment mis à niveau mon OS X vers 10.11.5. Dans le processus, a causé un problème pour les scripts python python.) Ci-dessous. Voici l'extrait de message d'erreur:

Message d'erreur Python:

 You are linking against OpenSSL 0.9.8, which is no longer *
 RuntimeError: You are linking against OpenSSL 0.9.8, which is no longer support by the OpenSSL project. You need to upgrade to a newer version of OpenSSL.

(* - oui, voici à quoi ressemble le message d'erreur. Il est coupé au milieu de la phrase.)

Toute recommandation sur la résolution de ce problème serait grandement appréciée. Ce que j'aimerais, c'est d'avoir Python référence la version OpenSSL 1.0.2h par rapport à la version obsolète 0.9.7m.

J'ai essayé d'installer Python et OpenSSL plusieurs fois en utilisant divers articles/blogs à titre indicatif sans aucune chance.

16
rdediana

Vous pouvez installer une version de python qui utilise une version plus récente de openssl.

Vous pouvez d'abord installer une nouvelle version de SSL ouvert

brew update
brew install openssl
brew link --force openssl

Vous devriez voir une version plus récente avec

openssl version -a

Ensuite, vous pouvez installer une version différente de python qui utilise cette nouvelle version de openssl. Si vous utilisez pyenv , ce serait:

CFLAGS="-I$(brew --prefix openssl)/include" \
LDFLAGS="-L$(brew --prefix openssl)/lib" \
pyenv install -v 3.4.3

Vous pouvez trouver plus d'informations sur l'installation d'une version de python avec une version brew installée de openssl ici: https://github.com/yyuu/pyenv/wiki/Common-build -problems

6
Jared

Utilisez ceci comme solution de contournement:

export CRYPTOGRAPHY_ALLOW_OPENSSL_098=1

Cela semble être une vérification récente de la bibliothèque de cryptographie Hazmat. Vous pouvez voir le code source sur:

https://github.com/pyca/cryptography/blob/master/src/cryptography/hazmat/bindings/openssl/binding.py#L221

Le CRYPTOGRAPHY_ALLOW_OPENSSL_098 la variable d'environnement rétrograde l'erreur en avertissement de dépréciation, si vous êtes prêt à prendre le risque. J'ai également rencontré cela sur OS X le jour dernier, donc quelque chose a changé récemment.

16
braddock