我使用AdminClient与本地websphere服务器进行安全连接:
java.util.Properties props = new java.util.Properties();
props.setProperty(AdminClient.CONNECTOR_TYPE, AdminClient.CONNECTOR_TYPE_SOAP);
props.setProperty(AdminClient.CONNECTOR_HOST, "localhost");
props.setProperty(AdminClient.CONNECTOR_PORT, "8880");
props.setProperty(AdminClient.CONNECTOR_SECURITY_ENABLED, "true");
props.setProperty(AdminClient.USERNAME, "admin");
props.setProperty(AdminClient.PASSWORD, "111111");
props.setProperty("javax.net.ssl.trustStore", "C:/WAS/AppServer/profiles/AppSrv01/etc/DummyClientTrustFile.jks");
props.setProperty("javax.net.ssl.keyStore", "C:/WAS/AppServer/profiles/AppSrv01/etc/DummyClientKeyFile.jks");
props.setProperty("javax.net.ssl.trustStorePassword", "WebAS");
props.setProperty("javax.net.ssl.keyStorePassword", "WebAS");
client = AdminClientFactory.createAdminClient(props);
这是完美的工作。但是,如果我尝试安全连接到远程URL(IP或主机名),此代码不起作用,例如SSL exaptions。我认为,证书文件中存在问题:
props.setProperty("javax.net.ssl.trustStore", "C:/WAS/AppServer/profiles/AppSrv01/etc/DummyClientTrustFile.jks");
props.setProperty("javax.net.ssl.keyStore", "C:/WAS/AppServer/profiles/AppSrv01/etc/DummyClientKeyFile.jks");
如何使用JAVA从远程服务器检索此证书并与AdminClient建立安全连接?
答案 0 :(得分:3)
您需要提取远程签名者证书并将其导入本地WebSphere信任密钥库。为此,您可以使用ikeyman实用程序打开远程密钥库并导出证书,然后使用相同的实用程序将证书导入到本地Websphere信任库中。
SSL异常应该为您提供从远程服务器提取并导入本地信任存储区的签名者证书的线索。
查看http://www-01.ibm.com/software/webservers/httpservers/doc/v1312/ibm/9atikeyu.htm(导出密钥和导入密钥部分)
此外,类似的问题已经在这里得到解决:
答案 1 :(得分:1)
我建议不要将它放在您的代码中,而是将WebSphere证书添加到Glassfish受信任的证书中。因此,您需要执行以下步骤:
然后您不再需要设置所有这些javax.net.ssl.*
属性。