2017-03-16 94 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