繁体   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