当我在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。
答案 0 :(得分:0)
查看Security Enhancements in Java 8表示:
SunJSSE默认为客户端应用程序启用了SNI扩展 在JDK 7中.JDK 8支持服务器应用程序的SNI扩展。
文档显示您的代码现在必须更改一下才能启用它 - 有关代码示例,请参阅the SNIExtension。