【问题标题】:How to use latest openssl library with pyOpenSSL?如何在 pyOpenSSL 中使用最新的 openssl 库?
【发布时间】:2015-02-14 11:25:18
【问题描述】:

我目前正在使用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 库,如何解决这个问题?

【问题讨论】:

    标签: python openssl pyopenssl


    【解决方案1】:

    您可能需要针对较新版本的 OpenSSL 重新编译 cryptography

    确保您也安装了 OpenSSL 的开发标头,然后重新构建(也许通过重新安装最容易)cryptography

    升级 OpenSSL 的方式因平台而异。在 Debian 派生系统上,这可能类似于apt-get install libssl-dev(这将为您提供库和开发头文件)。在 RedHat 派生系统上,它可能更像 yum install libssl-devel

    您可能需要调查virtualenv 的使用情况,以使您的新构建版本与已安装的版本分开。

    一旦你有了 virtualenv,你就可以使用 pip 安装 cryptography

    path/to/virtualenv/bin/pip install cryptography
    

    或者您可以升级现有安装:

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

    还要注意密码学项目now ships manylinux1 wheels。这些是包含所有依赖项的二进制包 - 包括 OpenSSL。因此,如果您在可以使用 ma​​nylinux1 轮的平台上,则不需要单独安装 OpenSSL 或其开发头文件的操作系统。

    【讨论】:

    • 您能否指定一些示例命令来重新编译密码学或重新安装它?
    • 添加了更多细节 - 但也请注意答案中新的 manylinux1 部分。时代变了。
    猜你喜欢
    • 2018-11-02
    • 1970-01-01
    • 1970-01-01
    • 2020-06-02
    • 1970-01-01
    • 2016-10-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多