LDAP SSL连接出错

qq_30811843 2016-11-10 05:13:31
代码如下
public void init() {
Hashtable env = new Hashtable();
//String keystore=System.getProperty("user.dir")+ "\\cacerts";//获取AD证书
//String keystore="C:\\Program Files\\Java\\jdk1.8.0_111\\jre\\lib\\security\\cacerts";
String keystore="C:\\Users\\Shmily\\cacerts";
System.setProperty("javax.net.ssl.trustStore", keystore);
SSLContext sslContext = null;

//System.setProperty("javax.net.ssl.trustStorePassword", "changeit");
String LDAP_URL = "ldap://192.168.2.12:636"; // LDAP访问地址
String adminName = "tianchuang\\administrator"; // 注意用户名的写法:domain\User或
//String adminName = "topscore\\admin";
String adminPassword = "topscore"; // 密码
env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory");
env.put(Context.SECURITY_PROTOCOL, "ssl");//链接认证服务器
env.put(Context.PROVIDER_URL, LDAP_URL);
env.put(Context.SECURITY_AUTHENTICATION, "simple");
env.put(Context.SECURITY_PRINCIPAL, adminName);
env.put(Context.SECURITY_CREDENTIALS, adminPassword);

//env.put(Context.REFERRAL,"ignore");
//env.put("java.naming.ldap.factory.socket", "com.auth.ldaps.DummySSLSocketFactory");
try {
dc = new InitialDirContext(env);// 初始化上下文
System.out.println("认证成功");// 这里可以改成异常抛出。
} catch (javax.naming.AuthenticationException e) {
System.out.println("认证失败");
} catch (Exception e) {
System.out.println("认证出错:" + e);
}
}
用默认端口389可以正常连接,进行操作,但是不能修改密码且创建的用户是没有密码 ps:这就没有意义了
我已经将AD域的证书导入到JDK中的证书库中了,但是连接的时候报错
认证出错:javax.naming.CommunicationException: simple bind failed: 192.168.2.12:636 [Root exception is javax.net.ssl.SSLException: java.net.SocketException: Connection reset]
java.lang.NullPointerException
at com.agile.ad.AdServiceImpl.add(AdServiceImpl.java:135)
at com.agile.ad.AdServiceImpl.<init>(AdServiceImpl.java:43)
at com.agile.ad.AdServiceImpl.main(AdServiceImpl.java:405)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:140)
java.lang.NullPointerException
at com.agile.ad.AdServiceImpl.Ldapbyuserinfo(AdServiceImpl.java:350)
at com.agile.ad.AdServiceImpl.<init>(AdServiceImpl.java:50)
at com.agile.ad.AdServiceImpl.main(AdServiceImpl.java:405)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:140)
Throw Exception : java.lang.NullPointerException

Process finished with exit code 0
...全文
1075 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
weixin_43128698 2019-03-18
  • 打赏
  • 举报
回复
javax.naming.CommunicationException:simple bind failed:192.168.2.12:636 [root exception is javax.net.ssl.SSLException:java.net.SocketException:Connection reset] 这个问题你当初怎么解决的?我卡了一天了,无从下手
hou6386083 2017-04-19
  • 打赏
  • 举报
回复
你好,请问你是怎么解决的,能贴一下解决方案么?我这里也遇到了相同的问题
qq_30811843 2016-11-14
  • 打赏
  • 举报
回复
弄了几天终于解决了
qq_30811843 2016-11-11
  • 打赏
  • 举报
回复
引用 1 楼 fangmingshijie 的回复:
java.net.SocketException: Connection reset 这个错误应该是链接断开了,还在读写。
那应该怎么解决,这个地方说连接复位,但为什么SSL加密连接会这样,389端口连接却不会出错
  • 打赏
  • 举报
回复
java.net.SocketException: Connection reset 这个错误应该是链接断开了,还在读写。

51,406

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