繁体   English   中英

如何将安全连接到远程Websphere服务器?

[英]How i can connect secure to remote websphere server?

我使用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例外。 我认为,证书文件中的问题:

  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建立安全连接?

您将需要提取远程签名者证书并将其导入本地WebSphere信任密钥库中。 为此,您可以使用ikeyman实用程序打开远程密钥库并导出证书,然后使用相同的实用程序将证书导入本地Websphere信任库。

SSL异常应该提供有关从远程服务器提取并导入到本地信任存储区中需要哪些签名者证书的线索。

看看http://www-01.ibm.com/software/webservers/httpservers/doc/v1312/ibm/9atikeyu.htm (“导出密钥”和“导入密钥”部分)

同样,这里已经解决了类似的问题:

告诉Java接受自签名的ssl证书

我建议不要将其放入您的代码中,而是将WebSphere证书添加到Glassfish受信任的证书中。 因此,您需要执行以下步骤:

  • 从WebSphere提取证书-最简单的方法是使用浏览器通过https访问WAS上运行的任何应用程序,并将证书保存到文件中。
  • 使用keytool将该证书导入到Glassfish可信存储中。 它应该是domains / domain1 / config / cacerts.jks(我不是Glassfish专家,所以路径可能不同)。

然后,您不再需要设置所有这些javax.net.ssl.*属性。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM