Ответ 1
Я думаю, что это связано с подключением установленный с клиентской машиной не защищен.
Это связано с тем, что вы разговариваете с HTTP-сервером, а не с сервером HTTPS. Возможно, вы не использовали правильный номер порта для HTTPS.
У меня есть пакет, совместимый с 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?
Я думаю, что это связано с подключением установленный с клиентской машиной не защищен.
Это связано с тем, что вы разговариваете с 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. Я решил проблему, сняв флажок в использовании свойств проекта proxy.
Вы можете найти его в следующем: Свойства проекта → (из левой панели) Запуск/Отладка/Профиль → Щелкните (изменить) с правой панели → Настройка инструмента с левой панели → снимите флажок (Использовать прокси).
Добавление этого в качестве ответа, поскольку это может помочь кому-то позже.
Мне пришлось заставить jvm использовать стек IPv4 для устранения ошибки. Мое приложение использовалось для работы в сети компании, но при подключении из дома оно дало то же исключение. Никакой прокси. Добавлен аргумент jvm -Djava.net.preferIPv4Stack=true
и все запросы https
ведут себя нормально.
Как сказал EJP, это сообщение показано из-за вызова протокола non-https. Если вы уверены, что это HTTPS, проверьте настройки прокси-сервера обхода и в случае, если ваш URL-адрес хоста webservice в списке прокси-сервера обхода
если соединение - тест FTPS:
FTPSClient ftpClient = новый FTPSClient (протокол, ложь);
protocol = TLS, SSL и false = isImplicit.
Я столкнулся с этим исключением при использовании Gmail.
Чтобы использовать Gmail, мне пришлось включить "Разрешить менее безопасные приложения".
Этот параметр Gmail можно найти по адресу https://www.google.com/settings/security/lesssecureapps после входа в учетную запись Gmail.
У меня похожая ошибка при использовании компонента верблюжьей почты для отправки сообщений электронной почты через 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:[email protected]&password=mypw&[email protected]&debugMode=true&mail.smtp.starttls.enable=true"/>
</route>
Если вы работаете локально с помощью 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();
}
Это работает для меня с помощью модульного теста.
Надеюсь, это поможет!
Теперь он работал у меня, я изменил настройку своей учетной записи 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.:
Отключите двухэтапную аутентификацию (пароль и OTP)
Включение доступа к менее безопасному приложению ( Разрешить менее безопасные приложения: ON.)
Теперь я могу отправлять почту, используя указанную выше программу.
Если вы работаете
попробуйте остановить сервис (ы).
Не уверен, почему я получил отрицательный голос за этот ответ. В нашей корпоративной сети это является решением проблемы.
Я получил ту же проблему, и она была решена путем установки "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 и следующий проп
mailSender.javaMailProperties.putAll([
"mail.smtp.auth": "true",
"mail.smtp.starttls.enable": "false",
"mail.smtp.ssl.enable": "false",
"mail.smtp.socketFactory.fallback": "true",
]);
Если вы запускаете процесс Java из командной строки на Java 6 или ранее, добавление этого переключателя решило проблему выше для меня:
-Dhttps.protocols = "TLSv1"
Возможно, срок действия вашего сертификата по умолчанию истек. обновить его через консоль администратора "Безопасность" SSL-сертификат и управление ключами > Хранилища ключей и сертификаты > NodeDefaultKeyStore > Личные сертификаты "выберите псевдоним по умолчанию и нажмите" обновить "после перезапуска WAS.
Другая причина, пожалуй, "доступ запрещен", возможно, вы не можете получить доступ к URI и получить страницу ответа блокировки для внутреннего доступа к сети. Если вы не уверены, что в вашем приложении требуется правило брандмауэра, вы пытаетесь подключиться к терминалу, командной строке.
Для GNU/Linux или Unix вы можете попробовать запустить эту команду и увидеть, что результат исходит из правила блокировки или действительно удаленного адреса: echo | nc -v yazilimcity.net 443