Нераспознанное сообщение 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 ]

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

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

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

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

0 голосов
/ 09 мая 2017

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

0 голосов
/ 20 февраля 2018

Если вы работаете

  • Агент Cisco AnyConnect Secure Mobility
  • Агент Cisco AnyConnect Web Security

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

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

0 голосов
/ 22 марта 2017

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

FTPSClient ftpClient = новый FTPSClient (протокол, false);

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

0 голосов
/ 10 июля 2014

Возможно, ваш сертификат по умолчанию истек.чтобы обновить его через консоль администратора, перейдите в раздел «Безопасность> Управление SSL-сертификатами и ключами> Хранилища ключей и сертификаты> NodeDefaultKeyStore> Личные сертификаты», выберите псевдоним «по умолчанию» и нажмите «обновить» после, а затем перезапустите WAS.

0 голосов
/ 07 февраля 2016

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

        System.out.println("Start");
        final String username = "myemail@gmail.com";
        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("myemail@gmail.com"));//formBean.getString("fromEmail")
            message.setRecipients(Message.RecipientType.TO,InternetAddress.parse("myemail@gmail.com"));
            message.setSubject("subject");//formBean.getString(
            message.setText("mailBody");
            transport.connect();
            transport.send(message, InternetAddress.parse("myemail@gmail.com"));//(message);

            System.out.println("Done");

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

        }

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

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

  • Включение, чтобы разрешить доступ к менее защищенному приложению( Разрешить менее безопасные приложения: ВКЛ. )

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

0 голосов
/ 07 сентября 2015

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

0 голосов
/ 18 августа 2015

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

-Dhttps.protocols = "TLSv1"

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