修复nginx 1.4.6对旧openssl版本(libssl0.9.8)的依赖?

我正在尝试在我的Ubuntu 12.04 EC2实例w / nginx 1.4.6上启用TLSv1.1和TLSv1.2,但是这个版本的nginx依赖于libssl0.9.8 ,即使安装了最新版本的OpenSSL(1.0。 1)。

我该如何解决这个问题,以便启用TLSv1.1和TLSv1.2?

我该如何解决这个问题,以便启用TLSv1.1和TLSv1.2?

听起来有两个问题在起作用。 首先是nginx相关; 第二是与openssl相关。 可能有第三个,那就是亚马逊。

nginx的

nginx可以使用OpenSSL构建。 它是什么时候,它是用平台提供的OpenSSL版本构建的。 Ubuntu 12.04提供OpenSSL 1.0.1,而不是0.9.8。 所以你需要确认你实际上在nginx使用0.9.8。

要validationnginx使用的OpenSSL版本,请发出ldd nginx 。 例如,这是openssl可执行文件的依赖项(我不使用nginx ,所以我没有安装它。你应该在nginx交换openssl ):

 $ which openssl /usr/bin/openssl $ ldd /usr/bin/openssl linux-vdso.so.1 => (0x00007ffff69ff000) libssl.so.1.0.0 => /usr/lib/x86_64-linux-gnu/libssl.so.1.0.0 (0x00007f136424f000) libcrypto.so.1.0.0 => /usr/lib/x86_64-linux-gnu/libcrypto.so.1.0.0 (0x00007f1363e58000) libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f1363c53000) libz.so.1 => /lib/x86_64-linux-gnu/libz.so.1 (0x00007f1363a3c000) libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f13636b1000) /lib64/ld-linux-x86-64.so.2 (0x00007f13644c6000) 

在上面, libcryptolibssl是OpenSSL。

从上面,您可以检查libssl.so.1.0.0中的包。 下面,1.0.1是OpenSSL的版本

 * Package: libssl1.0.0 (1.0.1-4ubuntu5.11) * ... 

OpenSSL的

缺少TLS 1.1和1.2可能是由于Ubuntu的安全团队禁用协议版本以促进互操作性。 请参阅Ubuntu 12.04 LTS:OpenSSL下层版本,不支持TLS 1.2 。

亚马逊

亚马逊可能会提供进一步修改的图像。 所以关于nginxopenssl的讨论可能不适用或者是错误的,这取决于亚马逊做了什么(或没做过)。


如果您不喜欢平台(Ubuntu或Amazon)提供的nginx ,那么您可以尝试使用nginx的PPA。 请参阅nginx – Ubuntu PPA 。

您也可以从源代码构建它。 一定要安装OepnSSL的开发包( libssl-dev )。 你需要两个或三个额外的包,IIRC。


很抱歉带来错误报告。 这可能会导致这个问题被关闭。 请接受我的道歉。

从它的外观,你应该提交一个错误到https://bugs.launchpad.net/ubuntu/+source/nginx/+filebug 🙂

你还应该检查: http : //unmitigatedrisk.com/?p = 354