我正在为windows10 (x64)运行python3.9.1。我注意到python附带的openssl dll文件(libcrypto-1_1.dll & libssl-1_1.dll)只有1.1.1.7版。因此,我想用最新的版本替换它们。
我已经能够按照发行版中的说明在windows10中成功构建openssl 1.1.1.9。我使用的是Microsoft visual studio 2019 + strawberry 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版本的dlls,因为(1)我的python安装是x64 (2)当我在python附带的dlls上使用visual studio dumpbin.exe工具来检查它们中标示为" x64“的头文件时(3) x64 dlls的大小与python附带的dlls相似,而x86版本更小。
对于较旧版本的python,我曾经可以按照上面的步骤执行此操作。该版本随openssl 1.1.3 (可能是4)一起发布,我为1.1.6 (可能是7)构建了dll,并替换了它们,python没有任何问题。有没有可能默认配置脚本在这些版本中发生了变化,使得默认的windows x64配置不再以与python一起工作的方式构建openssl,因此我需要使用自定义设置?
我认为this page 1.3部分的信息可能是相关的,但如果是的话,我不确定如何在openssl构建过程中实现它。
发布于 2021-01-31 22:01:13
在一些帮助下,我设法解决了这个问题。
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日’。
https://stackoverflow.com/questions/65956119
复制相似问题