首页 文章

如何使用自定义Fips启用Openssl编译Python 3.6?

提问于
浏览
2

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

Details: Ubuntu 16.04 LTS

Python: 3.6

OpenSSL: 1.0.2h with FIPS 2.0.12

我在终端上运行此命令:

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

Python被成功编译,但是当我导入ssl模块并打印openssl版本时,它向我展示了System的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,它从其他位置查找libcrypto.so和libssl.so共享对象,例如/ usr / local / ssl?

谢谢!

Update:

I managed to find a solution for this and have documented it here in case someone else faces this problem as well.

1 回答

  • 1

    在配置时指定库路径,似乎您的预期路径不作为标准路径可见 .

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

    因此,配置从您的预期路径中选择 .

相关问题