如何为 Java 指定服务器首选的 SSL 密码套件顺序?

osh*_*shu 5 java encryption ssl jsse

我使用 Java 1.6 和 netty 3.8 作为 HTTP/HTTPS 服务器。我已经通过 ssllab.com(https://www.ssllabs.com/ssltest/analyze.html)完成了 SSL 测试,我得到了如下密码套件的结果。

密码套件(按强度排序;服务器无偏好

但是,google.com 的结果却有所不同。 https://www.ssllabs.com/ssltest/analyze.html?d=www.google.com&s=74.125.227.148

密码套件(服务器优先顺序为 SSL 3+ 套件,然后使用 SSL 2 套件)

如何为密码套件设置服务器端首选项顺序?JSSE 是否有任何关于此的属性或 API?

提前致谢。

use*_*421 2

您可以尝试setEnabledCipherSuites()按所需的顺序使用数组进行调用,但 JSSE 文档中没有任何内容表明它将使用该顺序作为所需的顺序,并且 TLS RFC 2246 中没有任何内容表明服务器有义务遵守任何特定的顺序在客户建议的密码套件中进行选择时。

编辑您可能最好在服务器前面放置一个 Apache HTTPD 反向代理并在那里终止 SSL。Apache HTTPD 使用 OpenSSL,它可以让您准确地完成您想要的操作。对于某些 Web 应用程序需要客户端证书而其他 Web 应用程序不需要客户端证书的情况也更好,当然假设您正在编写 Web 应用程序。