不带SSL java的Active Directory密码

不带SSL java的Active Directory密码,java,active-directory,Java,Active Directory,当我想与active directory的ssl建立连接时,它会给我这个错误,我不知道它是否可以 我在java和glassfish商店已经有了证书 创建对象时出现问题:javax.net.ssl.SSLPeerUnverifiedException:服务器“172.18.141.100”的主机名与服务器证书中的主机名不匹配 这是一段代码 Hashtable env=new Hashtable(); 字符串user=“siampuser”; 字符串adminPassword=“S14mpad”;

当我想与active directory的ssl建立连接时,它会给我这个错误,我不知道它是否可以

我在java和glassfish商店已经有了证书

创建对象时出现问题:javax.net.ssl.SSLPeerUnverifiedException:服务器“172.18.141.100”的主机名与服务器证书中的主机名不匹配

这是一段代码

Hashtable env=new Hashtable();
字符串user=“siampuser”;
字符串adminPassword=“S14mpad”;
字符串userName=“CN=“+primerNombre+”+primerApellido+”,“+“OU=testunit3,DC=mp,DC=gob,DC=gt”;
String groupName=“CN=Configuration,OU=testunit3,DC=mp,DC=gob,DC=gt”;
put(javax.naming.Context.INITIAL_Context_工厂,“com.sun.jndi.ldap.LdapCtxFactory”);
put(javax.naming.Context.SECURITY_AUTHENTICATION,“simple”);
环境put(javax.naming.Context.SECURITY_主体,用户+“@”+域);
env.put(javax.naming.Context.SECURITY_凭证、adminPassword);
put(javax.naming.Context.PROVIDER_URL,ldapHost);
试一试{
LdapContext ctx=新的初始LdapContext(env,null);
Attributes attrs=新的基本属性(true);
属性put(“对象类”、“用户”);
属性put(“samAccountName”,usuario);
属性put(“givenName”,primerNombre+“”+segundonmbre);
属性put(“sn”,primerApellido+“”+segundoApellido);
属性put(“cn”,primerNombre+“”+primerApellido);
属性put(“描述”,puesto);
属性put(“physicalDeliveryOfficeName”,dependencia+“”+Departmento);
属性输入(“电话号码”,fechaNacimiento+'/'+dpi+'/'+nit);
属性放置(“邮件”,usuario+“@mp.gob.gt”);
属性put(“标题”,puesto);
attrs.put(“部门”,dependencia);
如果(nip!=null){
attrs.put(“wwhomepage”,nip.toString());
//属性put(“st”,nip.toString());
}
int UF_ACCOUNTDISABLE=0x0002;
int UF_PASSWD_NOTREQD=0x0020;
int UF_PASSWD_CANT_CHANGE=0x0040;
int UF_正常_账户=0x0200;
int UF_DONT_EXPIRE_PASSWD=0x10000;
int UF_密码_过期=0x800000;
attrs.put(“userAccountControl”,Integer.toString(UF_NORMAL_ACCOUNT+UF_PASSWD_NOTREQD+UF_PASSWORD_EXPIRED+UF_ACCOUNTDISABLE));
javax.naming.Context result=ctx.createSubcontext(用户名,attrs);
System.out.println(“usuario creado:+用户名”);
StartTlsResponse tls=(StartTlsResponse)ctx.extendedOperation(新的StartTlsRequest());
SSLSession session=tls.negotiate();
//协商();
ModificationItem[]mods=新的ModificationItem[2];
字符串newQuotedPassword=“\”“+密码+”\”;
byte[]newUnicode密码=newQuotedPassword.getBytes(“UTF-16LE”);
mods[0]=新的修改项(DirContext.REPLACE_属性,新的基本属性(“unicodePwd”,newUnicodePassword));
mods[1]=新修改项(DirContext.REPLACE_属性,新基本属性(“userAccountControl”,Integer.toString(UF_普通_帐户+UF_密码_过期));
//mods[1]=新的修改项(DirContext.REPLACE_属性,新的基本属性(“userAccountControl”,Integer.toString(UF_NORMAL_ACCOUNT+UF_PASSWD_NOTREQD));
//执行更新
修改属性(用户名、mods);
System.out.println(“设置密码和更新的UserAccountControl”);
//现在将用户添加到组中。
试一试{
ModificationItem成员[]=新的ModificationItem[1];
成员[0]=新修改项(DirContext.ADD_属性,新基本属性(“成员”,用户名));
ctx.modifyAttributes(组名、成员);
System.out.println(“Usuario agregado a la ou:+groupName”);
}捕获(NamingE例外){
System.err.println(“Error al-agregar el-usario a la ou:”+e);
返回新的响应(“错误al-agregar el-usario a la ou:+e,ResponseStatus.Error”);
}
tls.close();
ctx.close();
//System.out.println(“usuario crearo existostomente:+用户名”);
返回新的响应(“usuario crearo existosamente:+用户名,ResponseStatus.OK\u查询”);
}捕获(NamingE例外){
System.err.println(“Error al-crear el-usuario:+e”);
返回新的响应(“错误al crear el usuario:+e,ResponseStatus.Error”);
}捕获(IOE异常){
System.err.println(“创建对象的问题:+e”);
}

返回nullX.509证书通常与主机名绑定,因此我假设您尝试使用其IP地址连接到LDAP服务器,但它必须使用主机名生成证书?