我希望得到一些关于为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
对于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"
但是由于/ 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"
这有效,我可以安装nginx,但我不认为正确的openssl编译选项支持fips模式 在nginx configure期间传递。
当我打印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
然而,自定义openssl是:
/usr/local/openssl/bin/openssl version
OpenSSL 1.0.2n-fips 7 Dec 2017
我是否需要传递openssl编译选项以在配置nginx时启用fips支持?
每个“可配置FIPS模式”线程(https://forum.nginx.org/read.php?10,257298,257298)
“目前我们通过在我们需要的系统中的SSL库初始化代码之后添加FIPS_mode_set(1)来自行编译nginx来解决这个问题。”
并且“如何检查OpenSSL中的FIPS 140-2支持?”(How to check FIPS 140-2 support in OpenSSL?):
可以使用FIPS但不使用。因此,应用程序必须通过FIPS_mode_set启用经过验证的加密,并且调用必须成功。 有人可以告诉我在哪里设置FIPS_mode_set标志吗?
我搜索了那个设置,在nginx下找到了一个二进制obj文件: nginx的-1.12.2 / OBJ文件/ nginx的
和openssl源目录下的头文件: OpenSSL的-1.0.2n / .openssl /包含/ OpenSSL的/ crypto.h
非常感谢任何帮助/指导,谢谢。
更新: 当我检查../src/nginx-1.12.2/make命令的输出时,我注意到,它从../src/openssl-1.0.2n中删除了原始的Makefile,以及其中的FIPS相关选项:
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? 再次感谢