如何将python链接到手动编译的OpenSSL而不是系统的OpenSSL

use*_*654 14 linux python ssl openssl ubuntu

我需要从源代码手动编译 OpenSSL。我使用 Ubuntu 18。Ubuntu 18 附带的 OpenSSL 不支持我需要的特定密码。但是如果我手动编译 OpenSSL,它可以被启用。我找到了这本手册。但是,如何将 python ssl 链接到手动安装的 OpenSSL 而不是操作系统之一?

hoe*_*ing 14

您不能重新链接现有的 Python 安装,需要从源代码构建另一个 Python 发行版。在构建 Python 时,您需要适应CPPFLAGS,LDFLAGSLD_LIBRARY_PATHenv 变量。假设您在/path/to/openssl以下位置安装了自定义 OpenSSL :

$ cd /path/with/Python/sources/unpacked/
$ export LDFLAGS="-L/path/to/openssl/lib/ -L/path/to/openssl/lib64/"
$ export LD_LIBRARY_PATH="/path/to/openssl/lib/:/path/to/openssl/lib64/"
$ export CPPFLAGS="-I/path/to/openssl/include -I/path/to/openssl/include/openssl"
$ ./configure --prefix=/path/to/custom/python/
$ make
$ make install
Run Code Online (Sandbox Code Playgroud)

现在 Python in/path/to/custom/python/将使用自定义 OpenSSL:

$ /path/to/custom/python/bin/python -c "import ssl; print(ssl.OPENSSL_VERSION)"
OpenSSL 1.1.0h  27 Mar 2018
Run Code Online (Sandbox Code Playgroud)

  • @Scott `--with-openssl` 是一个相对较新的标志(在 Python 3.7 中添加),在撰写答案时尚不可用。它也没有向后移植到 Python 3.6 及更早版本;对于较新的版本,`--with-openssl` 绝对是更好的选择。 (4认同)