OpenSSL重大漏洞和Nginx的小变化
OpenSSL重大漏洞
What the huack! 好久没折腾VPS配置了,刚测试一下SSL就给我来了个大News:
看到这个的时候,我心里是很慌的,毕竟最近阿里云给我发了好多短信提示各种漏洞都给我忽略了,这回这个可是高危漏洞啊!
研究了一下这个OpenSSL的漏洞(CVE-2016-2017),翻译全篇难度太大了,大概摘要一下:
由于1.0.1t、1.0.2和1.0.2h之前的OpenSSL没有考虑到AES-NI填充检测逻辑时的内存分配问题,在握手未完成时,服务器的报错信息以明文方式传输返回,所以中间人攻击者可以在握手的过程中探测到返回的明文数据。
需要多次探测,并且能够修改被攻击者所发送的加密前数据(至少是头部信息)。
感觉,能够执行这个漏洞的人都不是中间人了吧,至少必须对网站的访问者成功攻击之后才能够利用这个漏洞进行中间人攻击。BTW,这对于访问量越大的网站,风险越大,对于我等小博客主无所谓啊~
但是!丢人啊!评分评一个F,还要被挂在SSLLab的网站上鞭尸。这能忍?于是果断升级nginx + libressl的版本。那么问题又来了……
Nginx 1.9.5支持HTTP V2啦
对于使用Nginx的网站来说,这是一个好消息。对于我来说,臣妾根本不知道这个信息好吗?下载最新Nginx下来之后,一般的configure会这么写嘛:
./configure \ --user=xxx\ --group=xxx\ --prefix=/usr/local/nginx\ ... #此处省略1000个配置选项 ... --with-http_ssl_module\ --with-http_sub_module\ #下面那行是关键 --with-http_spdy_module\ #上面那行也是关键 --with-openssl=/OpenSSL源代码目录\ --with-ld-opt=-lrt
然后Configure居然过不了?给我报错error: invalid option "--with-http_spdy_module"
噗。。。这是什么鬼?Nginx不支持spdy了?于是Google一下Nginx的官方Module库:
This module was superseded by the ngx_http_v2_module module in 1.9.5.
这个模块已经在1.9.5版本中被增强为ngx_http_v2_module了。
原来是这样啊。所以大家编译的时候就不用--with-http_spdy_module
啦,替换成--with-http_v2_module
即可。
接下来就应该make了你们说是不是,那么问题又来了……
Nginx 1.9.5不会编译LibreSSL啦
报错了。。。
make[2]: *** No rule to make target `install_sw'. Stop. make[1]: *** [/root/ssl/libressl-2.3.0/.openssl/include/openssl/ssl.h] Error 2 make: *** [build] Error 2
WUT?编译出错了?然后我们的Nginx开发者表示,我们没有义务对LibreSSL的编译正确与否负责,我们只需要对OpenSSL负责就好了。所以你可以自己编译好了LibreSSL再以模块的方式添加进Nginx中。
所以呢,解决方案有两个:
- 先编译LibreSSL,再编译Nginx
- 升级LibreSSL到2.3.6以上的版本(这样还可以解决高危漏洞CVE-2016-2017)
好啦,强迫症治愈。
3 thoughts on “OpenSSL重大漏洞和Nginx的小变化”
我的服务器好像编译的就是Nginx1.9.5,都忘记了 🙁
你可以去SSL Lab测一下安全系数
我帮你测了,A+评级。然后发现一个了不起的事情,居然是通配符证书。