出站(!)SSL连接Wildfly

时间:2016-02-10 16:57:17

标签: ssl wildfly outbound

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

我如何向Wildfly的信任库添加证书以进行出站SSL连接?有没有关于此的文件?我对此主题的任何帮助表示感谢。

1 个答案:

答案 0 :(得分:1)

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

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

}

我喜欢的第二个:

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

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

{{1}}

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