【发布时间】: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 2.7.8 下开发。里面的 _ssl.pyd 是用 OpenSSL 1.0.1h 构建的。
但是,我也有 pyOpenSSL 0.10(我知道,旧版本)来满足所需的依赖。 pyOpenSSL 包括 libeay32.dll 和 ssleay32.dll 版本 0.9.8o。
这是怎么回事?是因为 pyOpenSSL 提供了 OpenSSL 库的直接接口吗?
【问题讨论】:
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 文件。
希望对你有帮助。
【讨论】: