Я почувствовал, что столкнулся со странной проблемой, я написал основной Java-клиент Java без SSLContext и, когда я запускаю программу для вызова службы REST, она начинала давать сбой с приведенным ниже исключением. Однако, когда я добавил SSLContext к клиенту, он прошел, и я вижу ответ.
Initial Code without SSLContext :
String url = "https://URL";
URL obj = new URL(url);
HttpsURLConnection con = (HttpsURLConnection) obj.openConnection();
con.setRequestMethod("POST");
con.setRequestProperty("CONTENT-TYPE", "application/json");
String request = "{ json Request }";
con.setDoOutput(true);
DataOutputStream wr = new DataOutputStream(con.getOutputStream());
wr.write(request.getBytes());
wr.flush();
wr.close();
int responseCode = con.getResponseCode();
System.out.println("Response Code : " + responseCode);
Исключение:
javax.net.ssl.SSLHandshakeException: получено фатальное предупреждение: handshake_failure
During SSL debugging it is found that client server sends TSLv1.2 during ClientHello, however i dont see a ServerHello in return.
But when the below SSL code error disappeared
SSLContext sc = SSLContext.getInstance("TLSv1.2");
sc.init(null, null, new java.security.SecureRandom());
con.setSSLSocketFactory(sc.getSocketFactory());
Помогите мне понять, что происходит, если я не установил SSLContext и поведение при добавлении SSLContext.