如何使用 Apache 2.4 和 mod_ssl 启用 TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384 密码

How to enable TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384 cipher with Apache 2.4 and mod_ssl

所以在过去的几个小时里我一直在为这个问题而烦恼。

问题是,我有一个 iOS 应用程序加载了一些网络内容。 尝试很好地完成其工作,但因错误 "An SSL Error has occured and a secure connection to the server cannot be made".

而窒息

我通过 SSLLabs 运行 URL 并看到我在握手模拟下列出了以下错误:

Apple ATS 9 / iOS 9 "Server sent fatal alert: handshake_failure"

在不太了解的情况下,这似乎与无法向应用程序的 WebView 提供密码有关,该密码可以 gua运行tee Forward Secrecy

列出了 Apple ATS 9 / iOS 9 可接受的密码列表 here

我将该列表与我提供的 openssl ciphers 的输出相匹配 here

首先,来自 openssl 列表的密码和来自 SSLLabs 的密码看起来属于两种不同的 formats/naming 约定。但除此之外,我似乎不支持任何 ECDHE_ECDSA[...] 除非我只是读错了。

由于没有更好的办法,我一直在摆弄它,我的主机的 SSL 配置现在有这些行:

SSLProtocol -ALL +TLSv1.2
SSLCipherSuite  TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384:ECDHE-RSA-AES256-GCM-
SHA384:HIGH:!RC4:!aNULL:!eNULL:!EXPORT:!DES:!3DES:!MD5:!PSK
SSLHonorCipherOrder On

这似乎完全没有任何作用。

当我查看可用的 TLSv1.2 密码 SSLLabs 报告时,它对我来说完全没有任何意义。我已经把那个列表 her。在我看来,这完全不符合我在 SSLCipherSuite 中定义的内容 - 但将该列表与 ATS 支持的密码列表进行比较,似乎很清楚为什么它会抱怨。

我承认,我有点不知所措 - 我想了解发生了什么,但老实说我不知道​​从哪里开始。

  1. 我是否安装了正确的密码?
  2. 如果没有,我从哪里得到它们(我目前使用的是 openssl 1.0.2k 和 Apache 2.4.25)
  3. 如果我确实有可用的正确密码,openssl 列表如何对应于 SSLLabs 中的列表?
  4. 如何在服务器上启用正确的密码?

非常感谢您的宝贵时间。

抱歉回复晚了。您的所有评论都指向正确的方向。 然而,我发现真正的罪魁祸首是 dev-libs/opensshnet-misc/openssl 上的 USE 标志。由于许可问题,由于缺少默认启用的 bindist 标志,我正在寻找的密码未包含在内。

我将两者都添加到我的 /etc/portage/packages.use 中并禁用了 bindist。像这样:

dev-libs/openssl -bindist
net-misc/openssh -bindist

然后我重新编译了两个。在重建这两个包和依赖它们的所有东西之后,我所有的 ECDHE_ECDSA[...] 密码都可以使用了。