修复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)
在上面, libcrypto
和libssl
是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 。
亚马逊
亚马逊可能会提供进一步修改的图像。 所以关于nginx
和openssl
的讨论可能不适用或者是错误的,这取决于亚马逊做了什么(或没做过)。
如果您不喜欢平台(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