SSL 握手警報:Java 1.7 升級後出現Unrecognized_Name 錯誤
問題描述:
問題描述:問題描述:
問題描述:
問題描述:原因:java -Djsse.enableSNIExtension=false yourClassJava 1.7 預設引入了對伺服器名稱指示 (SNI) 的支援。雖然大多數網頁伺服器有效管理 SNI,但某些配置錯誤的伺服器可能會在 SSL 握手中傳回「無法識別的名稱」警報,大多數用戶端都會忽略該警報,Java 除外。
解決方案:
要解決此問題,您可以採用以下方法之一解決方法:System.setProperty("jsse.enableSNIExtension", "false");透過命令列停用SNI:
使用以下命令列選項來執行您的應用程式:
這將全域停用整個應用程式的 SNI。處理Unrecognized_Name警報:
如果您希望支援設定錯誤的伺服器同時仍使用 SNI:
使用所需的主機名稱建立 SSLSocket。 嘗試啟動握手 (sslsock.startHandshake())。 如果發生 unrecognized_name 錯誤,透過建立一個沒有主機的新 SSLSocket 來停用 SNI名稱。 重要提示:停用 SNI 可能會損害安全最佳實務。如果可能,請配置您的伺服器以正確支援 SNI 以避免此問題。以上是為什麼升級到 Java 1.7 後出現「SSLProtocolException:握手警報:unrecognized_name」錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!