본문 바로가기

WAS/WebLogic

[WebLogic] WLS 10.3.6 - Ignoring the trusted CA certificate 에러 + Connection closed, EOF detected 에러

#. 에러 상황

WebLogic 로그에 아래와 같은 내용이 기록되고, 업무 페이지 출력이 안 되는 상황

Error 로그는 아니지만, 업무 페이지 출력이 되지 않는다.

<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.>

 

WEB 서버(OHS 12.2.1.3)에 SSL 인증서가 적용되어 있는 상황.

WEB 서버와 WAS 서버 간에 SSL 통신이 정상적으로 되지 못하고 있는 것으로 추측하였다.

 

구글에 Ignoring the trusted CA certificate 키워드로 검색해보았음.

 


 

#. 조치 방법

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 인증서를 정상적으로 인식하지 못하여

위와 같은 현상이 발생하는 것으로 확인된다.

 


 

#. 2023_06_22 추가 - JSSE Enabled 이후에 발생하는 다른 에러 상황

JSSE Enabled 이후에 다른 에러가 발생하는 경우가 있다.

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.servlet.internal.WebAppServletContext$ServletInvocationAction.wrapRun(WebAppServletContext.java:3750)
           at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:3714)
           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)

 

 

아래의 조치사항들을 시도해본다

 

1) TLS 호환성 문제로 인한 SSL handshake 에러인 경우

Oracle 문서 확인 (Doc ID 2310954.1)

weblogic 에서 사용할 TLS 버전명 지정  
-Dweblogic.security.SSL.minimumProtocolVersion=TLSv1.2

 

 

2) weblogic 자체 http handler가 아닌, java 자체 http handler를 사용해야 하는 경우

https://stackoverflow.com/questions/39408507/connection-closed-eof-detected

https://myoraclemadeeasy.wordpress.com/2015/04/22/javax-xml-ws-webserviceexception-java-io-ioexception-connection-closed-eof-detected/

-DUseSunHttpHandler=true
-Dssl.SocketFactory.provider=sun.security.ssl.SSLSocketFactoryImpl
-Dssl.ServerSocketFactory.provider=sun.security.ssl.SSLSocketFactoryImpl