【问题标题】:T3 client with custom SSLSocketFactory具有自定义 SSLSocketFactory 的 T3 客户端
【发布时间】:2019-02-21 11:11:51
【问题描述】:

我的 T3 客户端代码如下:

private InitialContext initContext() {
    Properties p = new Properties();
    p.put(Context.INITIAL_CONTEXT_FACTORY, "weblogic.jndi.WLInitialContextFactory");
    p.put(Context.PROVIDER_URL, context.providerURL);

    for (Map.Entry<String, String> entry : getEnvironmentProperties().entrySet()) {
        p.put(entry.getKey(), entry.getValue());
    }

    InitialContext res = null;
    try {
        res = new InitialContext(p);
    } catch (NamingException e) {
        e.printStackTrace();
    }

    return res;
}

我的 t3 客户端部署在 Tomcat 上(使用 wlthint3client-12.1.3.jar)并尝试查找部署在 Weblogic 上的外部系统的远程 bean。

但是,当我尝试执行 new InitialContext(p) 时,我收到 SSLHandshake 异常,因为它使用标准 SSLConext 和标准 java 信任库获得标准 SSLSocketFactory。

我的问题 - 有没有办法给 InitialContext 一些将覆盖 SSLSocketFacory 的属性。我的目标是将我的自定义信任库填充到这个 t3 客户端。

像这样更改标准信任存储

System.setProperty("javax.net.ssl.trustStore", "pathToTrustStore"); 

工作正常,但是如果我的 t3 客户端用于与 2 个不同的外部系统进行通信,那么这样做可能会出现问题。

是否有一些我可以填充的属性?

Properties p = new Properties();
p.put(Context.INITIAL_CONTEXT_FACTORY, "weblogic.jndi.WLInitialContextFactory");
**p.put("CUSTOM SSL SOCKET FACTORY, "MY CLASS");**

【问题讨论】:

    标签: java tomcat ssl ejb weblogic


    【解决方案1】:

    通过在应用程序端添加一些参数解决了问题

    export JAVA_OPTS ="$JAVA_OPTS -Djavax.net.ssl.trustStore=path/truststore.jks"
    export JAVA_OPTS ="$JAVA_OPTS -Djavax.net.ssl.trustStorePassword=changeIT"
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-06-23
      • 2021-04-03
      • 2021-03-06
      • 1970-01-01
      • 2016-11-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多