更新时间:2022-09-08 GMT+08:00
分享

本地用JDK1.6连接JDK1.8服务端的问题

问题

MRS系统使用的是JDK1.8,支持的SSL版本是TLSv1.2和TLSv1.3。某些用户受条件影响,只能用较低版本的JDK1.6连接MRS,在不做任何处理的情况下,连接失败。

回答

解决方案:添加一个较低的SSL信息加密版本。

  1. 在文件“${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"

  2. 在调试源文件的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);

  3. 配置完这两处参数后,其他使用步骤与JDK1.8情况下一样,具体可以参考样例代码说明

    执行该方案后能解决本地用JDK1.6连接JDK1.8服务端的问题,但是使用已经过时的低版本SSL协议,会给系统带来一些安全隐患,因此建议遵循环境使用要求,使用JDK1.8。

分享:

    相关文档

    相关产品