【问题标题】:how to enable ldap over ssl in jndi如何在 jndi 中启用 ldap over ssl
【发布时间】:2013-08-18 06:44:24
【问题描述】:

我在 solaris 机器上有一个 sun LDAP 服务器,我的 Web 应用程序可以通过 389 端口连接到 LDAP。现在我想使用 636 端口通过 SSL 连接到 LDAP。在我的 LDAP 服务器中,我已经安装了证书。现在我已经使用来自 LDAP 服务器的密钥导出了证书,以便我可以将此证书用于我的 Web 应用程序。在同一台机器上,我的 glassfish 服务器也安装了。我将证书复制到 /usr/java/jre/lib/security/ 文件夹中。现在在我的 Web 应用程序中,我使用此代码通过 sll 连接到 LDAP,但它无法连接到 LDAP。

 Hashtable ht = new Hashtable();
 ht.put(Context.INITIAL_CONTEXT_FACTORY,"com.sun.jndi.ldap.LdapCtxFactory");
 ht.put(Context.PROVIDER_URL,"ldap://ldapserver:636");
 ht.put(Context.SECURITY_AUTHENTICATION, "EXTERNAL");
 // ht.put(Context.SECURITY_AUTHENTICATION, "simple");
 System.setProperty("javax.net.ssl.keyStore","/usr/java/jre/lib/security/cert");
 System.setProperty("javax.net.ssl.keyStorePassword",certpass);
 ht.put(Context.SECURITY_PRINCIPAL,binddn);
 // Specify SSL
 ht.put(Context.SECURITY_PROTOCOL, "ssl");
 ht.put(Context.SECURITY_CREDENTIALS,bindpass);

我做错了什么?请纠正我。

【问题讨论】:

    标签: ssl ldap solaris jndi


    【解决方案1】:

    如果您在 LDAP 服务器上安装的 SSL/TLS 证书是自签名证书,或者其签名者证书在您的 JVM 的 lib/security/cacerts 信任库中不存在,您需要将证书导入信任库并指定该证书的位置信任库是通过设置系统属性javax.net.ssl.trustStorejavax.net.ssl.trustStorePassword。您似乎已经将证书导入到 JKS 文件中(假设它是 JKS 格式)。您需要将 javax.net.ssl.trustStore 指向该文件并指定其密码,以便 JVM 可以访问它。

    【讨论】:

      猜你喜欢
      • 2019-02-25
      • 1970-01-01
      • 2014-08-14
      • 2020-08-07
      • 1970-01-01
      • 1970-01-01
      • 2014-07-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多