Получено фатальное предупреждение: handshake_failure webservice - PullRequest
0 голосов
/ 18 июня 2020

Я нанял веб-сервис, который отправляет sms-сообщения на мобильный телефон. Я попытался отправить почтовый запрос, но у меня возникла ошибка:

Exception in thread "main" javax.net.ssl.SSLHandshakeException: Received fatal alert: handshake_failure

Компания веб-сервиса предоставила мне всю информацию, необходимую для создания URL-адреса: пользователь, пароль, необходимые параметры, response et c

Параметр gsm - это номер мобильного телефона. msg - это сообщение для отправки.

import java.net.HttpURLConnection;
import javax.net.ssl.HttpsURLConnection;
import java.io.BufferedReader;
import java.io.DataOutputStream;
import java.io.InputStreamReader;

import java.net.URL;

public class Test3 {

    public static void main(String[] args) throws Exception {

        Test3 obj = new Test3();
        System.out.println("Testing 1 - Send Http POST request");
        obj.sendPost();
     } 

    private void sendPost() throws Exception {

        //
        String url = "https://...url/send";//(that url its just an example, its not the real)

        HttpsURLConnection httpClient = (HttpsURLConnection) new URL(url).openConnection();

        //add reuqest header
        httpClient.setRequestMethod("POST");
        httpClient.setRequestProperty("User-Agent", "Mozilla/5.0");
        httpClient.setRequestProperty("Accept-Language", "en-US,en;q=0.5");

        String urlParameters = "?user=TEST_USER&company=XXX&passwd=TEST_PWD&gsm=666000222&type=plus&msg=hello&sender=me";

        // Send post request
        httpClient.setDoOutput(true);
        try (DataOutputStream wr = new DataOutputStream(httpClient.getOutputStream())) {
            wr.writeBytes(urlParameters);
            wr.flush();
        }

        int responseCode = httpClient.getResponseCode();
        System.out.println("\nSending 'POST' request to URL : " + url);
        System.out.println("Post parameters : " + urlParameters);
        System.out.println("Response Code : " + responseCode);

        try (BufferedReader in = new BufferedReader(
                new InputStreamReader(httpClient.getInputStream()))) {

            String line;
            StringBuilder response = new StringBuilder();

            while ((line = in.readLine()) != null) {
                response.append(line);
            }

            System.out.println(response.toString());

        }

    }
}

Также, если я попытался получить доступ к вызову веб-службы, написав URL-адрес на панели навигации Mozilla Firefox, я получил эту ошибку:

Secure Ошибка подключения

Произошла ошибка во время подключения к 'url' узлу SSL не удалось согласовать приемлемый набор параметров безопасности.

Код ошибки: SSL_ERROR_HANDSHAKE_FAILURE_ALERT

Страница, на которой вы пытающиеся просмотреть, не могут быть отображены, потому что подлинность полученных данных не может быть проверена.

enter image description here

1 Ответ

0 голосов
/ 18 июня 2020

Учитывая, что рассматриваемый домен (pu sh .tempos21.com) работает для меня с браузером, но не работает для вас ни с приложением, ни с браузером, вполне вероятно, что это не проблема приложения или браузера но о вашей связи с целью. Я подозреваю, что где-то на пути есть брандмауэр или IPS для глубокой проверки, который разрешает начальное TCP-соединение, но затем блокирует трафик c после того, как цель известна из ClientHello (начало подтверждения TLS).

...