https 的ssl 等级检测结果修复

NGINX 中配置HTTPS正式后SSL等级升高解决方法

1. 需求

NGINX做代理服务器配置了HTTPS证书后,使用
https://www.ssllabs.com/ssltest/analyze.htm 页面检查发现网站的安全等级为F,需要提高。

https 的ssl 等级检测结果修复_第1张图片
image.png

2. 解决方法

从检测结果看, Cipher Strength、Key Exchange、Protocol Support 这三个方面的内容都没有配置,因此从以下开始设置。

2.1 NGINX的配置文件中增加Cipher Strength

在nginx 的配置文件的https证书所在位置增加如下设置来增强Cipher Strength,如下:

ssl_certificate /usr/local/nginx/cert/3614155__shk.com.pem;
ssl_certificate_key /usr/local/nginx/cert/3614155__shk.com.key;

ssl_ciphers "ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA:ECDHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES128-SHA256:DHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES256-GCM-SHA384:AES128-GCM-SHA256:AES256-SHA256:AES128-SHA256:AES256-SHA:AES128-SHA:DES-CBC3-SHA:HIGH:!aNULL:!eNULL:!EXPORT:!DES:!MD5:!PSK:!RC4";

ssl_protocols TLSv1 TLSv1.1 TLSv1.2;

ssl_prefer_server_ciphers on;

2.2 NGINX的配置文件中增加Key Exchange

Key Exchange 是在nginx 所在的系统中生成的,因此需要手动处理先生成交换文件。
一般网站使用的SSL证书都是RSA证书,这种证书基本都是2048位的密钥,但是证书密钥交换密钥必须要比证书密钥更长才能安全,而默认的只有1024位,所以我们需要手动生成一个更强的密钥。所以配置之前,如果没有DH-key就需要做下面的步骤:
yum -y install screen
screen -S DH
openssl dhparam -out dhparam.pem 4096

如果在等待过程中,网路出现中断,可以执行下面命令重新连接安装窗口。
screen -r DH

通常情况,生成的证书密钥交换密钥建议和域名证书放在一起,/usr/local/nginx/cert/
在证书生成后,在nginx.conf 文件中证书文件下面和include 的应用配置文件中证书文件下面添加如下:

ssl_dhparam /usr/local/nginx/cert/dhparam.pem;
ssl_stapling on;
ssl_session_timeout 10m;
add_header Strict-Transport-Security "max-age=6307200; includeSubdomains; preload";
ssl_stapling_verify on;

在添加完上面两个验证后,重启nginx的配置文件,重新检测站点的ssl 等级,发现检测等级如下,发现检测结果相对开始有改善,但还是F 。

https 的ssl 等级检测结果修复_第2张图片
image.png

2.3 NGINX的配置文件中增加Protocol Support

从2.2 的修复结果来看,还有Protocol Support没有修复,查看提示发现是OpenSSl Padding oracle vuln(CVE 2016~2107)。而修复Padding Oracle漏洞,只能是升级openssl。具体升级系统的openssl 步骤如下:

(1)从官网下载最新的openssl

wget https://www.openssl.org/source/openssl-1.1.1i.tar.gz

(2) 进行编译安装

tar zxvf openssl-1.1.1i.tar.gz
cd openssl-1.1.1i
./config -Wl,--enable-new-dtags,-rpath,'$(LIBRPATH)' --prefix=/usr/local/ssl shared zlib-dynamic #使用这个参数在编译时替换系统原有lib路径下文件,不然会报错。
make
make install
(3) 进行替换更新

cd /usr/bin
mv openssl openssl.old
ln -s /usr/local/ssl/bin/openssl /usr/bin/openssl
cd /usr/include/
mv openssl openssl.old
ln -s /usr/local/ssl/include/openssl /usr/include/openssl
n -s /usr/local/ssl/lib/libssl.so /usr/local/lib64/libssl.so
strings /usr/local/lib64/libssl.so |grep OpenSSL
echo "/usr/local/ssl/lib" >>/etc/ld.so.conf

ldconfig -v

(4)检测openssl 是否升级成功
openssl version -a

3. 重新检测站点等级

https://www.ssllabs.com/ssltest/analyze.html?d=webgis1.e6gpshk.com

https 的ssl 等级检测结果修复_第3张图片
image.png

你可能感兴趣的:(https 的ssl 等级检测结果修复)