更新时间:2022-07-14 GMT+08:00
本地用JDK1.6连接JDK1.8服务端的问题
问题
MRS系统使用的是JDK1.8,支持的SSL版本是TLSv1.2和TLSv1.3。某些用户受条件影响,只能用较低版本的JDK1.6连接MRS,在不做任何处理的情况下,连接失败。
回答
解决方案:添加一个较低的SSL信息加密版本。
- 在文件“${BIGDATA_HOME}/om-server/tomcat/conf”中,添加一个SSL协议的低版本,例如TLSv1,注意将文件中涉及到的几处信息全部修改。
第一处:
<Connector port="20009" address="10.52.0.35" protocol="com.omm.huawei.tomcat.http11.Http11Protocol" SSLEnabled="true" maxHttpHeaderSize="8192" maxPostSize="10240" maxThreads="150" minSpareThreads="25" maxSpareThreads="75" enableLookups="false" disableUploadTimeout="true" acceptCount="100" scheme="https" secure="true" clientAuth="false" sslProtocol="TLS" sslEnabledProtocols = "TLSv1.1,TLSv1.2,TLSv1"
第二处:<Connector port="28443" address="10.52.0.35" protocol="com.omm.huawei.tomcat.http11.Http11Protocol" SSLEnabled="true" scheme="https" secure="true" maxThreads="500" acceptCount="500" connectionTimeout="20000" maxPostSize="10240" clientAuth="false" allowTrace="false" sslProtocol="TLS" sslEnabledProtocols = "TLSv1.1,TLSv1.2,TLSv1"
- 在调试源文件的main方法中配置参数userTLSVersion的值,将其由空字符串改为“TLSv1”,注意该值要与在server.xml中添加的值保持一致。
String webUrl = resourceBundle .getString("webUrl"); LOG .info("The webUrl is:{}",webUrl); if(password == null || password .isEmpty()) { LOG .error("The password is empty."); } //userTLSVersion 是必备的参数,是处理jdk1.6服务端连接jdk1.8服务端时的重要参数,如果用户使用的是jdk1.8,该参数赋值为空字符串即可 String userTLSVersion = "TLSv1" ; //调用 firstAccess 接口完成登录认证 LOG .info("Begin to get httpclient and access."); BasicAuthAccess authAccess = new BasicAuthAccess(); HttpClient httpclient = authAccess .firstAccess(webUrl , userName , password , userTLSVersion);
- 配置完这两处参数后,其他使用步骤与JDK1.8情况下一样,具体可以参考样例代码说明。
执行该方案后能解决本地用JDK1.6连接JDK1.8服务端的问题,但是使用已经过时的低版本SSL协议,会给系统带来一些安全隐患,因此建议遵循环境使用要求,使用JDK1.8。
父主题: FAQ