扩展server_name(SNI扩展)不与JAVA 8一起发送

时间:2017-02-20 20:19:48

标签: java java-ee jboss wildfly-10

当我在java 8中使用此代码时,有人知道为什么我没有服务器扩展名:

#!/bin/bash
function myBackupFunction(){ # directory options destination filename
local directory="$1" options="$2" destination="$3" filename="$4";
  echo "tar cz ${!options} ${!directory} | ssh root@backupserver \"cat > /mnt/${!destination}/${!filename}.tgz\"";
}

declare -A backup=([directory]=".." [options]="..." [destination]="backups" [filename]="backup" );

myBackupFunction backup[directory] backup[options] backup[destination] backup[filename];
只有JAVA 7,一切正常。但不是JAVA 8。

当我激活ssl调试时,我观察到SNI没有在握手中发送:

try {
            URL url = new URL(urlString);
            URLConnection conn = url.openConnection();
            conn.setDoOutput(true);

            OutputStreamWriter wr = new OutputStreamWriter(conn.getOutputStream());
            wr.write(requestString);
            wr.flush();
            // Get the response
            BufferedReader rd = new BufferedReader(new InputStreamReader(conn.getInputStream()));
            String line;
            String response = "";
            while ((line = rd.readLine()) != null) {
                response += line;
            }
            wr.close();
            rd.close();

            return response;
        } catch (IOException ex) {
            System.err.println(ex); return ex.toString();
        }

注意,我没有使用setHostnameVerifier(..),我使用的是wildfly 10。

1 个答案:

答案 0 :(得分:0)

查看Security Enhancements in Java 8表示:

  

SunJSSE默认为客户端应用程序启用了SNI扩展   在JDK 7中.JDK 8支持服务器应用程序的SNI扩展。

文档显示您的代码现在必须更改一下才能启用它 - 有关代码示例,请参阅the SNIExtension