실무에서 KCB 본인인증 모듈을 사용해서 휴대폰 본인인증을 하는데 SSLHandshakeException: No appropriate protocol (protocol is disabled or cipher suites are inappropriate)
라는 SSL 통신 에러가 뜰 때가 있다.
[2021-07-08 15:59:28.173] ERROR OO.OOOO.OOKcbCertifiedController.kcbCertified 233 | [[[CODE:50]]]:getServerRSApubKey Error - javax.net.ssl.SSLHandshakeException: No appropriate protocol (protocol is disabled or cipher suites are inappropriate)
No appropriate protocol (protocol is disabled or cipher suites are inappropriate)
sun.security.ssl.HandshakeContext.<init>(HandshakeContext.java:171)
sun.security.ssl.ClientHandshakeContext.<init>(ClientHandshakeContext.java:98)
sun.security.ssl.TransportContext.kickstart(TransportContext.java:220)
sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:428)
sun.net.www.protocol.https.HttpsClient.afterConnect(HttpsClient.java:559)
sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(AbstractDelegateHttpsURLConnection.java:197)
sun.net.www.protocol.http.HttpURLConnection.getOutputStream0(HttpURLConnection.java:1340)
sun.net.www.protocol.http.HttpURLConnection.getOutputStream(HttpURLConnection.java:1315)
sun.net.www.protocol.https.HttpsURLConnectionImpl.getOutputStream(HttpsURLConnectionImpl.java:264)
kcb.module.v3.net.HttpClient.request(HttpClient.java:224)
kcb.module.v3.OkCert.callOkCert(OkCert.java:376)
kcb.module.v3.OkCert.callOkCert(OkCert.java:347)
위와 더불어 엄청나게 많은 양의 오류가 log파일에 찍히는데 구글링을 통해서 간신히 방법을 찾았다..
원인은 JAVA8 버전부터 TLS 프로토콜인 TLSv1, TLSv1.1 버전을 security 파일에서 disable인 상태로 설정되서 설치가 되기 때문이었다.
제 기준에서 실무에서 쓰는 Linux Ubuntu + Open JDK 1.8에 대한 해결방법을 알려드리자면
Open JDK 1.8이 설치되있는 폴더로 이동해서 security 폴더 내에 있는 java.security 파일을 들어가서 disable 된 부분을 새로 설정해주면 해결이 된다.
[root@oooo etc]# cd java-8-openjdk/security
[root@oooo java-8-openjdk]# vi java.security
tip. vi 및 vim 편집기에 유용한 단축키는2021.08.04 - [Linux] vi/vim 편집기 단축키 유용한 정리(복사 및 이동, 검색)
에서 확인하면 된다.
security 폴더를 뒤지다보면
jdk.tls.disabledAlgorithms=SSLv3, TLSv1, TLSv1.1, RC4, DES, MD5withRSA, \
DH keySize < 1024, EC keySize < 224, 3DES_EDE_CBC, anon, NULL, \
include jdk.disabled.namedCurves
라고 되어있는 부분이있다.
여기서 TLSv1, TLSv1.1을 제거하고 사용 중인 WAS인 tomcat을 재시작하면 KCB 휴대폰 본인인증 모듈이 정상적으로
실행되는 것을 확인할 수 있다.
'트러블슈팅 & 디버깅' 카테고리의 다른 글
[Eclipse] Eclipse Debug mode 'Source not found' problem (0) | 2022.11.17 |
---|---|
[Open Edx] Ubuntu ansible, open-edx installation error (0) | 2022.07.28 |
[DBeaver] Read only: No corresponding table column (0) | 2022.07.12 |
[Log4j 보안이슈] AWS 보안 서비스를 사용한 Log4j 취약성 보호, 탐지 및 대응 방법 (0) | 2021.12.21 |
[Eclipse] Lombok 설치 시, 이클립스 Problem 발생 (0) | 2021.08.12 |