У меня есть клиент веб-сервиса, разработанный на Java 8. Я убедился, что хост, к которому я подключаюсь, использует TLSv1.2 через этот сайт. https://www.ssllabs.com/ssltest/
Я получаю сообщение об ошибке ниже при отправке выполнения почтового запроса:
javax.net.ssl.SSLException: получено фатальное предупреждение: protocol_version
Я добавил эту строку в начале моего кода. Не повезло.
System.setProperty ("https.protocols", "TLSv1.2");
Я также добавил аргумент JVM в свое приложение сервера WebSphere.
-Dhttps.protocols = TLSv1.2
Тем не менее, ошибка есть.
Я читал похожие вопросы, и я думаю, что по умолчанию в Java 8 используется TLSv1.2.
Ошибка продолжает появляться, поэтому я все еще добавил эти свойства.
Поэтому я не уверен, почему это происходит.
Вот мой код.
Loggers.general().debug(LOG, "### getOKTAToken()...");
String OKTAresponse = "";
OKTAResponse oktaReply = new OKTAResponse();
HttpClient httpClient = HttpClientBuilder.create().build();
Loggers.general().debug(LOG, "### ipsum");
//pass webservice URL
Loggers.general().debug(LOG, "URL:{}",Constants.URL);
HttpPost httpPost = new HttpPost(Constants.URL);
ArrayList<NameValuePair> postParameters;
//required keys for OKTA call
Loggers.general().debug(LOG, "Setting Body");
postParameters = new ArrayList<NameValuePair>();
postParameters.add(new BasicNameValuePair("client_id",
Constants.clientID));
postParameters.add(new BasicNameValuePair("client_secret",
Constants.clientSecret));
postParameters.add(new BasicNameValuePair("grant_type",
Constants.grantType));
try
{
Loggers.general().debug(LOG, "Setting entity...");
httpPost.setEntity(new UrlEncodedFormEntity(postParameters,"UTF-8"));
HttpResponse response = httpClient.execute(httpPost);
Ошибка указывает на последнюю строку.
HttpResponse response = httpClient.execute (httpPost);
У кого-нибудь есть идея, почему эта ошибка продолжает появляться? Нужно подкрепление.
Окружающая среда:
- Java 8
- WebSphere 8.5.5
- Windows 10