XML-RPC客户端无法将SSL证书发送到服务器

时间:2018-04-18 11:53:41

标签: java xml-rpc

我们需要调用Confluence服务器的XML-RPC API来推送一些数据。我们的Confluence服务器受双向SSL身份验证(相互身份验证)保护。在互联网上进行一些搜索后,我得到了一些关于编写具有SSL属性的xml-rpc客户端然后进行API调用的信息。但代码失败,因为SSLHandshake错误。

*** ServerHelloDone

[read] MD5和SHA1哈希:len = 4 0000:0E 00 00 00 .... 警告:未找到合适的证书 - 未经客户端身份验证继续 ***证书链

*** ECDHClientKeyExchange

main,名为closeSocket() main,处理异常:javax.net.ssl.SSLHandshakeException:收到致命警报:handshake_failure main,叫close() main,叫做closeInternal(true) main,叫close() main,叫做closeInternal(true) JavaClient:org.apache.xmlrpc.XmlRpcException:无法创建输入流:收到致命警报:handshake_failure

以下是我的源代码

import org.apache.xmlrpc.client.XmlRpcClientConfigImpl;

import org.apache.xmlrpc.client.XmlRpcClient;

import java.net.URL; import java.util.Vector;

/ **  *带有SSL的X​​mlRpc客户端  *  *  * / 公共类XMLRPC_SSL_Client {

public static void main(String[] args) {
    try {
        XmlRpcClientConfigImpl clientConfig = new XmlRpcClientConfigImpl();
        clientConfig.setServerURL(new URL("https://stg.api.collaborate.testing.com/confluence/rpc/xmlrpc"));

        XmlRpcClient xmlRpcClient = new XmlRpcClient();
        xmlRpcClient.setConfig(clientConfig);

        Vector<String> params = new Vector<String>();

        params.add("confadmin1");
        params.add("confadmin1");

        System.setProperty("java.protocol.handler.pkgs", "com.sun.net.ssl.internal.www.protocol");

        //Trust srever's certificate
        System.setProperty("javax.net.ssl.trustStore", "/Users/aswain/security/truststore/staging_api_collaborate.jks");
        System.setProperty("javax.net.ssl.trustStorePassword", "test112233");

        //Send client's certificate
        System.setProperty("javax.net.ssl.keyStore", "/Users/aswain/security/certs/devuser_client_cert.jks");
        System.setProperty("javax.net.ssl.keyStorePassword", "test112233");

        System.out.println(System.getProperties());

        System.out.println("Invoking remote method confluence2.login via xml-rpc");

        Object result = xmlRpcClient.execute("confluence2.login", params);

        String loginToken = (String) result;
        System.out.println("loginToken : " + loginToken);
    } catch (Exception exception) {
        System.err.println("JavaClient: " + exception);
    }

}

}

密码&amp;查看* .jks文件的路径是正确的。 请帮助解决此问题。

0 个答案:

没有答案