CVE-2016-2183是与DH密钥交换有关的OpenSSL漏洞,该漏洞主要影响OpenSSL 1.0.2版以下的版本。所以,使用 OpenSSL 1.1.1j 版本的 NGINX 不受此漏洞的影响,因为 OpenSSL 1.1.1 版本解决了该漏洞。
1.下载openSSL
wget --no-check-certificate https://www.openssl.org/source/old/1.1.1/openssl-1.1.1j.tar.gz
#!/bin/sh
#下载安装指定版本openssl
sudo tar xzvf openssl-1.1.1j.tar.gz
cd openssl-1.1.1j
sudo ./config shared zlib
make && make install
sudo chmod 777 /usr/local/ssl
cd /usr/local/ssl/
sudo ./openssl version -a
#替换旧版openssl
sudo mv /usr/bin/openssl /usr/bin/openssl.old2
sudo mv /usr/include/openssl /usr/include/openssl.old2
sudo ln -s /usr/local/bin/openssl /usr/bin/openssl
sudo ln -s /usr/local/include/openssl/ /usr/include/openssl
#配置库文件搜索路径
#root的写法 echo "/usr/local/ssl/lib" >> /etc/ld.so.conf
echo "/usr/local/ssl/lib" |sudo tee -a /etc/ld.so.conf
sudo ldconfig
#测试新版是否正常
openssl version -a
2、重新编译nginx,指定相应的新版本的openssl模块
进入以前版本的nginx目录,找到nginx程序,执行 nginx -V,复制configure arguments。
下载nginx源码包,重新编译,执行时加上 --with-openssl=/path/to/openssl
./configure --prefix=/xlian/manage/nginx --with-http_ssl_module --with-stream --with-openssl=/root/openssl-1.1.1j
然后执行make,不用执行make install,用/objs目录下的nginx替换以前的nginx。