Received fatal alert: handshake_failure

1.Exception Message:Received fatal alert: handshake_failure

2.When Get PDF URL :https://allwell.mhsindiana.com/content/dam/centene/mhsindiana/Advantage/PDFs/MA-IN-20-H3499-001-EOC.pdf

3.原code:

                    _log.log("evidenceOfCoverageDoc PDF URL=" + pdfUrl);
                    URLConnection conn = url.openConnection();
                    conn.connect();
                    buf.append("<div>PDF Length:" + conn.getContentLength() + "</div>");

4.分析:

根据exception 提示:Received fatal alert: handshake_failure

https://www.ssllabs.com/ 分析原因,点击Test your server ,输入Hostname 例如:allwell.mhsindiana.com

5.分析结果:https://www.ssllabs.com/ssltest/analyze.html?d=allwell.mhsindiana.com

如下图 : 关键分析看红框信息:This site works only in browser with SNI support, 所以搜索支持SNI 的JDK 版本,进行相应的升级。

Received fatal alert: handshake_failure

6.解决方案:

找到支持SNI的JDK 版本, 升级JDK :由原来的 jdk1.8.0_77 升级到 jdk1.8.0_221 

修改Tomcat 如下红色字体部分:apache-tomcat-7.0.76/bin/catalina.sh 文件

cygwin=false
darwin=false
os400=false
hpux=false
case "`uname`" in
CYGWIN*) cygwin=true;;
Darwin*) darwin=true;;
OS400*) os400=true;;
HP-UX*) hpux=true;;
esac

#export JAVA_HOME="/data/jdk1.8.0_74";
export JAVA_HOME="/data/jdk1.8.0_221"

# resolve links - $0 may be a softlink
PRG="$0"

while [ -h "$PRG" ]; do
  ls=`ls -ld "$PRG"`
  link=`expr "$ls" : '.*-> \(.*\)$'`
  if expr "$link" : '/.*' > /dev/null; then
    PRG="$link"
  else
    PRG=`dirname "$PRG"`/"$link"
  fi
done