我们的Wildfly 8.1-Server需要与组织网络内的服务器建立出站(!)LDAPS连接。此连接仅用于同步各种应用程序数据。 不幸的是,没有关于Wildfly的仅限出站信任库的文档。我所做的每项研究都只能为我提供有关为入站连接启用SSL的结果。
我如何向Wildfly的信任库添加证书以进行出站SSL连接?有没有关于此的文件?我对此主题的任何帮助表示感谢。
答案 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上找到所有这些,但我忘记了确切的位置,所以我基本上在这里粘贴了他们的解决方案。