【问题标题】:ArrayIndexOutOfBoundsException while opening stream from SSL-secured WSDL从受 SSL 保护的 WSDL 打开流时出现 ArrayIndexOutOfBoundsException
【发布时间】:2015-11-15 07:24:48
【问题描述】:

在每次 SSL 安全的 Web 服务调用中,我都会收到一个令人困惑的 ArrayIndexOutOfBoundsException,我不知道是什么原因。一夜之间没有对代码进行任何相关更改的异常出现了,我很困惑。

谁能告诉我如何修复这个糟糕的错误?

环境:

  • Tomcat7
  • IBM JDK 6

堆栈跟踪:

com.sun.xml.ws.client.ClientTransportException: HTTP transport error: javax.net.ssl.SSLException: java.lang.ArrayIndexOutOfBoundsException
    at com.sun.xml.ws.transport.http.client.HttpClientTransport.getOutput(HttpClientTransport.java:132)
    at com.sun.xml.ws.transport.http.client.HttpTransportPipe.process(HttpTransportPipe.java:256)
    at com.sun.xml.ws.transport.http.client.HttpTransportPipe.processRequest(HttpTransportPipe.java:184)
    at com.sun.xml.ws.transport.DeferredTransportPipe.processRequest(DeferredTransportPipe.java:137)
    at com.sun.xml.ws.api.pipe.Fiber.__doRun(Fiber.java:641)
    at com.sun.xml.ws.api.pipe.Fiber._doRun(Fiber.java:600)
    at com.sun.xml.ws.api.pipe.Fiber.doRun(Fiber.java:585)
    at com.sun.xml.ws.api.pipe.Fiber.runSync(Fiber.java:482)
    at com.sun.xml.ws.client.Stub.process(Stub.java:323)
    at com.sun.xml.ws.client.sei.SEIStub.doProcess(SEIStub.java:161)
    at com.sun.xml.ws.client.sei.SyncMethodHandler.invoke(SyncMethodHandler.java:113)
    at com.sun.xml.ws.client.sei.SyncMethodHandler.invoke(SyncMethodHandler.java:93)
    at com.sun.xml.ws.client.sei.SEIStub.invoke(SEIStub.java:144)
    at $Proxy294.liefereKonfiguration(Unknown Source)
    at at.gv.bmf.efsz.vkps.client.lieferekonfiguration.impl.LiefereKonfigurationServiceClientImpl.updateKonfReader(LiefereKonfigurationServiceClientImpl.java:279)
    at at.gv.bmf.efsz.vkps.client.lieferekonfiguration.impl.LiefereKonfigurationServiceClientImpl.initiateUpdate(LiefereKonfigurationServiceClientImpl.java:205)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:60)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:37)
    at java.lang.reflect.Method.invoke(Method.java:611)
    at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:318)
    at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:183)
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:150)
    at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:110)
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
    at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:202)
    at $Proxy293.initiateUpdate(Unknown Source)
    at at.gv.bmf.efsz.vkps.client.lieferekonfiguration.impl.VKPSClientInitializer.initVKPSClient(VKPSClientInitializer.java:23)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:60)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:37)
    at java.lang.reflect.Method.invoke(Method.java:611)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeCustomInitMethod(AbstractAutowireCapableBeanFactory.java:1581)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1522)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1452)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:519)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:456)
    at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:294)
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:225)
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:291)
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:193)
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:585)
    at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:913)
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:464)
    at org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.java:385)
    at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:284)
    at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:111)
    at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4723)
    at org.apache.catalina.core.StandardContext$1.call(StandardContext.java:5226)
    at org.apache.catalina.core.StandardContext$1.call(StandardContext.java:5221)
    at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:314)
    at java.util.concurrent.FutureTask.run(FutureTask.java:149)
    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:897)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:919)
    at java.lang.Thread.run(Thread.java:736)
