1

如何使用 LDAPS 从我的 Java 应用程序访问 RedHat 目录服务器/HP UX 目录服务器?我正在尝试通过 LDAP 访问它,它工作正常,但是在使用 LDAPS 时它没有建立与服务器的连接。

这是我的代码,它不起作用:

public void setPassword(String userDn,String password) {
    InitialDirContext ctx=null;
    DirContext connection;
    Hashtable env = new Hashtable();
    env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory");
    env.put(Context.SECURITY_AUTHENTICATION, "simple");
    String systemname = "ldaps://myserver:636";
    env.put(Context.PROVIDER_URL, systemname);  
    env.put(Context.SECURITY_PRINCIPAL, "cn=directory manager");
    env.put(Context.SECURITY_CREDENTIALS, "MySecret");
    ctx = new InitialDirContext(env);
    connection = (DirContext)ctx;
    connection.lookup("dc=mydomain,dc=com");
    ModificationItem[] mods = new ModificationItem[1];
    Attribute mod0 = new BasicAttribute("userpassword",password);
    mods[0] = new ModificationItem(DirContext.REPLACE_ATTRIBUTE, mod0);
    connection.modifyAttributes(userDn, mods);
    connection.close();
}

如果我替换ldapsby ,上面的代码可以正常工作ldap

但我也需要代码来为 LDAPS 工作。有些网站提到需要密钥库、证书等。但我对这些一无所知。

4

2 回答 2

2

你可以尝试几件事:

  • 使用已知良好的工具ldapsearch来验证 LDAP 客户端是否可以连接到服务器
  • 用于openssl s_client -connect host:port验证客户端是否可以建立安全连接。
于 2012-10-15T19:12:34.140 回答
1

当您使用 Java 时,您需要获取服务器证书或证书颁发机构链的副本,并将其添加到与代码一起使用的 JVM 的 Java 密钥库中。

如何完成获取证书取决于您使用的 LDAP 实现。LDAP 管理员应该能够提供帮助。

至于将证书添加到 Java KeyStore,请参阅 Google。

-吉姆

于 2012-10-16T11:29:44.863 回答