Java 1.7 버전에서 TLSv1.2 사용
// server가 TLS 1.2 버전만 사용할 때 Java의 경우 JDK 1.8 부터 TLS 1.2 가 기본 버전이므로 문제가 없지만,
// 이전 JDK 버전을 사용하는 client의 경우는 예외가 발생
// JDK 1.7 버전인경우 하 TLS버전 설정 필요.
System.setProperty("https.protocols", "TLSv1,TLSv1.1,TLSv1.2");
URL url= new URL("https//111.222.333/44");
conn = (HttpURLConnection) url.openConnection();
Java 1.7 에서는 기본값으로 SSL 암호화 통신시 TLSv1.0을 지원합니다.
IF 통신시 "sslhandshakeexception" 이란 예외가 발생한다면 서버에서 지원하는 TLS버전과
자바 클라이언트의 TLS버전이 맞지 않아 발생하는 오류임.
서버에서 TLSv1.2만 지원하는데 클라이언트가 v1.0이라면 위와 같은 예외를 던지며 SSL연결을 맺지 않습니다.
Java 1.8 부터는 TLSv1.2를 기본으로 지원하지만 그 하위 버전에서는 v1.0을 기본으로 합니다.
위와 같은 예외가 발생하면 가장 만만하게 해결할 방법은 Java 버전을 8버전으로 올리는 방법이 있지만..
통신시 아래 한줄 추가해주면, java하위버전에서도 TLSv1.2를 지원하게 된다.
System.setProperty("https.protocols", "TLSv1,TLSv1.1,TLSv1.2");