web-dev-qa-db-ja.com

Python古いSSLバージョンを参照する

Dropboxのアップロードスクリプトを古いNASボックスに持っていますが、最近次のエラーが発生します

SSL証明書エラー:[Errno 1] _ssl.c:504:エラー:0D0890A1:asn1エンコードルーチン:ASN1_verify:不明なメッセージダイジェストアルゴリズム

これはopensslがボックス上で古くなっているためだと思います

そこで、opensslをダウンロードし、ソースからビルドしてインストールしました。以下を実行すると、正しく更新されているようです。

openssl version
OpenSSL 1.0.1h 5 Jun 2014

しかし、それは表示されますPythonはまだ古いバージョンを参照していますが、これをどのように更新しますか?

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

数日後にこれが機能しました。 MAC OS X El Captian以上

 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

pythonをインストールし、brewを使用してopensslを再度インストールします。

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

MACの〜/ .bash_profileのPATHに以下を追加します

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

端末を再起動します

 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"

(注:Python3をインストールした場合は、インラインコンパイラステップでprint構文を更新する必要があります)

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

最新バージョンのOPEN SSLバージョンが表示されます

21
Arun Ganesan

2018はMacOS
私は他の答えで試してみましたが成功しませんでした:

  • --with-brewed-opensslオプションはWarning: python: this formula has no --with-brewed-openssl option so it will be ignored!
  • およびコマンドbrew link openssl --forceWarning: Refusing to link: openssl

私はそれを使ってもらいました

brew install openssl
brew install python@2

その後

openssl version

そして

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

私に同じOpenSSLバージョンを与えました。

7
Guglie

http://rkulla.blogspot.kr/2014/03/the-path-to-homebrew.html を参照してください。

あなたと同じ問題が発生したため、いくつかの回答を検索しましたが、役に立ちませんでした。

  1. opensslをpython 2.7 で更新する
  2. Homebrewを使用してOS XでOpenSSLを更新
  3. https://Apple.stackexchange.com/questions/126830/how-to-upgrade-openssl-in-os-x

MACのhomebrewによってopensslを1.0.1jにアップグレードした後、システムpythonは古いバージョン0.9.8をまだ参照しています。pythonがopensslを参照。だから私は新しいpythonを醸造されたopensslでインストールし、この問題をまだUbuntuではなくMacで完了しました。

Mac OS Xバージョン10.10およびシステムpythonバージョン2.7.6の場合、私の手順は次のとおりです。

  1. $ brew update
  2. $ brew install openssl.次に、opensslバージョン1.0.1jが表示されます。
  3. $ brew link openssl --force
  4. $ brew install python --with-brewed-openssl.新しいpythonをインストールする必要があります。その後、/ 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.もちろん、/ usr/local/*は、Ryanから指示されたrootではなく、$ USERが所有する必要がありますが、私は「Sudo」を使用しました。そして、この指示の前には、/ usr/local/bin/pythonがありませんでした。この指示の後、pythonバージョン2.7.8ではなく2.7.6を使用できます。

最後に、あなたはbelowsとして見ることができます。

$ python --version

Python 2.7.8

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

OpenSSL 1.0.1j 2014年10月15日

今までは、Ubuntu 12.04で作業しています。 Ubuntu 12.04のソリューションがある場合は、回答を更新します。この手順がお役に立てば幸いです。

5
user2434741

システム(アップグレードされた)SSLを使用するには、PATHを変更する必要があることがわかりました。

$ 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

これでうまくいきました。

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

OSX Sierra、Python 3.7、同じ問題、再インストール/更新Python&OpenSSLはこの特定の問題を解決しませんでした(とにかく便利でした) )。

基本的な解決策:_ PATHをクリーンアップします in .bash_profile!私は手動でしなければならなかったremove古くなったdirsの束(/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

次に実行します:

brew link --overwrite --dry-run python

すべて問題なければ、--dry-runなしで繰り返します。

brew link --overwrite python

結果:

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
2
Benny K

上記のすべての手順を実行しましたが、それでも同じ問題が発生していました。以前の回答にリストされているすべてのコマンドの後に次のコマンドを追加して問題を解決しました:

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

それが誰にも役立つことを願っています:)

1
greenFedoraHat

OSX 10.14.5 Mojaveを実行していて、pyenvを使用しています。

私が抱えていた問題は、Homebrewがopensslをアップグレードしたときに、Pythonが古いバージョンを探していたということでした。python -c "import ssl; print(ssl.OPENSSL_VERSION)"がエラーを出しました:

ライブラリがロードされていません:/usr/local/opt/openssl/lib/libssl.1.0.0.dylib

多くのことを試した後、解決策は次のようになった:

pyenv uninstall 3.6.8
pyenv install 3.6.8

ビルドログのマジックラインは次のとおりです。

python-build:homebrewの[email protected]を使用

0
Derek Hill

MacOS 10.15.3でHomebrew 2.2.4およびpython3を使用するには、 この答え を変更する必要がありました。

brew unlink openssl python3 && brew link openssl python3
echo 'export PATH="/usr/local/opt/[email protected]/bin:$PATH"' >> ~/.bash_profile
0
mxbn