2012-10-15 30 views
1

如何使用Java應用程序中的LDAPS訪問RedHat目錄服務器/ HP UX目錄服務器?我試圖通過LDAP訪問它,它工作正常,但使用LDAPS時,它不建立與服務器的連接。如何使用Java代碼通過LDAPS重置RedHat Directory服務器中的用戶密碼?

這裏是我的代碼,這是行不通的:

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(); 
} 

上面的代碼工作正常,如果我通過ldap更換ldaps

但我需要的代碼也適用於LDAPS。有些網站提到需要密鑰庫,證書等,但我不知道這些。

+0

「不工作」是什麼意思?你有什麼異常的錯誤信息? –

+0

是不是ssl端口'636'?我的答案可能是完全垃圾,如果只是這個問題 – Petesh

+0

沒有它的端口號'636'也不工作。 – Arun

回答

1

在使用Java時,您需要獲取服務器證書或證書頒發機構鏈的副本,並將其添加到您使用代碼使用的JVM的Java Keystore中。

如何完成獲取證書取決於您使用的LDAP實施。 LDAP管理員應該能夠提供幫助。

關於在Java KeyStore中添加證書,請參閱Google。

-jim

2

您可以嘗試幾件事情:

  • 使用已知的良好工具ldapsearch驗證LDAP客戶端可以連接到服務器
  • 使用openssl s_client -connect host:port驗證客戶端可以建立安全連接。
相關問題