簡體   English   中英

如何使用pyOpenSSL的最新openssl庫?

[英]How to use latest openssl library with pyOpenSSL?

我目前正在使用pyOpenssl ,它使用由系統安裝的openssl 1.0.1f 現在我從源碼安裝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庫,如何解決這個問題呢?

您可能需要針對較新版本的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

另請注意,加密項目現在發布了manylinux1輪子 這些是二進制包,包括所有依賴項 - 包括OpenSSL。 因此,如果您在可以使用manylinux1輪的平台上,則不需要單獨的OS安裝OpenSSL或其開發頭。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM