Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ssl/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何将安全连接到远程websphere服务器?_Java_Ssl_Websphere - Fatal编程技术网

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

Java 如何将安全连接到远程websphere服务器?,java,ssl,websphere,Java,Ssl,Websphere,我使用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"); pr

我使用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 trust密钥库。为此,您可以使用ikeyman实用程序打开远程密钥库并导出证书,然后使用相同的实用程序将证书导入本地Websphere信任存储

SSL异常应该提供一条线索,说明需要从远程服务器提取什么签名者证书并导入本地信任存储

请查看“导出关键帧和导入关键帧”部分

此外,这里已经讨论了类似的问题:


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

从WebSphere提取证书-最简单的方法是使用浏览器通过https访问WAS上运行的任何应用程序,并将证书保存到文件。 使用keytool将该证书导入Glassfish可信存储。应该是domains/domain1/config/cacerts.jks我不是Glassfish专家,所以路径可能不同。
然后,您不需要再设置所有这些javax.net.ssl.*属性。

您的应用程序是运行在其他WebSphere上的web应用程序,还是某种独立应用程序?其他WebSphere服务器是否使用自签名证书?@Gas my web app运行在GlssFish 3.0 java app server上,具有不同的主机。@nickvasi,是,was只有自签名证书,默认安装为was7安装。您得到的SSL异常是什么?你能在浏览器中使用https连接到远程web应用程序吗?不明白,我怎么能在java代码中集成它。我认为这不适合我的情况。我建议你仔细阅读一下SSL握手的工作原理。您有一个信任存储区,AdminClient使用它来确定是否信任案例中的远程证书C:/WAS/AppServer/profiles/AppSrv01/etc/DummyClientTrustFile.jks。如果您的本地信任存储没有安装远程服务器的签名者证书,则AdminClient将无法验证或“信任”远程服务器的标识,因此SSL握手将失败。@vicv或者您没有将其集成到Java代码中。你按照这个答案去做。