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

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

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

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

答案1

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

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

nginx

nginx可以使用 OpenSSL 构建。如果是,则使用平台提供的 OpenSSL 版本构建。Ubuntu 12.04 提供的是 OpenSSL 1.0.1,而不是 0.9.8。因此,您需要确认您实际使用的是 0.9.8 nginx

要验证 使用的 OpenSSL 版本nginx,请发出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。

从上面,你可以检查以下软件包:。以下 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

亚马逊

nginx亚马逊可能会提供经过进一步修改的图像。因此,关于和的讨论openssl可能不适用或错误,具体取决于亚马逊做了什么(或没做什么)。


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

您也可以从源代码构建它。请确保安装 OepnSSL 的开发人员包 ( libssl-dev)。如果我没记错的话,您还需要两个或三个额外的包。


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

答案2

从表面上看,你应该向https://bugs.launchpad.net/ubuntu/+source/nginx/+filebug:)

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

相关内容