[后知后觉系列]请尽快更新nginx静态编译的openssl版本

昨天在用ssllabs工具检测本站HTTPS配置的时候发现评分直接降到了F等,WTF?

往下翻评测页面,看到有一个openssl的漏洞没有被修复:CVE-2016-2107,OpenSSL Padding Oracle vuln.具体来说,这个漏洞的触发条件是:

  • openssl < 1.0.2h(1.0.2)/openssl < 1.0.1t(1.0.1)
  • cipher suites中有AES-CBC套件
  • CPU支持AES-NI指令集

对此,openssl官方迅速推出补丁,即openssl-1.0.2hopenssl-1.0.1t,想要避免这一漏洞,只需下载这两个版本的源码,然后将它们静态编译到nginx中即可。

执行

wget https://www.openssl.org/source/openssl-1.0.2h.tar.gz
tar xzf openssl-1.0.2h.tar.gz

下载openssl(请根据自己的情况选择是否使用1.0.1t)
进入nginx源码目录,执行nginx -V查看自己原来的编译参数,如图:

将它们复制出来(如果你要带上configure arguments也是没谁了),然后在源码目录下执行:

./configure <原来的编译参数> --with-openssl=/path/to/new/openssl #如果原来指定了该参数,请修改成到新的openssl源码的路径
make -j`$(nproc)`
service nginx stop
make install#不会覆盖配置文件
service nginx start

如果在编译nginx时,执行make后立即报错,提示openssl的Makefile文件过老,如下图:

请到openssl目录下执行:

touch Makefile

再次编译nginx即可。

如果想了解更多这个漏洞,可以看cloudflare的博客(高能预警!英语不好慎入!)

PS:封面图片来自网络,侵删。

本站教程中所使用的openssl版本均已更新为1.0.2h