首頁 >Java >java教程 >為什麼升級到 Java 1.7 後會收到「Unrecognized_Name」SSL 握手警報?

為什麼升級到 Java 1.7 後會收到「Unrecognized_Name」SSL 握手警報?

Patricia Arquette
Patricia Arquette原創
2024-12-23 10:00:25183瀏覽

Why Do I Get an

SSL 握手警報:升級到Java 1.7.0 後出現「Unrecognized_Name」錯誤

升級到Java 1.7 後,使用者遇到了建立建立了建立HTTPS 連線時出現「unrecognized_name」錯誤。此問題源自於 Java 7 中引入的伺服器名稱指示 (SNI) 支持,預設為啟用。

原因

某些配置錯誤的伺服器會發出「無法辨識的名稱」 SSL 握手時發出警告。不幸的是,Java 是少數無法忽略此警告的用戶端之一。

解決方法

要解決此問題,使用者可以使用以下方法停用 SNI 支援:

java -Djsse.enableSNIExtension=false yourClass

或者,他們可以在 Java中設定屬性代碼:

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

注意:必須在執行任何SSL 操作之前設定此屬性,因為之後更改它不會對SNI 狀態產生影響。

SNI 混合解決方案保留

如果完全停用SNI 不可行,請考慮以下混合方法:

  1. 使用所需主機名稱創建SSLSocket 並嘗試握手。
  2. 如果遇到「unrecognized_name」異常,請重試而不指定要停用的主機名稱SNI。
  3. 此方法允許使用 SNI,並針對配置錯誤的伺服器進行回退。

以上是為什麼升級到 Java 1.7 後會收到「Unrecognized_Name」SSL 握手警報?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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