2017-03-16 26 views
0

我知道不同的JVM具有不同的启用协议列表。 JVM如何从列表中选择协议版本?Java如何为ClientHello选择协议

  1. 是否选择最高启用版本?

  2. 我读到服务器默认启用所有协议(,而不是客户端必须使用-Dhttps.protocols开关选择启用的协议)。 因此,如果一个JVM与-server交换机一起运行,但是将客户端调用到另一个https站点,将使用哪个协议?它会成为Java的最高支持版本协议吗?

  3. 交换机-Djdk.tls.client.protocols与-Dhttp.protocols交换机有什么不同? (两者似乎都在控制已启用的客户端协议列表?(并且这两者似乎都不影响服务器支持的协议列表)

  4. 是否有任何方法可以有选择地关闭服务器的某些协议?

--sony

+1

'-server'开关不会做你的想法。至于TLS的实现,这取决于服务器(程序)。 Apache Tomcat与Jetty不同,它们都不同于Weblogic(选择三种)。你需要告诉我们你正在使用哪个服务器。 –

回答

2

我知道不同的JVM有启用的协议不同的名单。如何做一个JVM从列表中选择德协议版本? 1.是否选择启用最高版本?

是的。

  • 我读所有协议皆预设服务器(不像其具有通过使用-Dhttps.protocols切换到选择启用的协议客户端)运行。
  • 我不知道你看的,但所有安全协议默认情况下,客户端和服务器上启用。客户端可能但是不需要使用https.protocols

    因此,如果一个JVM运行时使用-server开关,但是使客户端调用另一个https站点,将使用哪个协议?它会成为Java的最高支持版本协议吗?

    是的。 -server开关与此无关。它选择一个HotSpot的实现。无论如何,与TLS无关。

  • 究竟如何-Djdk.tls.client.protocols从-Dhttp.protocols不同的开关切换?
  • 前者适用于所有TLS;后者仅适用于HTTPS。

    1. 有什么办法可以有选择地关闭服务器的某些协议吗?

    对于哪个服务器?它可以在Tomcat中配置,如果你自己编写服务器,你可以直接自己配置SSLServerSocket