IBM WAS sslhandshake_failure - PullRequest
       62

IBM WAS sslhandshake_failure

0 голосов
/ 26 сентября 2019

Используемое программное обеспечение: IBM WAS 7.0.0.41, JDK 6

Java-код:

JSONTNRequest jsonRequestBean = new JSONTNRequest(xmlRequest.getServiceInstanceId(), "FOO");

String jsonRequest = beanToJSON(jsonRequestBean);
        StringEntity params = null;
        try {
            params = new StringEntity(jsonRequest);
            logger.info("json request was created");
        } catch (UnsupportedEncodingException e) {
            logger.error("Exception: ", e);
        }

HttpPost request = new HttpPost(MineProperties.getRestserviceUrl());

request.addHeader("content-type", "application/json");
        request.setEntity(params);

        String xmlOutput = null;

        HttpClient client = null;
        String jsonOutput = null;

        try {
            client = HttpClientBuilder.create().build();
            logger.info("build was completed");
        } catch (Exception e) {
            logger.error("Exception: ", e);
        }

try {
HttpResponse response = client.execute(request);
            HttpEntity httpEntity = response.getEntity();

            jsonOutput = EntityUtils.toString(httpEntity);

            JSONObject json = new JSONObject(jsonOutput);
            xmlOutput = XML.toString(json);
} catch (Exception e) {
 logger.error("failed previous attempt, now with different one");
 HttpURLConnection httpConn;
        try {
            URL url = new URL("https://fo.bar/rest_uri");
            URLConnection conn = url.openConnection();

            httpConn = (HttpURLConnection) conn;

            if (httpConn.getResponseCode() == 200) {
                System.out.println("das ist gut");
            } else {
                System.out.println("das ist nich gut: " +  httpConn.getResponseCode());
            }
            System.out.println("------------------------all is ok");
        } catch (MalformedURLException e) {
            logger.info("------------------------mal: ", e);
        } catch (IOException e) {
            logger.error("------------------------ioe: ",e);
        }
} 

  1. Установлен сертификат: Безопасность / SSL-сертификат и управление ключами / Хранилища ключейи сертификаты / NodeDefaultTrustStore / Сертификаты подписчика / Добавить

Этот параметр

Добавить

был использован, поскольку

* 1018Опция * Retrieve from port

привела к тому же sslhandshake_failure, это заставляет меня думать, что java-код не плохой, и это очевидно, потому что я тестировал свой код из моего локального в простой JSE, не привязанный кСервер приложений и даже не нужно было устанавливать сертификат в JDK, и он работал, мой локальный и где серверы приложений IBM WAS принадлежат к разным доменам.

Тест подключения, откуда IBM WAS (всеиз них работали как положено):

  • telnet на порт 443 работал
  • open_ssl работал
  • curl с запросом json получил ответ json, поэтому он работал

Отслеживание:

Опция для отслеживания проблем, связанных с SLL, была также включена:

trobuleshooting / Журналы и трассировка / SERVER / Диагностическая трассировка / Время выполнения / Подробный журнал изменений / leves /

com.ibm.websphere. * com.ibm.websphere.ssl *

Нотиг печатается там при получении этой проблемы SSL.

В файле: ss.client.props у нас есть:

com.ibm.ssl.protocol=TLSv1.2

Тот же сценарий был протестирован с другой конечной точкой REST (другой домен, запрос / ответ json), и с первой попытки сертификат был импортирован веб-консолью WAS, нет необходимости загружать его с URL-адреса.

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