首頁 >Java >java教程 >為什麼升級到 Java 1.7.0 後出現「無法辨識的名稱」SSL 握手錯誤?

為什麼升級到 Java 1.7.0 後出現「無法辨識的名稱」SSL 握手錯誤?

DDD
DDD原創
2024-12-12 18:51:10880瀏覽

Why Am I Getting an

SSL 握手警報:Java 1.7.0 升級後出現無法辨識的名稱錯誤

升級到Java 1.7.0 後,使用者遇到過SSL 握手時出現「無法辨識的名稱」錯誤。此錯誤源自於 Java 7 預設啟用伺服器名稱指示 (SNI) 支援。

但是,某些配置錯誤的伺服器會以上述錯誤回應此功能,導致 Java 對其處理成為障礙。

解決方案:

1.停用SNI 擴充:

要暫時繞過此問題,請使用下列指令執行您的應用程式:

java -Djsse.enableSNIExtension=false yourClass

或者,在任何SSL 操作之前在Java在程式碼中設定此屬性:

System.setProperty("jsse.enableSNIExtension", "false");

請注意,此方法會停用 SNI 功能全球範圍內。

2。混合方法(在處理錯誤配置的同時啟用SNI):

要在適應錯誤配置的伺服器的同時利用SNI,請實施以下步驟:

  1. 使用預期主機名稱(sslsock) 建立SSLSocket ).
  2. 執行sslsock.startHandshake()。如果連線遇到「無法辨識的名稱」錯誤,請繼續步驟 3。
  3. 重試開啟一個沒有主機名稱的新 SSLSocket,從而有效停用 SNI。

Webscarab 代理實作:

此方法已在 Webscarab SSL 代理程式中實作來處理有效地解決這個問題。

以上是為什麼升級到 Java 1.7.0 後出現「無法辨識的名稱」SSL 握手錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn