отказ от рукопожатия - PullRequest
0 голосов
/ 07 мая 2018

Я использую Rad с Websphere версии 8.0.0.9, и я получаю ошибку

[7/5/2018 12:27:46:973 EEST] 0000002d webapp        E com.ibm.ws.webcontainer.webapp.WebApp logServletError SRVE0293E: [Servlet Error]-[gr.mess.web.servlets.LoginServlet]: javax.net.ssl.SSLHandshakeException: Received fatal alert: handshake_failure
    at com.ibm.jsse2.o.a(o.java:32)
    at com.ibm.jsse2.o.a(o.java:3)
    at com.ibm.jsse2.SSLSocketImpl.b(SSLSocketImpl.java:817)
    at com.ibm.jsse2.SSLSocketImpl.a(SSLSocketImpl.java:500)
    at com.ibm.jsse2.SSLSocketImpl.h(SSLSocketImpl.java:645)
    at com.ibm.jsse2.SSLSocketImpl.a(SSLSocketImpl.java:138)
    at com.ibm.jsse2.SSLSocketImpl.startHandshake(SSLSocketImpl.java:268)
    at com.ibm.net.ssl.www2.protocol.https.c.afterConnect(c.java:165)
    at com.ibm.net.ssl.www2.protocol.https.d.connect(d.java:27)
    at sun.net.www.protocol.http.HttpURLConnection.getOutputStream(HttpURLConnection.java:1043)
    at com.ibm.net.ssl.www2.protocol.https.b.getOutputStream(b.java:62)
    at gr.mess.web.servlets.LoginServlet.routeeAuthenticate(LoginServlet.java:131)
    at gr.mess.web.servlets.LoginServlet.doPost(LoginServlet.java:100)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:595)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:668)
    at com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:1230)
    at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:779)
    at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:478)
    at com.ibm.ws.webcontainer.servlet.ServletWrapperImpl.handleRequest(ServletWrapperImpl.java:178)
    at com.ibm.ws.webcontainer.filter.WebAppFilterChain.invokeTarget(WebAppFilterChain.java:136)
    at com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:79)
    at com.ibm.ws.webcontainer.filter.WebAppFilterManager.doFilter(WebAppFilterManager.java:960)
    at com.ibm.ws.webcontainer.filter.WebAppFilterManager.invokeFilters(WebAppFilterManager.java:1064)
    at com.ibm.ws.webcontainer.servlet.CacheServletWrapper.handleRequest(CacheServletWrapper.java:87)
    at com.ibm.ws.webcontainer.WebContainer.handleRequest(WebContainer.java:914)
    at com.ibm.ws.webcontainer.WSWebContainer.handleRequest(WSWebContainer.java:1662)
    at com.ibm.ws.webcontainer.channel.WCChannelLink.ready(WCChannelLink.java:200)
    at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleDiscrimination(HttpInboundLink.java:453)
    at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleNewRequest(HttpInboundLink.java:515)
    at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.processRequest(HttpInboundLink.java:306)
    at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.ready(HttpInboundLink.java:277)
    at com.ibm.ws.tcp.channel.impl.NewConnectionInitialReadCallback.sendToDiscriminators(NewConnectionInitialReadCallback.java:214)
    at com.ibm.ws.tcp.channel.impl.NewConnectionInitialReadCallback.complete(NewConnectionInitialReadCallback.java:113)
    at com.ibm.ws.tcp.channel.impl.AioReadCompletionListener.futureCompleted(AioReadCompletionListener.java:175)
    at com.ibm.io.async.AbstractAsyncFuture.invokeCallback(AbstractAsyncFuture.java:217)
    at com.ibm.io.async.AsyncChannelFuture.fireCompletionActions(AsyncChannelFuture.java:161)
    at com.ibm.io.async.AsyncFuture.completed(AsyncFuture.java:138)
    at com.ibm.io.async.ResultHandler.complete(ResultHandler.java:204)
    at com.ibm.io.async.ResultHandler.runEventProcessingLoop(ResultHandler.java:816)
    at com.ibm.io.async.ResultHandler$2.run(ResultHandler.java:905)
    at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:1702)

Я пытаюсь подключиться к https://www.routee.net/ sms api. Два месяца назад я попробовал это, и это было успешно, но теперь, когда я пытаюсь, я не могу соединиться. Я пробовал много вещей, таких как использование провайдеров надувных замков с их банками (для jdk 1.6), добавление local_policy.jar и US_export_policy.jar. Я также попытался изменить настройки безопасности с websphere secure admin, изменив настройки ssl для версий ssl tsl, но у меня ничего не получается. Я также пытался получить сертификат от порта, но возникала та же ошибка рукопожатия ssl. Я пытался получить сертификат для другие URL, но на этот раз я был успешным (например, www.google.com). Что было бы здесь? Что-то с JDK 1.6, конкретный URL? Есть предложения?

Вот пример кода подключения, который я нашел, который работал два месяца назад

 private String routeeAuthenticate() throws MalformedURLException, IOException {
         /*  Base64.Encoder encoder = Base64.getEncoder();*/

    /*   String toEncode = "Encoding and Decoding in Base64 Test";*/
        //Encoding in b64
        /* routeeAppId.getBytes()*/
    /*  System.out.println(encoded);
        //Decoding in b64
        byte[] decodeResult = new BASE64Decoder().decodeBuffer(encoded);
        System.out.println(new String(decodeResult));*/

           String authString = routeeAppId + ":" + routeeAppSecret;
           String token = new BASE64Encoder().encode(authString.getBytes());
           //String token = encoder.encodeToString(authString.getBytes());
           String accessToken = "";
           URL url = new URL("https://auth.routee.net/oauth/token");
           HttpURLConnection connection = (HttpURLConnection) url.openConnection();
           connection.setRequestMethod("POST");
           connection.setRequestProperty("Authorization", "Basic " + token);
           connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
           connection.setDoOutput(true);
           DataOutputStream wr = new DataOutputStream (connection.getOutputStream());
           wr.writeBytes("grant_type=client_credentials");
           wr.close();
           BufferedReader in = new BufferedReader(new InputStreamReader(connection.getInputStream()));
           String inputLine;
           StringBuffer response = new StringBuffer();
           while ((inputLine = in.readLine()) != null) {
               response.append(inputLine);
           }
           in.close();
           try {
               JSONParser parser = new JSONParser();
               JSONObject jsonObject = (JSONObject)parser.parse(response.toString());
               accessToken = (String) jsonObject.get("access_token");
               System.out.println("AccessToken======"+accessToken+"!!!");
           } catch (Exception e) {
               e.printStackTrace();
           }
           return accessToken;
        }

1 Ответ

0 голосов
/ 07 мая 2018

Похоже, что для URL требуется TLSv1.2 и шифры ECC. Можете ли вы включить Webphere для использования SSL_TLSv2 или TLSv1.2. Чтобы заставить WebSphere использовать шифры ECC с высоким уровнем безопасности, необходимо установить для свойства безопасности com.ibm.websphere.ssl.include.ECCiphers значение true.

Информацию об этом можно найти в центре знаний здесь: https://www.ibm.com/support/knowledgecenter/SSAW57_8.5.5/com.ibm.websphere.nd.doc/ae/usec_seccustomprop.html

или в Stackoverflow здесь: https://developer.ibm.com/answers/questions/303331/how-can-i-enable-elliptical-curve-cryptography-ecc/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...