OpenSSL重大漏洞和Nginx的小变化

OpenSSL重大漏洞

What the huack! 好久没折腾VPS配置了,刚测试一下SSL就给我来了个大News:

SSL Report F

看到这个的时候,我心里是很慌的,毕竟最近阿里云给我发了好多短信提示各种漏洞都给我忽略了,这回这个可是高危漏洞啊!

研究了一下这个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)

好啦,强迫症治愈。

博客全站强制SSL和Nginx的一个问题

强制SSL

PositiveSSL_tl_trans

昨天半夜,Jimmy Zhou同学上了DO并且随着大流加了SSL。因为我的站早就启用了StartCom的免费SSL证书,所以他就来给我的SSL评了下分。结果——C。

强迫症瞬间就犯了,在Jimmy同学的鼓动下,入了$9一年的COMODO SSL。接下来就是升级网站的SSL配置,具体过程如下:

  • 1、升级Openssl(2015.10更新:改成了LibreSSL),使用更安全,ARM平台表现更好的加密算法: CHACHA20_POLY1305。。
  • 2、重新编译安装Nginx至最新版本,开启SPDY。(顺便吐槽下:lnmp一键安装包的一键升级Nginx脚本存在问题,还是手动配置大法好)
  • 3、禁用SSLv3(这是我搬回国内以后忘记做得事情)。
  • 4、强制http://dickwu.com 和 http://www.dickwu.com 301 至https://dickwu.com。

然后SSL评级就A了。离A+还差一步,至少强迫症解决了。

Update: 配置CHACHA20_Poly1305的详细教程,移步这里

Nginx Rewrite规则加斜杠的问题

新的强迫症出现:

这是老问题了,既然昨天动到了Nginx就想办法解决一遍。具体问题是这样的:

如果我访问https://dickwu.com/class04这个网址,最后没有加斜杠,Nginx会认为站点是在dickwu.com/下,CSS什么的自然是到dickwu.com/css里去找,这就造成了网页里所有css,js,图片挂掉的问题。

网上的办法都是在Nginx的配置文件中加一句server_name_in_redirect off; 但事实上Nginx早就把这个配置作为默认选项了。那问题肯定就出在了Wordpress的Rewrite规则上。

搞了一晚上,没想到办法。最后用了被Jimmy嘲笑的一招:

if (-d $request_filename){

rewrite ^/(.*)([^/])$ /$1$2/ permanent;

}

但是这绝对不是解决的办法。

求大神相救!!!!!!!!!!!!!!!!!