如何在jndi中通过ssl启用ldap
我在solaris机器上有一个sun LDAP服务器,我的web应用程序可以通过389端口连接到LDAP。现在我想使用636端口通过SSL连接到LDAP。在我的LDAP服务器中,我已经安装了证书。现在,我已经使用LDAP服务器中的密钥导出了证书,以便可以在web应用程序中使用该证书。在同一台机器上还安装了我的glassfish服务器。我在/usr/java/jre/lib/security/文件夹中复制了证书。现在在我的web应用程序中,我使用此代码通过sll连接到LDAP,但它无法连接到LDAP如何在jndi中通过ssl启用ldap,ssl,ldap,solaris,jndi,Ssl,Ldap,Solaris,Jndi,我在solaris机器上有一个sun LDAP服务器,我的web应用程序可以通过389端口连接到LDAP。现在我想使用636端口通过SSL连接到LDAP。在我的LDAP服务器中,我已经安装了证书。现在,我已经使用LDAP服务器中的密钥导出了证书,以便可以在web应用程序中使用该证书。在同一台机器上还安装了我的glassfish服务器。我在/usr/java/jre/lib/security/文件夹中复制了证书。现在在我的web应用程序中,我使用此代码通过sll连接到LDAP,但它无法连接到LDA
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);
我做错了什么?请更正。如果您在LDAP服务器上安装的SSL/TLS证书是自签名证书,或者其签名者证书在JVM的
lib/security/cacerts
信任库中不存在,您需要将证书导入信任库,并通过设置系统属性javax.net.ssl.truststore
和javax.net.ssl.trustStorePassword
指定该信任库的位置。您似乎已经将证书导入到JKS文件中(假设它是JKS格式)。您需要将javax.net.ssl.trustStore
指向该文件并指定其密码,以便JVM可以访问它