web-dev-qa-db-ja.com

PythonおよびOS XでのOpenSSLバージョン参照の問題

OpenSSLバージョンの問題を解決しようとしています。

MacにはOpenSSLの3つの異なるバージョンがあるようです。

  1. Python 2.7.11のバージョンは0.9.7mです。

    python -c "import ssl; print ssl.OPENSSL_VERSION"
    OpenSSL 0.9.7m 23 Feb 2007
    
  2. ターミナルで:

    openssl version
    OpenSSL 1.0.1h 5 Jun 2014
    
  3. 最近コンパイル/インストール:

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

最近、OS Xを10.11.5にアップグレードしました。その過程で、以前に動作していたpythonスクリプトの問題が発生しました。以下はエラーメッセージのスニペットです。

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.

(*-はい、これはエラーメッセージの表示方法です。文の途中で切り取られます。)

この問題を解決するための推奨事項は大歓迎です。私が望むのは、Python OpenSSLバージョン1.0.2hと古いバージョン0.9.7mを参照することです。

私はPythonとOpenSSLを何度もインストールしてみました。

16
rdediana

新しいバージョンのopensslを使用するpythonのバージョンをインストールできます。

最初に、新しいバージョンのオープンSSLを作成することができます

brew update
brew install openssl
brew link --force openssl

新しいバージョンが表示されるはずです

openssl version -a

次に、新しいバージョンのopensslを使用するpythonの異なるバージョンをインストールできます。 pyenv を使用すると、次のようになります。

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

pythonのopensslのbrewインストールされたバージョンを使用したバージョンのインストールに関する詳細は、こちらを参照してください: https://github.com/yyuu/pyenv/wiki/Common-build -問題

6
Jared

これを回避策として使用します。

export CRYPTOGRAPHY_ALLOW_OPENSSL_098=1

これは、hazmat暗号化ライブラリの最近のチェックのようです。ソースコードは次の場所にあります。

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

CRYPTOGRAPHY_ALLOW_OPENSSL_098環境変数は、リスクを冒す意思がある場合、エラーを非推奨の警告にダウングレードします。私もこの1日でOS Xでこれに遭遇したので、最近何かが変わりました。

16
braddock