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