我正在尝试在 RHEL 上编译 python,因为我当前的 python 使用的是旧的 1.0.2k ssl 版本。
\n(test_env) [brad@reason tlscheck]$ python3 --version\nPython 3.9.3\n(test_env) [brad@reason tlscheck]$ python3 -c "import ssl; print(ssl.OPENSSL_VERSION)"\nOpenSSL 1.0.2k-fips 26 Jan 2017\n(test_env) [brad@reason tlscheck]$ openssl version\nOpenSSL 1.1.1l 24 Aug 2021\nRun Code Online (Sandbox Code Playgroud)\n我认为问题是当我编译 3.9.3 时,我没有更新我的 OpenSSL 版本。我已经更新了我的 OpenSSL 并需要将它与 python 一起使用。所以我下载了最新的python 3.10,但在make阶段我收到一个错误,它不会用ssl制作。我的消息如下:
\nFollowing modules built successfully but were removed because they could not be imported:\n_hashlib _ssl \n\n\nCould not build the ssl module!\nPython requires a OpenSSL 1.1.1 or newer\nRun Code Online (Sandbox Code Playgroud)\n这是尝试编译的完整日志:\n https://pastebin.com/36EntpFz
\n当我使用 @tony-yip 提到的配置选项时,我在配置中得到以下内容。 …
我正在尝试在 Python 的 ssl 模块中实现 FIPS_mode 和 FIPS_mode_set 函数,因为默认情况下它们不存在。由于各种使用原因,Python 3.4的补丁已经提交并被拒绝。
使用该补丁作为灵感,我进行了一些修改并在ssl.py 中添加了以下代码:
try:
from _ssl import FIPS_mode, FIPS_mode_set
except ImportError:
pass
Run Code Online (Sandbox Code Playgroud)
_ssl.c 中的以下代码:
#define EXPORT_FIPSMODE_FUNCS
#ifdef EXPORT_FIPSMODE_FUNCS
static PyObject *
_ssl_FIPS_mode_impl(PyObject *module) {
return PyLong_FromLong(FIPS_mode());
}
static PyObject *
_ssl_FIPS_mode_set_impl(PyObject *module, int n) {
if (FIPS_mode_set(n) == 0) {
_setSSLError(ERR_error_string(ERR_get_error(), NULL) , 0, __FILE__, __LINE__);
return NULL;
}
Py_RETURN_NONE;
}
#endif //EXPORT_FIPSMODE_FUNCS
/* List of functions exported by this module. */
static PyMethodDef PySSL_methods[] = …Run Code Online (Sandbox Code Playgroud) 我有一个 Python 应用程序,它与 Python 和 Libcrypto 以及 LibSSL 共享对象一起打包。该应用程序是使用 Openssl Fips Module 2.0 构建的。Python 的请求模块和 urllib3 在后台使用这些共享对象来发出 TLS 请求。
我在构建应用程序的环境中启用了OPENSSL_FIPS标志。现在,如果要检查共享对象是否在我将它们从开发环境中取出并放入另一台机器时启用了 fips 模式,我该怎么做?
如何检查 fips 模式是否启用?如果不是,我如何为这些共享对象启用 fips 模式?
可能有帮助的其他详细信息:
OpenSSL 版本:1.0.2h(从源代码构建)
Fips 模块:2.0.12(从源代码构建)
蟒蛇:3.6
操作系统:Ubuntu 16.04 LTS
如果需要任何其他详细信息,请告诉我。
谢谢!