在 Apache/OpenSSL 中启用导出密码套件

在 Apache/OpenSSL 中启用导出密码套件

我想在 Apache 中启用导出密码套件,以测试一些旧的漏洞。到目前为止我还没有成功,非常感谢一些帮助。

我的设置如下:

Apache and mod_ssl 2.2.15
OpenSSL 1.0.1a

据我所知,上述版本已经足够旧,可以“支持”这些较旧的密码套件。

以下是相关行/etc/httpd/conf.d/ssl.conf

SSLprotocol all

SSLCipherSuite DEFAULT:+EXP

我相信以上是启用导出密码套件所需的全部内容,但是运行nmap ssl-enum-ciphers.se脚本不会显示任何 EXP 密码套件。将其更改SSLCipherSuite为“LOW”之类的内容确实会生效。httpd更改后我确实重新启动了服务。

我还通过运行确认了这一点openssl s_client -connect 127.0.0.1:443 -cipher EXPORT,我收到一条sslv3握手失败警报,这确实表明导出密码套件尚未启用。

我在这里缺少什么?

答案1

旁白:上游 OpenSSL 1.0.1 中的默认密码列表在 m 之前包含 EXPORT(2015 年 3 月);在 s(2016 年 3 月)中,它们与仅包含单 DES 的 LOW 一起从构建中删除(不仅仅是默认列表)。您是从源代码构建,还是使用其他人的构建或包?构建者或打包者可以更改上游默认值。此外,基于 RedHat 和 Debian 的发行版至少(也许还有其他)在不更改内部版本的情况下向后移植安全补丁,因此这些软件包openssl version并不能真正告诉您正在运行什么;你需要查看的版本包裹,类似openssl-1.0.1e-NN.elNopenssl-1.0.1e-N+debN

在 OpenSSL 密码字符串中使用+不会更改密码列表的内容,它仅通过将一些密码套件移动到结尾。例如,+RC4意味着已经在列表中的 RC4 套件应该放在列表的末尾,这样它们就不太可能被选择。该顺序通常对客户端很重要,因为客户端偏好通常控制从可能的密码套件中选择哪个密码套件;对于服务器来说,仅当服务器配置为覆盖客户端首选项并使用服务器首选项时才重要。

您应该指定DEFAULT:EXPORT:!aNULL(可以缩写DEFAULT:EXP:!aNULL)或ALL:!aNULL。您应该使用,!aNULL因为DEFAULT排除匿名又名非身份验证套件,但EXPORT(类似地LOW MEDIUM HIGH)或ALL包含它们,特别是对于网络(HTTPS),不应使用它们。

您可以使用命令行openssl ciphers [-v] $string查看给定字符串在您的构建中启用了哪些密码。默认格式打包在一行中,很难阅读,除非您通过类似tr : '\n';的方式对其进行管道传输。 (IMO 更好)-v将每个密码放在单独的行上,并添加有时有用的细节(如果没有,则很容易忽略)。

相关内容