【问题标题】:Why does pyOpenSSL have a separate copy of the OpenSSL DLLs?为什么 pyOpenSSL 有一个单独的 OpenSSL DLL 副本?
【发布时间】:2014-10-27 13:53:53
【问题描述】:

我正在 Python 2.7.8 下开发。里面的 _ssl.pyd 是用 OpenSSL 1.0.1h 构建的。

但是,我也有 pyOpenSSL 0.10(我知道,旧版本)来满足所需的依赖。 pyOpenSSL 包括 libeay32.dll 和 ssleay32.dll 版本 0.9.8o。

这是怎么回事?是因为 pyOpenSSL 提供了 OpenSSL 库的直接接口吗?

【问题讨论】:

    标签: python openssl pyopenssl


    【解决方案1】:

    Python 可以使用 OpenSSL 支持编译,这是 TLS/SSL (https://docs.python.org/3.4/library/ssl.html) 或 urllib 等内部库所必需的。 内部 Python ssl 库通过套接字实现 SSL 协议。例如,urllib 将其用于 https 协议。

    pyOpenSSL 是您可以在 Pypi 上找到的另一个 Python 库。它的创建是为了提供对 OpenSSL 库的全面支持,因为内部 Python SSL 模块仍未涵盖所有功能。

    因此,它不是 Python 内部库的一部分。它在 openssl 库上实现了一个高级接口。您必须在 Python 范围之外编译/安装它。 因此,它可能使用 Python 使用的 openssl lib 以外的其他版本进行编译。

    此外,在 Windows 上,您将使用二进制包安装它,因此提供了已编译的 OpenSSL dll;因此它们可能与系统或 Python 上安装的不同。

    是的 pyOpenSLL 直接连接到 OpenSSL 库。快速查看 0.14 版源文件时,测试脚本还执行 openssl 命令行工具,但不执行 lib 的 Python 文件。

    希望对你有帮助。

    【讨论】:

    • 好的 - 所以如果我的 Python 应用程序中有一个 Web 服务器运行着 CherryPy 之类的东西,并且它正在执行 HTTPS,它使用的是哪个 OpenSSL 库? Python 链接的那个,还是 pyOpenSSL 正在使用的那个?
    • 它使用它正在使用的 Python TLS 库使用的任何一个。根据cherrypy.readthedocs.org/en/latest/deploy.html#ssl-supportCherryPy 可以使用 either 内置 TLS 库,也可以使用 pyOpenSSL - 取决于您的配置。
    猜你喜欢
    • 2015-08-17
    • 1970-01-01
    • 1970-01-01
    • 2018-03-30
    • 2016-12-08
    • 2021-06-14
    • 1970-01-01
    • 2022-07-26
    • 2021-06-28
    相关资源
    最近更新 更多