繁体   English   中英

手动更新 windows x64 上 python 使用的 openssl 版本

[英]Manually update the openssl version used by python on windows x64

我正在为 windows 10 (x64) 运行 python 3.9.1。 I have noticed the openssl dll files shipped with python (libcrypto-1_1.dll & libssl-1_1.dll) are only version 1.1.1.7. 因此,我想用最新版本替换这些。

按照发布中的说明,我已经能够在 windows 10 中成功构建 openssl 1.1.1.9。 我正在使用 Microsoft Visual Studio 2019 + 草莓 perl + nasm。 我使用 vs 2019 的 x64 本机工具命令提示符运行以下配置命令:

perl Configure VC-WIN64A

然后我运行 nmake 命令。 这会产生我需要的两个 dll:libcrypto-1_1-x64.dll 和 libssl-1_1-x64.dll

我重命名了这两个文件以删除名称末尾的“-x64”,然后用它们替换 python 安装中的现有 dll。

当我尝试在 python 中导入 ssl 库时,出现错误:

ImportError: DLL load failed while importing _ssl: The specified module could not be found.

然后,我使用 vs 2019 的 x86 本机工具命令提示符和命令为 x86 构建 openssl 和命令:

perl Configure VC-WIN32

然后我运行了 nmake,它产生了: libcrypto-1_1.dll 和 libssl-1_1.dll

我用这些替换了 python 安装中的 dll。 当我尝试在 python 中导入 ssl 库时,我得到:

ImportError: DLL load failed while importing _ssl: %1 is not a valid Win32 application.

我有理由确定我需要 x64 版本的 dll,因为 (1) 我的 python 安装是 x64 (2) 当我在 python 上使用 Visual Studio dumpbin.exe 工具时,我使用了 dll 来检查他们在其中说“x64”的标题(3) x64 dll 的大小与 python 随附的大小相似,而 x86 版本更小。

对于旧版本的 python,我曾经能够按照上述步骤执行此操作。 该版本随附 openssl 1.1.3(可能是 4),我为 1.1.6(可能是 7)构建了 dll 并替换了它们,python 没有问题。 默认配置脚本是否可能在这些版本上发生了更改,以至于默认 windows x64 配置不再以与 python 一起使用的方式构建 openssl,因此我需要使用自定义设置?

我认为本页第 1.3 节中的信息可能是相关的,但如果是,我不确定如何在 openssl 构建过程中实现该信息。

我设法在一些帮助下解决了这个问题。

CPython 用于为 windows 安装程序构建 OpenSSL 的脚本实际上运行以下命令:

Perl Configure VC-WIN64A-masm no-asm

代替

Perl Configure VC-WIN64A

在我原来的帖子中描述的设置上运行正确的命令后,我能够换出 dll 并且 python 毫无问题地接受了它们。

ssl.OPENSSL_VERSION 现在输出“OpenSSL 1.1.1i 2020 年 12 月 8 日”。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM