我需要帮助使用 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