执行服务请求 OSB/WEBLOGIC 时出现 SSL 错误 (unexpected_message)

SSL error (unexpected_message) when performing a service request OSB/WEBLOGIC

我在我的 OSB 域 (Weblogic 10.3.6.0) 中执行服务请求时遇到问题。 我收到以下 SSL 错误:

####<Nov 30, 2020 12:23:09 PM CET> <Debug> <SecuritySSL> < <[ACTIVE] ExecuteThread: '5' for queue: 'weblogic.kernel.Default (self-tuning)'> <<WLS Kernel>>
 <> <f9b85e75fb72f832:1390a2e1:1759de16345:-7fff-0000000000157332> <1606735389344> <BEA-000000> <[Thread[[ACTIVE] ExecuteThread: '5' for queue: 'weblogic.kernel.Default (self-tuning)',5,Pooled Thre
ads]]weblogic.security.SSL.jsseadapter: SSLENGINE: Exception occurred during SSLEngine.unwrap(ByteBuffer,ByteBuffer[]).
javax.net.ssl.SSLException: Received fatal alert: unexpected_message
        at sun.security.ssl.Alerts.getSSLException(Unknown Source)
        at sun.security.ssl.SSLEngineImpl.fatal(Unknown Source)
        at sun.security.ssl.SSLEngineImpl.fatal(Unknown Source)
        at sun.security.ssl.SSLEngineImpl.recvAlert(Unknown Source)
        at sun.security.ssl.SSLEngineImpl.readRecord(Unknown Source)
        at sun.security.ssl.SSLEngineImpl.readNetRecord(Unknown Source)
        at sun.security.ssl.SSLEngineImpl.unwrap(Unknown Source)
        at javax.net.ssl.SSLEngine.unwrap(Unknown Source)
        at weblogic.security.SSL.jsseadapter.JaSSLEngine.run(JaSSLEngine.java:134)
        at weblogic.security.SSL.jsseadapter.JaSSLEngine.doAction(JaSSLEngine.java:732)
        at weblogic.security.SSL.jsseadapter.JaSSLEngine.unwrap(JaSSLEngine.java:132)
        at weblogic.socket.JSSEFilterImpl.unwrap(JSSEFilterImpl.java:511)
        at weblogic.socket.JSSEFilterImpl.unwrapAndHandleResults(JSSEFilterImpl.java:454)
        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(Unknown Source)
        at java.io.BufferedOutputStream.flush(Unknown Source)
        at java.io.FilterOutputStream.flush(Unknown Source)
        at weblogic.net.http.HttpURLConnection.writeRequests(HttpURLConnection.java:191)
        at weblogic.net.http.HttpURLConnection.getOutputStream(HttpURLConnection.java:296)
        at com.bea.wli.sb.transports.http.HttpOutboundMessageContext.setRequestPayload(HttpOutboundMessageContext.java:351)
        at com.bea.wli.sb.transports.http.HttpOutboundMessageContext.send(HttpOutboundMessageContext.java:398)
        at com.bea.wli.sb.transports.http.wls.HttpTransportProvider.sendMessageAsync(HttpTransportProvider.java:211)
        at sun.reflect.GeneratedMethodAccessor556.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
        at java.lang.reflect.Method.invoke(Unknown Source)
        at com.bea.wli.sb.transports.Util.invoke(Util.java:83)
        at com.sun.proxy.$Proxy146.sendMessageAsync(Unknown Source)
        at com.bea.wli.sb.transports.LoadBalanceFailoverListener.sendMessageAsync(LoadBalanceFailoverListener.java:148)
        at com.bea.wli.sb.transports.LoadBalanceFailoverListener.sendMessageToServiceAsync(LoadBalanceFailoverListener.java:510)
        at com.bea.wli.sb.transports.LoadBalanceFailoverListener.sendMessageToService(LoadBalanceFailoverListener.java:445)
        at com.bea.wli.sb.transports.TransportManagerImpl.sendMessageToService(TransportManagerImpl.java:582)
        at com.bea.wli.sb.transports.TransportManagerImpl.sendMessageAsync(TransportManagerImpl.java:449)
        at com.bea.wli.sb.test.service.ServiceMessageSender.send0(ServiceMessageSender.java:416)
        at com.bea.wli.sb.test.service.ServiceMessageSender.access[=12=]0(ServiceMessageSender.java:91)
        at com.bea.wli.sb.test.service.ServiceMessageSender.run(ServiceMessageSender.java:149)
        at com.bea.wli.sb.test.service.ServiceMessageSender.run(ServiceMessageSender.java:147)
        at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:363)
        at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:146)
        at com.bea.wli.sb.security.WLSSecurityContextService.runAs(WLSSecurityContextService.java:55)
at com.bea.wli.sb.test.service.ServiceProcessor.invoke(ServiceProcessor.java:486)
        at com.bea.wli.sb.test.TestServiceImpl.invoke(TestServiceImpl.java:172)
        at com.bea.wli.sb.test.client.ejb.TestServiceEJBBean.invoke(TestServiceEJBBean.java:167)
        at com.bea.wli.sb.test.client.ejb.TestService_sqr59p_EOImpl.__WL_invoke(Unknown Source)
        at weblogic.ejb.container.internal.SessionRemoteMethodInvoker.invoke(SessionRemoteMethodInvoker.java:40)
        at com.bea.wli.sb.test.client.ejb.TestService_sqr59p_EOImpl.invoke(Unknown Source)
        at com.bea.wli.sb.test.client.ejb.TestService_sqr59p_EOImpl_WLSkel.invoke(Unknown Source)
        at weblogic.rmi.internal.BasicServerRef.invoke(BasicServerRef.java:667)
        at weblogic.rmi.cluster.ClusterableServerRef.invoke(ClusterableServerRef.java:230)
        at weblogic.rmi.internal.BasicServerRef.run(BasicServerRef.java:522)
        at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:363)
        at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:146)
        at weblogic.rmi.internal.BasicServerRef.handleRequest(BasicServerRef.java:518)
        at weblogic.rmi.internal.wls.WLSExecuteRequest.run(WLSExecuteRequest.java:118)
        at weblogic.work.ExecuteThread.execute(ExecuteThread.java:263)
        at weblogic.work.ExecuteThread.run(ExecuteThread.java:221)

我使用 weblogic 12.2.1.4 创建了一个不同的域并导入了相同的证书,并且工作正常。

有人知道为什么会这样吗?

干杯

使用以下选项在客户端调用您的 java class:

java -Dweblogic.ssl.SSLv2HelloEnabled=false -Djdk.tls.client.protocols="TLSv1.2" JAVA_CLASS_NAME

Disable the unwanted protocols in jdk. This has to be done on both sides client and server-side java

修改$JAVA_HOME/jre/lib/security/java.security,在禁用算法中添加如下内容。

jdk.tls.disabledAlgorithms=SSLv2Hello, SSLv3, TLSv1

Add -Dweblogic.security.SSL.minimumProtocolVersion=TLSv1.2 in in setDomainEnv.sh file

重新启动服务器。