由于自建nginx服务在安全审查时需要进行SSL协议进行加固
nginxSSL协议加固建议如下
Nginx SSL协议采用TLSv1.2:
1、打开`conf/nginx.conf`配置文件(or include file in the main configuration file);
2、配置
“`
server {
…
ssl_protocols TLSv1.2;
…
}
“`
备注:配置此项请确认nginx支持OpenSSL,运行`nginxv -V` 如果返回中包含`built with OpenSSL`则表示支持OpenSSL。如果不支持,请重新编译nginx
在加固时,发现这个nginx并没有开启SSL模块
./nginx -V
nginx version: nginx/1.20.1
built by gcc 4.8.5 20150623 (Red Hat 4.8.5-39) (GCC)
configure arguments: --prefix=/home/nginx
故需要重新编译nginx
在nginx的解压包下运行
./configure –prefix=/home/nginx –with-http_ssl_module –with-openssl=/usr/local/ssl
make
–prefix:nginx的安装位置
–with-http_ssl_module:开启nginx的ssl模块
–with-openssl:openssl的的位置正常情况下不需要指定,openssl手动手动安装过的话有可能找不到需要指定。
但是在make后爆出了这样的错误
/bin/sh: line 2: ./config: No such file or directory
make[1]: *** [/usr/local/ssl/.openssl/include/openssl/ssl.h] Error 127
make[1]: Leaving directory `/usr/local/src/nginx-1.9.9′
make: *** [build] Error 2
根据报错信息我们知道,出错是因为Nginx在编译时并不能在/usr/local/ssl/.openssl/ 这个目录找到对应的文件,其实我们打开/usr/local/ssl/这个目录可以发现这个目录下是没有.openssl目录的,因此我们修改Nginx编译时对openssl的路径选择就可以解决这个问题了
解决方案:
打开nginx源文件下的/usr/local/src/nginx-1.9.9/auto/lib/openssl/conf文件:
找到这么一段代码:
CORE_INCS=”$CORE_INCS $OPENSSL/.openssl/include”
CORE_DEPS=”$CORE_DEPS $OPENSSL/.openssl/include/openssl/ssl.h”
CORE_LIBS=”$CORE_LIBS $OPENSSL/.openssl/lib/libssl.a”
CORE_LIBS=”$CORE_LIBS $OPENSSL/.openssl/lib/libcrypto.a”
CORE_LIBS=”$CORE_LIBS $NGX_LIBDL”
修改成以下代码:
CORE_INCS=”$CORE_INCS $OPENSSL/include”
CORE_DEPS=”$CORE_DEPS $OPENSSL/include/openssl/ssl.h”
CORE_LIBS=”$CORE_LIBS $OPENSSL/lib/libssl.a”
CORE_LIBS=”$CORE_LIBS $OPENSSL/lib/libcrypto.a”
CORE_LIBS=”$CORE_LIBS $NGX_LIBDL”
然后再进行Nginx的编译安装即可
注意 现在展示只能make 不要 make install
假如make install就会把之前安装的nginx给覆盖
在在make之后进入objs文件夹
把里面的nginx文件跟之前的nginx文件替换,再重启一下,ssl模块就搞好了。
./nginx -V
nginx version: nginx/1.20.1
built by gcc 4.8.5 20150623 (Red Hat 4.8.5-39) (GCC)
built with OpenSSL 1.1.1i 8 Dec 2020
TLS SNI support enabled
configure arguments: --prefix=/home/nginx --with-http_ssl_module --with-openssl=/usr/local/ssl