如何使用 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 支持的密码列表进行比较,似乎很清楚为什么它会抱怨。
我承认,我有点不知所措 - 我想了解发生了什么,但老实说我不知道从哪里开始。
- 我是否安装了正确的密码?
- 如果没有,我从哪里得到它们(我目前使用的是 openssl 1.0.2k 和 Apache 2.4.25)
- 如果我确实有可用的正确密码,openssl 列表如何对应于 SSLLabs 中的列表?
- 如何在服务器上启用正确的密码?
非常感谢您的宝贵时间。
抱歉回复晚了。您的所有评论都指向正确的方向。
然而,我发现真正的罪魁祸首是 dev-libs/openssh
和 net-misc/openssl
上的 USE 标志。由于许可问题,由于缺少默认启用的 bindist
标志,我正在寻找的密码未包含在内。
我将两者都添加到我的 /etc/portage/packages.use
中并禁用了 bindist
。像这样:
dev-libs/openssl -bindist
net-misc/openssh -bindist
然后我重新编译了两个。在重建这两个包和依赖它们的所有东西之后,我所有的 ECDHE_ECDSA[...] 密码都可以使用了。
所以在过去的几个小时里我一直在为这个问题而烦恼。
问题是,我有一个 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 支持的密码列表进行比较,似乎很清楚为什么它会抱怨。
我承认,我有点不知所措 - 我想了解发生了什么,但老实说我不知道从哪里开始。
- 我是否安装了正确的密码?
- 如果没有,我从哪里得到它们(我目前使用的是 openssl 1.0.2k 和 Apache 2.4.25)
- 如果我确实有可用的正确密码,openssl 列表如何对应于 SSLLabs 中的列表?
- 如何在服务器上启用正确的密码?
非常感谢您的宝贵时间。
抱歉回复晚了。您的所有评论都指向正确的方向。
然而,我发现真正的罪魁祸首是 dev-libs/openssh
和 net-misc/openssl
上的 USE 标志。由于许可问题,由于缺少默认启用的 bindist
标志,我正在寻找的密码未包含在内。
我将两者都添加到我的 /etc/portage/packages.use
中并禁用了 bindist
。像这样:
dev-libs/openssl -bindist
net-misc/openssh -bindist
然后我重新编译了两个。在重建这两个包和依赖它们的所有东西之后,我所有的 ECDHE_ECDSA[...] 密码都可以使用了。