Нераспознанное сообщение SSL, текстовое соединение? исключение - PullRequest
136 голосов
/ 30 июня 2011

У меня есть java-совместимый пакет для общения с сервером https в сети. Запуск компиляции дает следующее исключение:

javax.net.ssl.SSLException: Unrecognized SSL message, plaintext connection?
    at com.sun.net.ssl.internal.ssl.InputRecord.handleUnknownRecord(Unknown Source)
at com.sun.net.ssl.internal.ssl.InputRecord.read(Unknown Source)
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.readRecord(Unknown Source)
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.performInitialHandshake(Unknown Source)
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.startHandshake(Unknown Source)
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.startHandshake(Unknown Source)
at sun.net.www.protocol.https.HttpsClient.afterConnect(Unknown Source)
at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(Unknown Source)
at sun.net.www.protocol.https.HttpsURLConnectionImpl.connect(Unknown Source)

Я думаю, это связано с тем, что соединение с клиентским компьютером не является безопасным. Есть ли способ настроить локальный компьютер или порты для подключения к удаленному серверу https?

Ответы [ 18 ]

197 голосов
/ 30 июня 2011

Я думаю, что это связано с подключением с установленным клиентом машина небезопасно.

Это связано с тем, что вы общаетесь с HTTP-сервером, а не с HTTPS-сервером. Возможно, вы не использовали правильный номер порта для HTTPS.

16 голосов
/ 19 марта 2013
javax.net.ssl.SSLException: Unrecognized SSL message, plaintext connection?

У вас должно быть локальное имя домена SMTP, которое свяжется с почтовым сервером и установит новое соединение, а также вы должны изменить свойство SSL в ваших программах ниже

javax.net.ssl.SSLException: Unrecognized SSL message, plaintext connection

 props.put("mail.smtp.socketFactory.fallback", "true"); // Should be true
8 голосов
/ 09 апреля 2013

Я получил то же сообщение об ошибке, когда забыл войти в брандмауэр компании перед выполнением запроса POST через прокси.

3 голосов
/ 03 февраля 2014

Я получил ту же ошибку.это было, потому что я получал доступ к порту https через http. Проблема решилась, когда я изменил http на https.

1 голос
/ 10 августа 2014

Я сталкиваюсь с той же проблемой из приложения Java, встроенного в среду разработки Jdevelopr 11.1.1.7. Я решил проблему, сняв флажок с использованием прокси-формы Свойства проекта.

Вы можете найти его в следующем: Свойства проекта -> (из левой панели) Выполнить / Отладка / Профиль -> Щелкните (изменить) на правой панели -> Настройка инструмента на левой панели -> снимите флажок (Использовать прокси).

1 голос
/ 06 февраля 2017

Добавление этого в качестве ответа, так как это может помочь кому-то позже.

Мне пришлось заставить jvm использовать стек IPv4 для устранения ошибки. Мое приложение раньше работало в сети компании, но при подключении из дома оно давало то же исключение. Никакой прокси не задействован. Добавлен аргумент jvm -Djava.net.preferIPv4Stack=true и все https запросы работали нормально.

0 голосов
/ 05 июня 2019

Если вы работаете локально, используя Spring, я бы предложил использовать:

@Bean
public AmazonDynamoDB amazonDynamoDB() throws IOException {
    return AmazonDynamoDBClientBuilder.standard()
            .withCredentials(
                    new AWSStaticCredentialsProvider(
                            new BasicAWSCredentials("fake", "credencial")
                    )
            )
            .withClientConfiguration(new ClientConfigurationFactory().getConfig().withProtocol(Protocol.HTTP))
            .withEndpointConfiguration(new AwsClientBuilder.EndpointConfiguration("localhost:8443", "central"))
            .build();
}

Это работает для меня с помощью модульного теста.

Надеюсь, это поможет!

0 голосов
/ 27 марта 2018

Я решил свою проблему, используя порт 25 и следующий проп

mailSender.javaMailProperties.putAll([
                "mail.smtp.auth": "true",
                "mail.smtp.starttls.enable": "false",
                "mail.smtp.ssl.enable": "false",
                "mail.smtp.socketFactory.fallback": "true",
        ]);
0 голосов
/ 15 января 2019

У меня похожая ошибка при использовании верблюжьего почтового компонента для отправки сообщений электронной почты через gmail smtp.

Решение было изменено с порта TLS (587) на порт SSL (465), как показано ниже:

<route id="sendMail">
  <from uri="jason:toEmail"/>
  <convertBodyTo type="java.lang.String"/>
  <setHeader headerName="Subject"><constant>Something</constant></setHeader>
  <to uri="smtps://smtp.gmail.com:465?username=myemail@gmail.com&amp;password=mypw&amp;to=someemail@gmail.com&amp;debugMode=true&amp;mail.smtp.starttls.enable=true"/>
</route>
0 голосов
/ 06 марта 2018

У меня возникла та же проблема, и она была решена путем установки «proxyUser» и «proxyPassword» в системных свойствах.

System.setProperty("http.proxyUser", PROXY_USER);
System.setProperty("http.proxyPassword", PROXY_PASSWORD);

вместе с "proxyHost" и "proxyPort"

System.setProperty("http.proxyHost", PROXY_ADDRESS);
System.setProperty("http.proxyPort", PROXY_PORT);

Надеюсь, это сработает.

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