BBD*_*BDG 6 openssl nginx fips
我希望获得一些有关为 nginx 启用 openssl fips 模式的指导。到目前为止,我按照 openssl 指南在 openssl 上启用 fips 模式。
该部分效果很好:
# /usr/local/openssl/bin/openssl md5 /usr/local/openssl/bin/openssl
Error setting digest md5
139805371958952:error:060A80A3:digital envelope
routines:FIPS_DIGESTINIT:disabled for fips:fips_md.c:180:
# cat /proc/sys/crypto/fips_enabled
1
Run Code Online (Sandbox Code Playgroud)
对于 nginx,我首先尝试使用此自定义 openssl 构建 nginx:
/nginx-1.12.2/configure --with-http_ssl_module --with-openssl=/usr/local/openssl --with-ld-opt="-L/usr/local/openssl/lib"
Run Code Online (Sandbox Code Playgroud)
然而,这失败了,因为 /usr/local/openssl 是自定义 openssl 的“安装”位置,而不是源树。
所以我更改了 --with-openssl 选项以使用 openssl 源树:
/nginx-1.12.2/configure --with-http_ssl_module --with-openssl=/usr/local/src/openssl-1.0.2n/ --with-ld-opt="-L/usr/local/openssl/lib"
Run Code Online (Sandbox Code Playgroud)
这有效,我可以安装 nginx,但我不认为在 nginx 配置期间传递了支持 fips 模式的正确 openssl 编译选项。
当我打印 nginx 信息时:
nginx -V:
nginx version: nginx/1.12.2
built by gcc 4.4.7 20120313 (Red Hat 4.4.7-18) (GCC)
built with OpenSSL 1.0.2n 7 Dec 2017
Run Code Online (Sandbox Code Playgroud)
然而自定义的 openssl 是:
/usr/local/openssl/bin/openssl version
OpenSSL 1.0.2n-fips 7 Dec 2017
Run Code Online (Sandbox Code Playgroud)
在配置 nginx 时,我是否需要传递 openssl 编译选项来启用 fips 支持?
每个“可配置的 FIPS 模式”线程 ( https://forum.nginx.org/read.php?10,257298,257298 )
“目前,我们通过在需要的系统中的 SSL 库初始化代码后添加 FIPS_mode_set(1) 后自行编译 nginx 来解决此问题。”
并根据“如何检查 OpenSSL 中的 FIPS 140-2 支持?”(如何检查 OpenSSL 中的 FIPS 140-2 支持?):
FIPS 可能可用但未使用。因此,应用程序必须通过 FIPS_mode_set 启用经过验证的加密,并且调用必须成功。有人可以让我知道在哪里设置 FIPS_mode_set 标志吗?
我搜索了该设置并在 nginx 下找到了一个二进制 obj 文件:nginx-1.12.2/objs/nginx
以及 openssl 源目录下的头文件: openssl-1.0.2n/.openssl/include/openssl/crypto.h
非常感谢任何帮助/指导,谢谢。
更新:当我检查 ../src/nginx-1.12.2/make 命令的输出时,我注意到,它从 ../src/openssl-1.0.2n 中删除了原始 Makefile,以及其中的 FIPS 相关选项:
Run Code Online (Sandbox Code Playgroud)cd /usr/local/src/openssl-1.0.2n/ \ && if [ -f Makefile ]; then make clean; fi \ && ./config --prefix=/usr/local/src/openssl-1.0.2n/.openssl no-shared \ && make \ && make install_sw LIBDIR=lib make[2]: Entering directory `/usr/local/src/openssl-1.0.2n'
关于如何将正确的 openssl make 选项传递给 nginx 的任何想法吗?或者将 nginx 配置为使用已安装的 fips 功能的自定义 openssl?再次感谢