Java 如何在两个weblogic服务器之间配置双向ssl通信?
我正在尝试做双向ssl通信。我的服务器部署在一台weblogic服务器上,客户机部署在另一台上。我已经在客户端导入了有效的证书,并尝试调用在https上运行的webservice。 我已经编写了一个简单的servelet类,它在https上调用webservice。我在客户端代码中设置了以下属性Java 如何在两个weblogic服务器之间配置双向ssl通信?,java,Java,我正在尝试做双向ssl通信。我的服务器部署在一台weblogic服务器上,客户机部署在另一台上。我已经在客户端导入了有效的证书,并尝试调用在https上运行的webservice。 我已经编写了一个简单的servelet类,它在https上调用webservice。我在客户端代码中设置了以下属性 System.setProperty("javax.net.ssl.keyStore","/opt/bea1/certificates/VDFNLimitedV01.p12"); System.setP
System.setProperty("javax.net.ssl.keyStore","/opt/bea1/certificates/VDFNLimitedV01.p12");
System.setProperty("javax.net.ssl.keyStorePassword", "XXXXX");
System.setProperty("javax.net.ssl.keyStoreType", "PKCS12");
当我通过unix服务器编译和运行独立的简单客户机代码时,它运行良好,但当我在weblogic上部署客户机并点击thr url时,我得到了错误的证书异常。
客户端错误
oled Threads]]weblogic.security.SSL.jsseadapter: SSLENGINE: Exception occurred during SSLEngine.unwrap(ByteBuffer,ByteBuffer).
javax.net.ssl.SSLException: Received fatal alert: bad_certificate
at com.sun.net.ssl.internal.ssl.Alerts.getSSLException(Alerts.java:190)
at com.sun.net.ssl.internal.ssl.SSLEngineImpl.fatal(SSLEngineImpl.java:1467)
at com.sun.net.ssl.internal.ssl.SSLEngineImpl.fatal(SSLEngineImpl.java:1435)
at com.sun.net.ssl.internal.ssl.SSLEngineImpl.recvAlert(SSLEngineImpl.java:1601)
at com.sun.net.ssl.internal.ssl.SSLEngineImpl.readRecord(SSLEngineImpl.java:1031)
at com.sun.net.ssl.internal.ssl.SSLEngineImpl.readNetRecord(SSLEngineImpl.java:845)
at com.sun.net.ssl.internal.ssl.SSLEngineImpl.unwrap(SSLEngineImpl.java:721)
at javax.net.ssl.SSLEngine.unwrap(SSLEngine.java:607)
at weblogic.security.SSL.jsseadapter.JaSSLEngine$4.run(JaSSLEngine.java:118)
at weblogic.security.SSL.jsseadapter.JaSSLEngine.doAction(JaSSLEngine.java:732)
at weblogic.security.SSL.jsseadapter.JaSSLEngine.unwrap(JaSSLEngine.java:116)
at weblogic.socket.JSSEFilterImpl.doHandshake(JSSEFilterImpl.java:93)
at weblogic.socket.JSSEFilterImpl.doHandshake(JSSEFilterImpl.java:59)
at weblogic.socket.JSSEFilterImpl.write(JSSEFilterImpl.java:391)
at weblogic.socket.JSSESocket$JSSEOutputStream.write(JSSESocket.java:78)
at java.io.BufferedOutputStream.flushBuffer(BufferedOutputStream.java:65)
at java.io.BufferedOutputStream.flush(BufferedOutputStream.java:123)
at java.io.FilterOutputStream.flush(FilterOutputStream.java:123)
at weblogic.net.http.HttpURLConnection.writeRequests(HttpURLConnection.java:162)
at weblogic.net.http.HttpURLConnection.getInputStream(HttpURLConnection.java:376)
at weblogic.net.http.SOAPHttpsURLConnection.getInputStream(SOAPHttpsURLConnection.java:37)
at java.net.URL.openStream(URL.java:1010)
at com.sun.xml.ws.wsdl.parser.RuntimeWSDLParser.createReader(RuntimeWSDLParser.java:842)
at com.sun.xml.ws.wsdl.parser.RuntimeWSDLParser.resolveWSDL(RuntimeWSDLParser.java:289)
at com.sun.xml.ws.wsdl.parser.RuntimeWSDLParser.parse(RuntimeWSDLParser.java:138)
at com.sun.xml.ws.client.WSServiceDelegate.parseWSDL(WSServiceDelegate.java:284)
at com.sun.xml.ws.client.WSServiceDelegate.<init>(WSServiceDelegate.java:246)
at com.sun.xml.ws.client.WSServiceDelegate.<init>(WSServiceDelegate.java:197)
at com.sun.xml.ws.client.WSServiceDelegate.<init>(WSServiceDelegate.java:187)
at weblogic.wsee.jaxws.spi.WLSServiceDelegate.<init>(WLSServiceDelegate.java:84)
at weblogic.wsee.jaxws.spi.WLSProvider$ServiceDelegate.<init>(WLSProvider.java:598)
at weblogic.wsee.jaxws.spi.WLSProvider.createServiceDelegate(WLSProvider.java:120)
at weblogic.wsee.jaxws.spi.WLSProvider.createServiceDelegate(WLSProvider.java:112)
at weblogic.wsee.jaxws.spi.WLSProvider.createServiceDelegate(WLSProvider.java:83)
at javax.xml.ws.Service.<init>(Service.java:56)
at com.vodafone.main.TokenService.<init>(TokenService.java:49)
at vodafone.TransactClient.getMessage(TransactClient.java:65)
at vodafone.TransactClient.doGet(TransactClient.java:77)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:707)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
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:300)
at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:183)
at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.wrapRun(WebAppServletContext.java:3717)
at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:3681)
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:2277)
at weblogic.servlet.internal.WebAppServletContext.execute(WebAppServletContext.java:2183)
at weblogic.servlet.internal.ServletRequestImpl.run(ServletRequestImpl.java:1454)
at weblogic.work.ExecuteThread.execute(ExecuteThread.java:207)
at weblogic.work.ExecuteThread.run(ExecuteThread.java:176)
oled Threads]]weblogic.security.SSL.jsseadapter:SSLENGINE:在SSLENGINE.unwrap(ByteBuffer,ByteBuffer)期间发生异常。
javax.net.ssl.SSLException:收到致命警报:错误的\u证书
位于com.sun.net.ssl.internal.ssl.Alerts.getSSLException(Alerts.java:190)
位于com.sun.net.ssl.internal.ssl.sslenginimpl.fatal(sslenginimpl.java:1467)
位于com.sun.net.ssl.internal.ssl.sslenginimpl.fatal(sslenginimpl.java:1435)
在com.sun.net.ssl.internal.ssl.SSLEngineImpl.recvAlert上(SSLEngineImpl.java:1601)
在com.sun.net.ssl.internal.ssl.SSLEngineImpl.readRecord(SSLEngineImpl.java:1031)
在com.sun.net.ssl.internal.ssl.SSLEngineImpl.readNetRecord(SSLEngineImpl.java:845)
在com.sun.net.ssl.internal.ssl.sslenginimpl.unwrap(sslenginimpl.java:721)上
位于javax.net.ssl.SSLEngine.unwrap(SSLEngine.java:607)
位于weblogic.security.SSL.jsseadapter.JaSSLEngine$4.run(JaSSLEngine.java:118)
位于weblogic.security.SSL.jsseadapter.JaSSLEngine.doAction(JaSSLEngine.java:732)
位于weblogic.security.SSL.jsseadapter.JaSSLEngine.unwrap(JaSSLEngine.java:116)
位于weblogic.socket.JSSEFilterImpl.doHandshake(JSSEFilterImpl.java:93)
位于weblogic.socket.JSSEFilterImpl.doHandshake(JSSEFilterImpl.java:59)
位于weblogic.socket.JSSEFilterImpl.write(JSSEFilterImpl.java:391)
位于weblogic.socket.JSSESocket$JSSEOutputStream.write(JSSESocket.java:78)
位于java.io.BufferedOutputStream.flushBuffer(BufferedOutputStream.java:65)
位于java.io.BufferedOutputStream.flush(BufferedOutputStream.java:123)
位于java.io.FilterOutputStream.flush(FilterOutputStream.java:123)
位于weblogic.net.http.HttpURLConnection.writeRequests(HttpURLConnection.java:162)
位于weblogic.net.http.HttpURLConnection.getInputStream(HttpURLConnection.java:376)
位于weblogic.net.http.SOAPHttpsURLConnection.getInputStream(SOAPHttpsURLConnection.java:37)
位于java.net.URL.openStream(URL.java:1010)
位于com.sun.xml.ws.wsdl.parser.RuntimeWSDLParser.createReader(RuntimeWSDLParser.java:842)
位于com.sun.xml.ws.wsdl.parser.RuntimeWSDLParser.resolveWSDL(RuntimeWSDLParser.java:289)
位于com.sun.xml.ws.wsdl.parser.RuntimeWSDLParser.parse(RuntimeWSDLParser.java:138)
位于com.sun.xml.ws.client.WSServiceDelegate.parseWSDL(WSServiceDelegate.java:284)
位于com.sun.xml.ws.client.WSServiceDelegate。(WSServiceDelegate.java:246)
位于com.sun.xml.ws.client.WSServiceDelegate。(WSServiceDelegate.java:197)
位于com.sun.xml.ws.client.WSServiceDelegate。(WSServiceDelegate.java:187)
位于weblogic.wsee.jaxws.spi.WLSServiceDelegate。(WLSServiceDelegate.java:84)
位于weblogic.wsee.jaxws.spi.WLSProvider$ServiceDelegate。(WLSProvider.java:598)
位于weblogic.wsee.jaxws.spi.WLSProvider.createServiceDelegate(WLSProvider.java:120)
位于weblogic.wsee.jaxws.spi.WLSProvider.createServiceDelegate(WLSProvider.java:112)
位于weblogic.wsee.jaxws.spi.WLSProvider.createServiceDelegate(WLSProvider.java:83)
位于javax.xml.ws.Service。(Service.java:56)
在com.vodafone.main.TokenService上。(TokenService.java:49)
位于vodafone.transacticClient.getMessage(transacticClient.java:65)
位于vodafone.transacticClient.doGet(transacticClient.java:77)
位于javax.servlet.http.HttpServlet.service(HttpServlet.java:707)
位于javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
位于weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:227)
位于weblogic.servlet.internal.StubSecurityHelper.invokeServlet(StubSecurityHelper.java:125)
位于weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:300)
位于weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:183)
位于weblogic.servlet.internal.WebAppServletContext$servleinvocationAction.wrapRun(WebAppServletContext.java:3717)
在weblogic.servlet.internal.WebAppServletContext$servleinvocationAction.run(WebAppServletContext.java:3681)
位于weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)
位于weblogic.security.service.SecurityManager.runAs(SecurityManager.java:120)
位于weblogic.servlet.internal.WebAppServletContext.securedExecute(WebAppServletContext.java:2277)
位于weblogic.servlet.internal.WebAppServletContext.execute(WebAppServletContext.java:2183)
位于weblogic.servlet.internal.ServletRequestImpl.run(ServletRequestImpl.java:1454)
在weblogic.work.ExecuteThread.execute(ExecuteThread.java:207)
运行(ExecuteThread.java:176)
服务器端错误:
[Raw read]: length = 5>
<Dec 12, 2012 3:06:54 PM UTC> <Notice> <Stdout> <BEA-000000> <0000: 16 03 01 00 4D ....M
[Raw read]: length = 77>
<Dec 12, 2012 3:06:54 PM UTC> <Notice> <Stdout> <BEA-000000> <0000: 0B 00 00 03 00 00 00 10 00 00 42 00 40 49 59 42 ..........B.@IYB
0010: 09 08 EF 92 70 2E E7 49 E6 73 00 B0 33 7C A9 F0 ....p..I.s..3...
0020: 42 D1 3F F2 DA B9 80 FD 9E E8 15 21 C3 7E 42 A2 B.?........!..B.
0030: CF 1A 20 A0 17 ED B3 D6 3B 5C 68 1E 49 06 97 65 .. .....;\h.I..e
0040: 70 8A 40 03 C1 93 FB 3F A9 26 B6 E9 67 p.@....?.&..g
ExecuteThread: '0' for queue: 'weblogic.socket.Muxer', READ: TLSv1 Handshake, length = 77>
**<Dec 12, 2012 3:06:54 PM UTC> <Notice> <Stdout> <BEA-000000> <*** Certificate chain>
<Dec 12, 2012 3:06:54 PM UTC> <Notice> <Stdout> <BEA-000000> <***>**
<Dec 12, 2012 3:06:54 PM UTC> <Notice> <Stdout> <BEA-000000> <ExecuteThread: '0' for queue: 'weblogic.socket.Muxer', fatal error: 42: null cert chain
javax.net.ssl.SSLHandshakeException: null cert chain>
<Dec 12, 2012 3:06:54 PM UTC> <Notice> <Stdout> <BEA-000000> <ExecuteThread: '0' for queue: 'weblogic.socket.Muxer', SEND TLSv1 ALERT: fatal, description = bad_certificate>
<Dec 12, 2012 3:06:54 PM UTC> <Notice> <Stdout> <BEA-000000> <ExecuteThread: '0' for queue: 'weblogic.socket.Muxer', WRITE: TLSv1 Alert, length = 2>
<Dec 12, 2012 3:06:54 PM UTC> <Notice> <Stdout> <BEA-000000> <ExecuteThread: '0' for queue: 'weblogic.socket.Muxer', fatal: engine already closed. Rethrowing javax.net.ssl.SSLHandshakeException: null cert chain>
<Dec 12, 2012 3:06:54 PM UTC> <Notice> <Stdout> <BEA-000000> <ExecuteThread: '0' for queue: 'weblogic.socket.Muxer', called closeOutbound()>
<Dec 12, 2012 3:06:54 PM UTC> <Notice> <Stdout> <BEA-000000> <ExecuteThread: '0' for queue: 'weblogic.socket.Muxer', closeOutboundInternal()>
<Dec 12, 2012 3:06:54 PM UTC> <Notice> <Stdout> <BEA-000000> <[Raw write]: length = 7>
<Dec 12, 2012 3:06:54 PM UTC> <Notice> <Stdout> <BEA-000000> <0000: 15 03 01 00 02 02 2A ......*
ExecuteThread: '2' for queue: 'weblogic.socket.Muxer', called closeOutbound()>
<Dec 12, 2012 3:06:54 PM UTC> <Notice> <Stdout> <BEA-000000> <ExecuteThread: '2' for queue: 'weblogic.socket.Muxer', closeOutboundInternal()>
[原始读取]:长度=5>
**
**
当我通过unix box而不是weblogic运行java代码时,我能够发送客户端证书。有人能帮我吗?我应该如何配置weblogic作为ssl客户端
谢谢,
普亚·库尔卡尼