Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ssl/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Web services 使用SSL的相互身份验证_Web Services_Ssl_Axis2_Mutual Authentication - Fatal编程技术网

Web services 使用SSL的相互身份验证

Web services 使用SSL的相互身份验证,web-services,ssl,axis2,mutual-authentication,Web Services,Ssl,Axis2,Mutual Authentication,我试图使用存根通过rmi连接到web服务。连接前需要SSL握手。因此,对于证书,我转到webservice url,将证书导出到.cer文件中,并将证书作为 keystore -importcert -alias alias -keystore keystore.jks -file certificate.cer 该证书被导入,然后我将该证书添加到我的信任库中:path to jre/lib/security/cacerts 此外,Web服务还要求在调用时传递用户名和密码,这些用户名和密码是通

我试图使用存根通过rmi连接到web服务。连接前需要SSL握手。因此,对于证书,我转到webservice url,将证书导出到.cer文件中,并将证书作为

keystore -importcert -alias alias -keystore keystore.jks -file certificate.cer
该证书被导入,然后我将该证书添加到我的信任库中:path to jre/lib/security/cacerts 此外,Web服务还要求在调用时传递用户名和密码,这些用户名和密码是通过以下方式设置的:

 ((javax.xml.rpc.Stub) proxy)._setProperty(org.apache.axis.client.Stub.USERNAME_PROPERTY,
        "username");
((javax.xml.rpc.Stub) proxy)._setProperty(org.apache.axis.client.Stub.PASSWORD_PROPERTY,
        "password"));
我将密钥库设置为: keystore/keystore.jks的路径 信任库的名称和路径: jre/lib/security/cacerts的路径

在调用调用之前,我还使用以下代码设置密钥库和信任库:

System.setProperty("javax.net.ssl.keyStore", "C:/FAST/JDK64/LINKS/JDK8/bin/abc.jks");
                System.setProperty("javax.net.ssl.trustStrore",
                        "C:/FAST/JDK64/LINKS/JDK8/jre/lib/security/cacerts");
                //"C:/FAST/JDK64/LINKS/JDK8/jre/lib/security/cacerts"
                System.setProperty("javax.net.ssl.keyStorePassword", "changeit");
                System.setProperty("javax.net.ssl.trustStorePassword", "changeit");
当握手开始时,我得到以下堆栈跟踪:

{http://xml.apache.org/axis/}stackTrace:javax.net.ssl.SSLHandshakeException: Received fatal alert: handshake_failure
at sun.security.ssl.Alerts.getSSLException(Alerts.java:192)
at sun.security.ssl.Alerts.getSSLException(Alerts.java:154)
at sun.security.ssl.SSLSocketImpl.recvAlert(SSLSocketImpl.java:2023)
at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:1125)
at sun.security.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1375)
at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1403)
at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1387)
at org.apache.axis.components.net.JSSESocketFactory.create(JSSESocketFactory.java:186)
at org.apache.axis.transport.http.HTTPSender.getSocket(HTTPSender.java:191)
at org.apache.axis.transport.http.HTTPSender.writeToSocket(HTTPSender.java:404)
at org.apache.axis.transport.http.HTTPSender.invoke(HTTPSender.java:138)
at org.apache.axis.strategies.InvocationStrategy.visit(InvocationStrategy.java:32)
at org.apache.axis.SimpleChain.doVisiting(SimpleChain.java:118)
at org.apache.axis.SimpleChain.invoke(SimpleChain.java:83)
at org.apache.axis.client.AxisClient.invoke(AxisClient.java:165)
at org.apache.axis.client.Call.invokeEngine(Call.java:2784)
at org.apache.axis.client.Call.invoke(Call.java:2767)
at org.apache.axis.client.Call.invoke(Call.java:2443)
at org.apache.axis.client.Call.invoke(Call.java:2366)
at org.apache.axis.client.Call.invoke(Call.java:1812)
at com.good.gc10.GCSoapBindingStub.getUser(GCSoapBindingStub.java:6590)
at com.good.gc10.GcServerProxy.getUser(GcServerProxy.java:343)

您应该已导入信任库,而不是密钥库。您同时拥有
keysore.jks
abc.jks
。解决这个问题。这里没有。请原谅我的错误,keystore.jks实际上只是abc.jks,我确实将certificate.cer文件导入了位于jre/lib/security/cacerts路径中的信任库