我有一个用Java 8开发的Web服务客户端。我已经验证了我要连接的主机通过此站点正在使用TLSv1.2。 https://www.ssllabs.com/ssltest/
发送执行后请求时出现以下错误:
javax.net.ssl.SSLException:收到致命警报:protocol_version
我已经在代码的开头添加了这一行。没运气。
System.setProperty(“ https.protocols”,“ TLSv1.2”);
我还在WebSphere服务器应用程序中添加了JVM参数。
-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响应= httpClient.execute(httpPost);有谁知道为什么这个错误不断出现?需要增援。
环境: