5

私は現在pyOpenssl1.0.1fを使用しており、システムによってインストールされるopenssl を使用しています。ここで、ソースからopenssl をインストール1.0.1jし、新しいバージョンのライブラリ パスを に設定LD_LIBRARY_PATHします。この時点で、py ファイルを実行すると、エラーが発生します。

File "sslcert.py", line 5, in <module>
from OpenSSL import SSL, _util, crypto
...

File "/usr/local/lib/python2.7/dist-packages/cffi-0.8.6-py2.7-linux-x86_64.egg/cffi/vengine_cpy.py", line 149, in load_library
    raise ffiplatform.VerificationError(error)
cffi.ffiplatform.VerificationError:  
importing '/usr/local/lib/python2.7/dist-packages/cryptography-0.6.1-py2.7-linux-x86_64.egg/cryptography/_Cryptography_cffi_36a40ff0x2bad1bae.so':    
/usr/local/lib/python2.7/dist-packages/cryptography-0.6.1-py2.7-linux-x86_64.egg/cryptography/_Cryptography_cffi_36a40ff0x2bad1bae.so:  
symbol EC_GFp_nistp521_method, version OPENSSL_1.0.1 not defined in file libcrypto.so.1.0.0 with link time reference

pyOpenssl に最新の openssl ライブラリを使用しているのですが、どうすればこの問題を解決できますか?

4

1 に答える 1

5

おそらく、新しいバージョンの OpenSSL に対して暗号化を再コンパイルする必要があります。

OpenSSL 用の開発ヘッダーもインストールしてから、暗号化を再構築します (おそらく再インストールするだけで最も簡単です) 。

OpenSSL をアップグレードする方法は、プラットフォームによって異なります。Debian 派生システムでは、これはおそらく次のようapt-get install libssl-devになります (これにより、ライブラリと開発ヘッダーが取得されます)。RedHat 由来のシステムでは、より似ているかもしれませんyum install libssl-devel

新しくビルドされたバージョンを既にインストールされているバージョンから分離しておくために、 virtualenvの使用を調査することをお勧めします。

virtualenv を取得したら、pip を使用して暗号化をインストールできます。

path/to/virtualenv/bin/pip install cryptography

または、既存のインストールをアップグレードできます。

path/to/virtualenv/bin/pip install --upgrade cryptography

また、暗号化プロジェクトは現在、多数のlinux1ホイールを出荷していることにも注意してください。これらは、OpenSSL を含むすべての依存関係を含むバイナリ パッケージです。したがって、manylinux1 wheel を使用できるプラットフォームを使用している場合は、OpenSSL またはその開発ヘッダーを個別に OS インストールする必要はありません。

于 2015-01-22T11:27:50.530 に答える