Caused by: javax.net.ssl.SSLException: java.lang.ArrayIndexOutOfBoundsException
    at com.ibm.jsse2.n.a(n.java:27)
    at com.ibm.jsse2.tc.a(tc.java:328)
    at com.ibm.jsse2.tc.a(tc.java:386)
    at com.ibm.jsse2.tc.a(tc.java:278)
    at com.ibm.jsse2.tc.a(tc.java:298)
    at com.ibm.jsse2.tc.startHandshake(tc.java:337)
    at com.ibm.net.ssl.www2.protocol.https.c.afterConnect(c.java:23)
    at com.ibm.net.ssl.www2.protocol.https.d.connect(d.java:57)
    at sun.net.www.protocol.http.HttpURLConnection.getOutputStream(HttpURLConnection.java:1024)
    at com.ibm.net.ssl.www2.protocol.https.b.getOutputStream(b.java:56)
    at com.sun.xml.ws.transport.http.client.HttpClientTransport.getOutput(HttpClientTransport.java:120)
    ... 54 more
Caused by: java.lang.ArrayIndexOutOfBoundsException
    at com.ibm.crypto.provider.TlsPrfGenerator.a(Unknown Source)
    at com.ibm.crypto.provider.TlsPrfGenerator.a(Unknown Source)
    at com.ibm.crypto.provider.TlsPrfGenerator.a(Unknown Source)
    at com.ibm.crypto.provider.TlsMasterSecretGenerator.engineGenerateKey(Unknown Source)
    at javax.crypto.KeyGenerator.generateKey(Unknown Source)
    at com.ibm.jsse2.gb.b(gb.java:268)
    at com.ibm.jsse2.gb.a(gb.java:131)
    at com.ibm.jsse2.hb.a(hb.java:216)
    at com.ibm.jsse2.hb.a(hb.java:71)
    at com.ibm.jsse2.gb.n(gb.java:142)
    at com.ibm.jsse2.gb.a(gb.java:95)
    at com.ibm.jsse2.tc.a(tc.java:244)
    at com.ibm.jsse2.tc.g(tc.java:206)
    at com.ibm.jsse2.tc.a(tc.java:165)
    ... 60 more

【问题讨论】:

  • Websphere 8.5、Jersey 1.12 存在相同问题。 Web 服务调用在没有 SSL 的情况下也能正常工作

标签: web-services tomcat ssl indexoutofboundsexception


【解决方案1】:

您似乎正在使用IBMJSSE2 Provider 进行 SSL 通信。

有一个非常相似的问题已经修复: http://www-01.ibm.com/support/docview.wss?crawler=1&uid=swg1IV73472

APAR 名称:IV73472:从 TLSV1 和 TLSV1.1 中未消化的 2048 位 DH 密钥生成的大型预主密钥

问题总结:使用TLSv1或TLSv1.1时,大的pre-master secret 从 2048 位 DH 密钥生成的未正确散列以导出 主要秘密。

本地修复:禁用使用 DH/DHE 密钥交换的密码套件。

问题结论:对 IBMJSSE2 和 IBMJCE 提供程序进行了修复,以处理 TLSv1 和 TLSv1.1 中的大型 pre-master secret 相关的 Hursley RTC 问题报告为 93670 和 94644 相关的 Austin CMVC 缺陷是 116692 和 116765 受影响的 JVM:Java 6.0、Java 626、Java 7.0、Java 727 和 Java 8 该修复针对 Java 6.0 SR16FP7、Java 626 SR8FP7、 Java 7.0 SR9FP10、Java 727 SR3FP10 和 Java 8 SR1FP10 受影响的 jar 是“ibmjsseprovider2.jar”和 “ibmjceprovider.jar”。 受影响版本的 ibmjceprovider.jar 的构建级别 是“20150604”。 受影响的 ibmjsseprovider2.jar 的构建级别 发布是“20150604”

尝试升级 ibmjsseprovider2.jar 库。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-14
    • 2021-03-28
    • 2015-03-11
    • 2021-01-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多