【问题标题】:How to compile Python 3.6 with custom Fips enabled Openssl?如何使用启用了自定义 Fips 的 Openssl 编译 Python 3.6?
【发布时间】:2018-09-07 01:24:28
【问题描述】:

这是this SO question 的后续问题,我在修补 Python 3.6 时遇到问题。现在我已经设法修补 python 并在 Python 中引入 FIPS_mode() 和 FIPS_mode_set(),我需要使用位于 /usr/local/ssl 中的具有 fips 模式的自定义 openssl 对其进行编译.默认情况下还安装了另一个 OpenSSL(系统)。

详细信息:Ubuntu 16.04 LTS

Python:3.6

OpenSSL:1.0.2h 与 FIPS 2.0.12

我在终端上运行这个命令:

./configure --enable-shared --prefix=/usr/local/python3.6 && make && make install

Python 编译成功,但是当我导入 ssl 模块并打印 openssl 版本时,它显示系统的 Openssl 版本为 1.0.2g。除此之外,不会导出 FIPS_mode() 和 FIPS_mode_set() 方法,因为它们不存在于底层 libcrypto.so 和 libssl.so 中。

经过一番挖掘,我发现了这个 article,它告诉我替换 /lib/x86_64-linux-gnu/ 中的 libcrypto.so 和 libssl.so 共享对象。如果我将这些替换为启用 fips 的 libcrypto.so 和 libssl.so 共享对象,则 python 编译成功并显示正确的版本,甚至 FIPS 函数也被正确导入,但这会导致其他应用程序在系统中出现异常。

有没有一种方法可以编译 Python,使其从 /usr/local/ssl 等其他位置查找 libcrypto.so 和 libssl.so 共享对象?

谢谢!

更新:

我设法找到了解决方案并记录在案here,以防其他人也面临这个问题。

【问题讨论】:

    标签: python python-3.x openssl fips


    【解决方案1】:

    在配置时指定库路径,您的预期路径似乎不是标准路径。

    ./configure --enable-shared --prefix=/usr/local/python3.6 -L=/usr/local/ssl/lib/ -I/usr/local/ssl/include && make && make install
    

    这样配置就会从您的预期路径中选择。

    【讨论】:

    • 嘿,是的,我设法找到了这些标志,它们确实从其他地方解决了问题。不过还是谢谢你的回答!我会将此标记为正确答案。
    • 我用术语回答,它可能对某人有所帮助。无论如何,很高兴你已经解决了。
    • 是的,肯定会的!
    猜你喜欢
    • 1970-01-01
    • 2014-06-26
    • 1970-01-01
    • 2014-04-19
    • 1970-01-01
    • 1970-01-01
    • 2018-08-28
    • 2018-03-09
    • 1970-01-01
    相关资源
    最近更新 更多