java.net.SocketException : Connection reset 에러에 관하여...

조현준·2022년 5월 7일
0

Java

목록 보기
1/1
post-thumbnail

회사에서 새로운 인증서를 도입하기로 하여서 개발 중 에러가 발생하였다..

현재 개발 중인 프로젝트는 Java 1.6을 이용하고 있었는데 HttpUrlConnection을 이용한 통신을 이용하여

multipart/form-data을 던지는 방식으로 개발을 진행 중 해당 에러가 뜬것이었다....

네트워크 단 확인 결과 SYN을 정상적으로 던졌고 ACK를 받아야 하지만.. 돌아오는 값은 Reset이었으며 내부망 서버이기 때문에 에러가 뜬것이라 생각한 나는... 단방향 룰셋을 양방향으로 바꾸는 등 뻘짓아닌 뻘짓 이것저것을 해보았지만 통신은 이루어지지 않았다...

혹시나 하는 마음에 노트북으로 통신을 해보았지만 웬걸 노트북으로는 정상적으로 통신이 되는 것이었다...ㅎ

왜 잘되는지 정말 이해가 안돼서 구글링을 멈추지 않았다..

이틀 동안 고생하며 낸 결론은 이것이었다..

If the server you are communicating with is securely maintained you will have problems with Java 1.6 because it does only support the insecure versions of SSL/TLS (no TLS 1.1 and 1.2 support and only outdated ciphers).
Fix: Upgrade your Java version.

즉 java 1.6에서 TLS1.2 버전인 인증서가 위치한 서버와 통신을 하려 하였지만 안전하지 않은 버전이라고 인식하여 서버단에서 막으니 통신을 할 수 없다는 것이었다...

* JDK 1.6.0_111 이후 TLS1.1 지원, 1.6.0_121 이후 TLS 1.2 지원 (단, jsse.enableSNIExtension 등 옵션 설정은 불가능)

/* 프레임워크 내 시스템 설정 */
System.setProperty( "https.protocols", "TLSv1.1,TLSv1.2" );

/* 톰캣의 TLS 설정 */ 
-Dhttps.protocols=TLSv1.1,TLSv1.2

https://stackoverflow.com/questions/32326228/java-1-6-httpsurlconnection-java-net-socketexception-connection-reset

https://www.ateam-oracle.com/post/transport-level-security-tls-and-java

profile
WEB 개발자의 끄적끄적 개발일기

0개의 댓글