Java采用SSL连接AD域连接出错问题simple bind failed:IP:PORT解决方案

1 篇文章 0 订阅
1 篇文章 0 订阅

首先非常感谢義拾壹的耐心指导

困扰我三天的连接问题终于解决!

https://blog.csdn.net/qq_41207282/article/details/97133887#comments

1.报错提示:

javax.naming.CommunicationException: simple bind failed: <IP>:636 [Root exception is javax.net.ssl.SSLHandshakeException: java.security.cert.CertificateException: No subject alternative names matching IP address <IP> found]

2.服务器端导出证书到本地

我的是在虚拟机上运行的,所以是从虚拟机导出再复制到本地。

2.1 win+R,输入mmc,添加证书。

2.2 然后找到以下两个证书。

2.3 将两个文件分别右键->所有任务->导出。

2.4 导出成功后在虚拟机桌面生成两个cer文件。

2.5 复制粘贴至本地环境,我放在了D盘。

3. 导入本地密钥库

将cer文件加入到jdk密钥库中。

keytool -import -keystore D:\Java\jdk1.8.0_211\jre\lib\security\cacerts -storepass changeit -keypass changeit -alias ca -file D:/ca.cer

keytool -import -keystore D:\Java\jdk1.8.0_211\jre\lib\security\cacerts -storepass changeit -keypass changeit -alias ca_1 -file D:/ca_1.cer

4. 修改hosts

进入本地C:\Windows\System32\drivers\etc\hosts修改hosts

添加IP和域名,域名为证书上的域名,这点很关键。

5. 代码编写

public void certinit() {
		String keystore = "D:\\Java\\jdk1.8.0_211\\jre\\lib\\security\\cacerts";
		System.setProperty("javax.net.ssl.trustStore", keystore);

		Properties env = new Properties();
		String adminName = "cn=Administrator,cn=Users,dc=hct,dc=com";
		String adminPassword = "Admin123456";// password
		String ldapURL = "ldaps://WIN-6NQKI1CT5ST.hct.com:636";// ip:port
		env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory");
		env.put(Context.SECURITY_AUTHENTICATION, "simple");// LDAP访问安全级别:"none","simple","strong"
		env.put(Context.SECURITY_PRINCIPAL, adminName);
		env.put(Context.SECURITY_CREDENTIALS, adminPassword);
		env.put(Context.PROVIDER_URL, ldapURL);

		env.put(Context.SECURITY_PROTOCOL, "ssl");

		try {
			LdapContext lc = new InitialLdapContext(env, null);
			System.out.println("AD域ssl身份认证成功");
		} catch (Exception e) {
			System.out.println("AD域ssl身份认证出错");
			e.printStackTrace();
		}
	}

特别注意:
1.keystore为你的密钥库路径
2.String ldapURL = "ldaps://WIN-6NQKI1CT5ST.hct.com:636";采用ldaps,并且域名为hosts上添加的域名。

6. 结果

终于终于,连接成功了!

说实话,失败的信息我都看腻了!

评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值