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
'개발자이야기' 카테고리의 다른 글
.class 디컴파일 .class 파일을 java 파일로 디컴파일 (0) | 2025.02.26 |
---|---|
[Oracle] ORA-01401 해결방법 : 컬럼 사이즈 변경 (0) | 2025.02.11 |
리눅스 접속자수 확인 (0) | 2024.08.11 |
[javascript][jquery] selectbox option 선택 (0) | 2023.11.30 |
ERR_SSL_PROTOCOL_ERROR 에러 (0) | 2023.11.06 |