【问题标题】:How to specify server-preferred order of SSL cipher suites for Java?如何为 Java 指定服务器首选的 SSL 密码套件顺序?
【发布时间】:2013-12-30 09:41:47
【问题描述】:

我将 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?

提前致谢。

【问题讨论】:

    标签: java ssl encryption jsse


    【解决方案1】:

    从 Java 1.8 开始,SSLParameters 类上有一个setUseCipherSuitesOrder 方法。

    设置方式取决于您使用的服务器。如果您有权访问 SSLEngine,则可以获取参数、更改值,然后在引擎上重新设置参数。

    【讨论】:

      【解决方案2】:

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

      编辑 您最好在服务器前面放置一个 Apache HTTPD 反向代理并在那里终止 SSL。 Apache HTTPD 使用 OpenSSL,它可以让您完全按照您的要求进行操作。对于某些 Webapps 需要客户端证书而其他 Webapps 不需要的情况也更好,假设您当然正在编写 Webapps。

      【讨论】:

      • 我已经尝试使用我的偏好顺序调用 setEnabledCipherSuites(),但没有成功。可能无法指定它。 :(谢谢!
      猜你喜欢
      • 2016-03-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-12-18
      • 1970-01-01
      • 1970-01-01
      • 2012-12-06
      • 2011-11-28
      相关资源
      最近更新 更多