#. 참고 글
https://stackoverflow.com/questions/39408507/connection-closed-eof-detected
https://recordsoflife.tistory.com/299
#. 참고 Oracle 문서
Doc ID 2310954.1
#. 에러 상황
WebLogic 측에서 외부 서버를 호출 시, 호출 대상 서버에 SSL 인증서가 설치되어 있을 경우가 있는데,
hostname verification 과정에서 신뢰할 수 없는 hostname 으로 인식되어 에러가 발생하는 경우가 있다.
Error 가 아닌 Notice 로그이지만, 업무 페이지 출력이 되지 않는다.
<Notice> <Security> <BEA-090898>
<Ignoring the trusted CA certificate "CN=***** (see current address at *****".
The loading of the trusted certificate list raised a certificate parsing exception PKIX:
Unsupported OID in the AlgorithmIdentifier object: 1.2.840.113549.1.1.11.>
java.io.IOException: Connection closed, EOF detected
at weblogic.socket.JSSEFilterImpl.handleUnwrapResults(JSSEFilterImpl.java:545)
at weblogic.socket.JSSEFilterImpl.unwrapAndHandleResults(JSSEFilterImpl.java:462)
at weblogic.socket.JSSEFilterImpl.doHandshake(JSSEFilterImpl.java:82)
at weblogic.socket.JSSEFilterImpl.doHandshake(JSSEFilterImpl.java:66)
at weblogic.socket.JSSEFilterImpl.doHandshake(JSSEFilterImpl.java:61)
at weblogic.socket.JSSEFilterImpl.write(JSSEFilterImpl.java:396)
at weblogic.socket.JSSESocket$JSSEOutputStream.write(JSSESocket.java:89)
at java.io.BufferedOutputStream.flushBuffer(BufferedOutputStream.java:82)
at java.io.BufferedOutputStream.flush(BufferedOutputStream.java:140)
at java.io.FilterOutputStream.flush(FilterOutputStream.java:140)
at weblogic.net.http.HttpURLConnection.writeRequests(HttpURLConnection.java:191)
at weblogic.net.http.HttpURLConnection.getInputStream(HttpURLConnection.java:411)
at weblogic.net.http.SOAPHttpsURLConnection.getInputStream(SOAPHttpsURLConnection.java:37)
at jsp_servlet._total_search.__search_cic.searchUserList2(__search_cic.java:207)
at jsp_servlet._total_search.__search_cic._jspService(__search_cic.java:608)
at weblogic.servlet.jsp.JspBase.service(JspBase.java:34)
at weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:227)
at weblogic.servlet.internal.StubSecurityHelper.invokeServlet(StubSecurityHelper.java:125)
at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:301)
at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:184)
at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)
at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:120)
at weblogic.servlet.internal.WebAppServletContext.securedExecute(WebAppServletContext.java:2283)
at weblogic.servlet.internal.WebAppServletContext.execute(WebAppServletContext.java:2182)
at weblogic.servlet.internal.ServletRequestImpl.run(ServletRequestImpl.java:1493)
at weblogic.work.ExecuteThread.execute(ExecuteThread.java:263)
at weblogic.work.ExecuteThread.run(ExecuteThread.java:221)
WebLogic 버전에 따라 아래와 같이 조치해본다.
WebLogic 11g (10.3.6)
JSSE SSL Enable 옵션 활성화
WebLogic 12c 이상 (1번부터 순차대로 시도해보기)
1. 호스트 이름 확인 비활성화 (Admin Console 에서 옵션 수정)
2. -DUseSunHttpHandler=true
-Dweblogic.security.SSL.minimumProtocolVersion=TLSv1.2
#. WebLogic 11g (10.3.6)
WebLogic Admin Console 접속
JSSE SSL Enable 옵션 활성화
SSL 및 TLS 프로토콜을 구현할 프로그램을
JSSE(Java Secure Socket Extension) 로 변경하는 옵션.
WebLogic 10.3.6 기준, Default 세팅에서는 Certicom 이라는 프로그램을 사용한다.
상위 버전인 12cR1 부터 Default로 JSSE를 사용하도록 변경되었다.
JSSE SSL 사용 여부 선택 옵션 자체가 사라져있음.
Certicom 프로그램은 출시된지 오래되었다고 한다. (정확한 release 날짜는 확인 못하였음)
이로 인해 12cR1 버전에서부터 Certicom을 사용하지 않도록 변경되었을 것으로 추측.
Certicom 프로그램이 최신 SSL 인증서를 정상적으로 인식하지 못하여
위와 같은 현상이 발생하는 것으로 확인된다.
#. WebLogic 12c 이상
WebLogic 11g 에서도 JSSE Enabled 옵션 수정 이후에도 문제 해결이 되지 않는다면
아래의 1번 조치사항부터 순차대로 시도해본다.
1) "호스트 이름 확인" 비활성화
1. 서버 인스턴스 목록 화면 이동
2. 설정 변경 대상 인스턴스 이름 클릭
3. SSL 탭으로 이동
4. 화면 하단의 “고급” 클릭
5. 호스트 이름 확인 -> “없음” 으로 수정
자바 옵션으로도 가능하다 -Dweblogic.security.SSL.ignoreHostnameVerification=true
2) weblogic 자체 http handler가 아닌, java 자체 http handler를 사용하도록 조치
아래 jvm option을 추가한다.
-DUseSunHttpHandler=true
-Dssl.SocketFactory.provider=sun.security.ssl.SSLSocketFactoryImpl
-Dssl.ServerSocketFactory.provider=sun.security.ssl.SSLSocketFactoryImpl
(2024_12_04 - WebLogic12.2.1.4 환경에서 해당 옵션 설정하여 에러 해결하였음)
3) TLS 버전 옵션 추가
대부분의 환경에서 TLS1.2 미만은 사용하지 않는다.
TLS1.2 이상만 사용하도록 jvm option을 추가해본다.
비교적 최근의 jdk에는 이미 java 레벨에서 TLS1.2 이상만 허용하도록 설정되어있기는 하지만,
혹시 모르니까 시도해보는 옵션.
weblogic 에서 사용할 TLS 버전명 지정
-Dweblogic.security.SSL.minimumProtocolVersion=TLSv1.2
'WAS - WebLogic > 각종 설정, 에러 조치' 카테고리의 다른 글
[WebLogic] Admin Console 특정 IP만 접속 가능하도록 제한 (0) | 2022.07.21 |
---|---|
[WebLogic] server log 및 access log 경로 변경 가이드 (0) | 2022.04.20 |
[WebLogic] 운영체제 별 WebLogic 점검 방법 정리 (0) | 2022.03.14 |
[weblogic] HTTPS로 호출했는데 HTTP로 리다이렉트 되는 현상 (0) | 2021.11.08 |
[weblogic] IBM JAVA - Large Object Area 사이즈 튜닝 (0) | 2021.10.15 |