본문 바로가기
개발자이야기

[resin4.0] javax.net.ssl.SSLException: Received fatal alert: protocol_version 에러해결

by N의 블로그 2024. 12. 11.
728x90
반응형
SMALL

아래와 같은 환경에서 프로그램 실행 시 오류가 발생했다.

- 환경 : resin4, 자바7 - TLSv1.0 디폴트 설정

 

 

1. javax.net.ssl.SSLException: Received fatal alert: protocol_version

 

해당오류는 SSL/TLS 프로토콜 버전 문제로, 클라이언트와 연결하려는 서버간의 프로토콜 불일치로 발생하는 오류이다.

java7버전 시에는 TLSv1.0이 디폴트로 설정되어 있어서 추가적으로 작업을 해주어야 한다.

 

2. 해결방법으로는

  •  자바 8로 업그레이드하기소스코드가 예전버전이라 테스트없이 업그레이드하는데 문제가 있었다.
  • 코드내에서 SSL/TLS 버전을 설정하기
SSLContext sc = SSLContext.getInstance("TLSv1.2"); // TLSv1.2로 변경
  • java에서 system properties 에 v1.2 버전을 설정하기
java -Dhttps.protocols=TLSv1.2 -jar your-application.jar

 

 

resin4환경에서 resin.xml에 jvm 설정을 추가하고

    <server-default>
      <jvm-arg-line>-server -Xss512k -Xms4096m -Xmx4096m</jvm-arg-line>
      <jvm-arg-line>-XX:NewSize=1024m -XX:MaxNewSize=1024m -XX:PermSize=512m -XX:MaxPermSize=512m</jvm-arg-line>
      <jvm-arg>-Dcom.sun.management.jmxremote</jvm-arg>
      <jvm-arg>-Djava.net.preferIPv4Stack=true</jvm-arg>
      <jvm-arg>-verbose:gc</jvm-arg>
      <jvm-arg>-XX:+PrintGCTimeStamps</jvm-arg>
      <jvm-arg>-XX:+HeapDumpOnOutOfMemoryError</jvm-arg>
      <jvm-arg>-XX:-DisableExplicitGC</jvm-arg>
      <jvm-arg>-Dhttps.protocols=TLSv1,TLSv1.1,TLSv1.2</jvm-arg>

<server-default> 맨 밑줄 추가

 

java 소스코드에 강제 TLSv1.2를 설정하여 해결하였다.

SSLConnectionSocketFactory sslsf = new SSLConnectionSocketFactory(
		 SSLContexts.createDefault(),
		 new String[] { "TLSv1.2"},
		 null,
		 SSLConnectionSocketFactory.getDefaultHostnameVerifier());

 

 

 

 

참고링크

https://www.caucho.com/resin-4.0/admin/security-ssl.xtp

 

Resin 4.0 SSL support

OpenSSL works by having a signed public key that corresponds to your private key. This signed public key is called a certificate. A certificate is what is sent to the browser. You can create a self-signed certificate, or get a certificate that is signed by

www.caucho.com

 

 

 

 

 

728x90
반응형
LIST