1

我需要帮助使用 Axis2 和 org.jsslutils.sslcontext.X509SSLContextFactory 创建与 Web 服务的可信连接。我从 Web 服务的管理控制台 (client.p12) 生成了一个客户端证书。我还通过转到端点 uri 并使用浏览器 (pubserver.cer) 将其导出到文件来获取服务器的公共证书。我使用 keytool (mywsks.jks) 将 client.p12 转换为 jks。我还将 pubserver.cer 导入到密钥库中。我对 ssl 很陌生。我是否需要将这些证书导入到 .../jre/lib/security/cacert 或 cacerts 或trusted.libraries,或者我可以只引用 mywsks.jks 吗?如何使用 X509SSLContextFactory 为服务器设置我的代码以信任我?它似乎需要一个 keyStore 和一个 trustStore ,我从这个例子中得出:

X509SSLContextFactory sslContextFactory = new X509SSLContextFactory( 
    keyStore, keyStorePassword, trustStore); 

我目前正在使用它来创建 keyStore 和 trustStore:

KeyStore keyStore = KeyStore.getInstance("JKS");     
String keyStoreFile = "mywsks.jks"; 
InputStream keyInput = new FileInputStream(keyStoreFile);
String keyStorePassword = "thepassword"; 
keyStore.load(keyInput, keyStorePassword.toCharArray());
keyInput.close();

String trustStoreFile = "/path/to/cacert"; 
KeyStore trustStore = KeyStore.getInstance("JKS");
keyInput = new FileInputStream(trustStoreFile);
String trustStorePassword = "thepassword";
trustStore.load(keyInput, trustStorePassword.toCharArray());
keyInput.close();

我收到以下错误:

org.apache.axis2.AxisFault: sun.security.validator.ValidatorException: No trusted certificate found
4

1 回答 1

1
  1. 将用于在 Web 服务中进行身份验证的客户端证书添加到 keyStore(client.p12) 中。
  2. 将服务器的公钥 (pubserver.cer) 添加到您的 trustStore。它可以是 /jre/lib/security/cacert

你能发布你面临的问题吗?因为在我看来,这是一个令人困惑且需要讨论的大话题。

这个例子将帮助你实现这个..

http://code.google.com/p/jsslutils/wiki/ApacheHttpClientUsage

最后你可以建立一个 URL 连接..

于 2013-01-30T20:24:27.907 回答