首頁 >Java >java教程 >為什麼升級到 Java 1.7 後出現「SSLProtocolException:握手警報:unrecognized_name」錯誤?

為什麼升級到 Java 1.7 後出現「SSLProtocolException:握手警報:unrecognized_name」錯誤?

Barbara Streisand
Barbara Streisand原創
2024-12-04 07:01:151006瀏覽

Why Am I Getting an

SSL 握手警報:Java 1.7 升級後出現Unrecognized_Name 錯誤

問題描述:

問題描述:

問題描述:

問題描述:

問題描述:

原因:

java -Djsse.enableSNIExtension=false yourClass
Java 1.7 預設引入了對伺服器名稱指示 (SNI) 的支援。雖然大多數網頁伺服器有效管理 SNI,但某些配置錯誤的伺服器可能會在 SSL 握手中傳回「無法識別的名稱」警報,大多數用戶端都會忽略該警報,Java 除外。

解決方案:

要解決此問題,您可以採用以下方法之一解決方法:

System.setProperty("jsse.enableSNIExtension", "false");
透過命令列停用SNI:

使用以下命令列選項來執行您的應用程式:

這將全域停用整個應用程式的 SNI。
  1. 在Java 中停用SNI程式碼:
  2. 或者,您可以透過在任何SSL 操作之前設定「jsse.enableSNIExtension」屬性以程式方式停用SNI:

處理Unrecognized_Name警報:

如果您希望支援設定錯誤的伺服器同時仍使用 SNI:

使用所需的主機名稱建立 SSLSocket。 嘗試啟動握手 (sslsock.startHandshake())。 如果發生 unrecognized_name 錯誤,透過建立一個沒有主機的新 SSLSocket 來停用 SNI名稱。 重要提示:停用 SNI 可能會損害安全最佳實務。如果可能,請配置您的伺服器以正確支援 SNI 以避免此問題。

以上是為什麼升級到 Java 1.7 後出現「SSLProtocolException:握手警報:unrecognized_name」錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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