![修复 nginx 1.4.6 对旧 openssl 版本(libssl0.9.8)的依赖?](https://linux22.com/image/851074/%E4%BF%AE%E5%A4%8D%20nginx%201.4.6%20%E5%AF%B9%E6%97%A7%20openssl%20%E7%89%88%E6%9C%AC%EF%BC%88libssl0.9.8%EF%BC%89%E7%9A%84%E4%BE%9D%E8%B5%96%EF%BC%9F.png)
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)
其中,libcrypto
和libssl
是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
)。如果我没记错的话,您还需要两个或三个额外的包。
很抱歉带来错误报告。这可能会导致此问题被关闭。请接受我的歉意。