【问题标题】:Outbound (!) SSL connection Wildfly出站 (!) SSL 连接 Wildfly
【发布时间】:2016-05-21 03:57:33
【问题描述】:

我们的 Wildfly 8.1-Server 需要与组织网络中的服务器建立出站 (!) LDAPS 连接。此连接仅用于同步各种应用程序数据。 不幸的是,没有关于 Wildfly 的仅出站信任库的文档。我所做的每一项研究都只是为我提供了有关为入站连接启用 SSL 的结果。

如何将证书添加到 Wildfly 的信任库以用于出站 SSL 连接?有这方面的文件吗?非常感谢您对此主题的任何帮助。

【问题讨论】:

  • 您打算使用某种 Wildfly 服务来建立连接吗?
  • 不,没必要。一个单例 bean 就足够了。
  • 也许将您的证书放在一个 jar 文件或其他东西中?我要说的是,我认为 Java SSL 客户端只需要一个属性设置来确定文件的位置。我认为它不需要专门与容器交互。我不知道容器是否有可供您使用的“信任服务”,但我承认我从来没有真正为您玩过这些东西。文件。
  • 感谢您的帮助。找到了解决方案;看看我的回答。
  • 看看我的想法,证书将在你的 .war 文件中的某个地方,类加载器会找到它。请注意,了解getResourceAsStream returns null 的时间是值得的,以防万一。

标签: ssl wildfly outbound


【解决方案1】:

找到两种可能的解决方案。首先是我不会使用的:

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

我更喜欢第二个:

public class LDAPSSocketFactory extends SSLSocketFactory {

private SSLSocketFactory actualSocketFactory;

public LDAPSSocketFactory() {

    InputStream certificateInputStream = this.getClass().getClassLoader().getResourceAsStream("yourcert.pfx");

    try {

        KeyStore pkcs12 = KeyStore.getInstance("pkcs12");

        pkcs12.load(certificateInputStream, "".toCharArray());

        TrustManagerFactory tmf = TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm());

        tmf.init(pkcs12);

        SSLContext ctx = SSLContext.getInstance("TLS");

        ctx.init(null, tmf.getTrustManagers(), null);

        actualSocketFactory = ctx.getSocketFactory();

    } catch (KeyStoreException e) {
        e.printStackTrace();
    } catch (CertificateException e) {
        e.printStackTrace();
    } catch (NoSuchAlgorithmException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    } catch (KeyManagementException e) {
        e.printStackTrace();
    }

}

//Override methods by simply deligating them to the actualSocketFactory

}

并将其作为 ldap 连接的 JNDI 参数传递:

env.put("java.naming.ldap.factory.socket", "LDAPSSocketFactory");

在 StackOverflow 上找到了所有这些,但我忘记了具体在哪里,所以我基本上在这里粘贴了他们的解决方案。

【讨论】:

  • 其中任何一个都应该是您的解决方案 - 当您自己直接调用 API 时,WildFly 不会为您管理出站连接。
猜你喜欢
  • 1970-01-01
  • 2012-06-10
  • 1970-01-01
  • 2019-03-19
  • 1970-01-01
  • 2014-03-08
  • 1970-01-01
  • 2015-02-09
  • 1970-01-01
相关资源
最近更新 更多