Нераспознанное сообщение SSL, открытое текстовое соединение? Исключение



У меня есть 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?

1431   16  

16 ответов:

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

это связано с тем, что вы говорите с сервером HTTP, а не с сервером HTTPS. Вероятно, вы не использовали правильный номер порта для HTTPS.

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

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

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

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

можно найти в следующих: Свойства проекта - > (из левой панели )запуск / отладка / профиль - > нажмите (Изменить) сформировать правую панель -> настройка инструмента из левой панели -> снимите флажок (Использовать прокси) вариант.

Как сказал EJP, это сообщение показано из-за вызова протокола, отличного от https. Если вы уверены, что это HTTPS, проверьте настройки прокси-сервера обхода и в случае добавления url-адреса хоста веб-сервиса в список прокси-серверов обхода

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

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

Если соединение является тестом FTPS:

FTPSClient ftpClient = new FTPSClient (протокол, false);

протокол = TLS, SSL и false = isImplicit.

Я столкнулся с этим исключением при использовании Gmail.

для того, чтобы использовать Gmail, мне пришлось включите "Разрешить менее безопасные приложения".

этот параметр Gmail можно найти в https://www.google.com/settings/security/lesssecureapps после входа в учетную запись gmail.

в случае, если вы используете

  • Cisco AnyConnect Secure Mobility Agent
  • Cisco AnyConnect Web Security Agent

попробуйте остановить службу(ы).

Не знаю, почему я получил вниз голосовать за этот ответ. В нашей корпоративной сети это решение проблемы.

это сработало для меня сейчас, я изменил настройки моей учетной записи google, как показано ниже:

        System.out.println("Start");
        final String username = "[email protected]";
        final String password = "************";

        Properties props = new Properties();
        props.put("mail.smtp.auth", "true");
        props.put("mail.smtp.host", "smtp.gmail.com");
        props.put("mail.smtp.port", "465");
        props.put("mail.transport.protocol", "smtp");
        props.put("mail.smtp.starttls.enable", "true");
        props.put("mail.smtp.starttls.enable", "true");
        props.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");

         Session session = Session.getInstance(props,
                  new javax.mail.Authenticator() {
                    protected PasswordAuthentication getPasswordAuthentication() {
                        return new PasswordAuthentication(username, password);
                    }
                  });


        try {
            Transport transport=session.getTransport();
            Message message = new MimeMessage(session);
            message.setFrom(new InternetAddress("[email protected]"));//formBean.getString("fromEmail")
            message.setRecipients(Message.RecipientType.TO,InternetAddress.parse("[email protected]"));
            message.setSubject("subject");//formBean.getString(
            message.setText("mailBody");
            transport.connect();
            transport.send(message, InternetAddress.parse("[email protected]"));//(message);

            System.out.println("Done");

        } catch (MessagingException e) {
            System.out.println("e="+e);
            e.printStackTrace();
            throw new RuntimeException(e);

        }

хотя я включил SSL и TSL при запуске программы в этом ссылке из той же должности. Я трачу много времени, но чем я понял и нашел эту ссылку. И сделал 2 следующие шаги и настройки управления в google. :

  • отключить 2-ступенчатая проверка (пароль и OTP)

  • включение разрешить чтобы получить доступ к менее безопасным приложением ( разрешить менее безопасные приложения: НА.)

теперь я могу отправлять почту с помощью вышеуказанной программы.

Я получил ту же проблему, и она была решена путем установки "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);

надеюсь, что это будет работать.

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

mailSender.javaMailProperties.putAll([
                "mail.smtp.auth": "true",
                "mail.smtp.starttls.enable": "false",
                "mail.smtp.ssl.enable": "false",
                "mail.smtp.socketFactory.fallback": "true",
        ]);

еще одна причина, возможно, "доступ запрещен", возможно, вы не можете получить доступ к URI и получил страницу блокировки ответа для доступа к внутренней сети. Если вы не уверены, что ваша зона приложения нуждается в правиле брандмауэра,вы пытаетесь подключиться из терминала, командной строки. Для GNU / Linux или Unix вы можете попробовать выполнить эту команду и увидеть, что результат исходит из правила блокировки или действительно удаленного адреса:echo | nc -v yazilimcity.net 443

возможно, срок действия вашего сертификата по умолчанию истек. чтобы обновить его через консоль администратора перейдите " безопасность >SSL-сертификат и управление ключами > хранилища ключей и сертификаты > NodeDefaultKeyStore > личные сертификаты "выберите псевдоним" по умолчанию "и нажмите" Обновить " после того, как перезагрузка была.

Если вы запускаете процесс Java из командной строки на Java 6 или ранее, добавление этого переключателя решило проблему выше для меня:

- Dhttps.протоколы= "TLSv1"

Comments

    Ничего не найдено.