释怀然已 2021-03-07 10:12 采纳率: 0%
浏览 221

java SSL单向认证问题

场景:

SSL的server端提供证书这里假设为server.crt为单向认证的服务端

我是这么理解的,客户端拿到这边server.crt,然后客户端用keytool生产keystore假设步骤如下

1、keytool -genkey -alias test11 -keyalg RSA -keysize 2048 -keypass 123456 -storepass 123456 -dname "CN=服务端的ip地址,OU=test,O=test,L=FZ,ST=FZ,C=CN" -ext san=ip:服务端的ip地址  -validity 3600  -keystore D:\test11.keystore

2、把服务端的证书添加到客户端生成的test11.keystore

keytool -export -file D:\server.crt -alias test11 -keystore D:\test11.keystore

3、就是java的获取ssl factory,代码如下

    public static SSLSocketFactory getSSLSocktet() throws Exception {        
        KeyStore keyStore = KeyStore.getInstance("JKS");
        keyStore.load(new FileInputStream("D:\\test11.keystore"),"123456".toCharArray());
        // Create key manager
        KeyManagerFactory keyManagerFactory = KeyManagerFactory.getInstance("SunX509");
        keyManagerFactory.init(keyStore, "123456".toCharArray());
        KeyManager[] km = keyManagerFactory.getKeyManagers();
        // Create trust manager
        TrustManagerFactory trustManagerFactory = TrustManagerFactory.getInstance("SunX509");
        trustManagerFactory.init(keyStore);
        TrustManager[] tm = trustManagerFactory.getTrustManagers();
        // Initialize SSLContext
        SSLContext sslContext = SSLContext.getInstance("TLSv1.2");
        sslContext.init(km,  tm, null);
        return sslContext.getSocketFactory();
    }

4、就是单向认证的发送连接了

在mqtt的option里配置了true

		connOpts.setSSLHostnameVerifier(new HostnameVerifier() {
			@Override
			public boolean verify(String arg0, SSLSession arg1) {
				return true;
			}
		});

==================================================================================

按我的理解这时候客户端应该能正常和服务器进行单向认证的SSL通信了,

但是一直报错

抓包 Client hello->Server Hello,Certifacate,Server Hello Done ->Client回了Certifacate Unknown

代码里看了报错是No subject alternative names matching IP address “ 服务器的IP“

到这里我就整懵了,keystore明明加了服务器ip,而且option的的HostnameVerifier我也重写为true了啊,有了解这个的小伙伴帮忙指点下哈,,

  • 写回答

1条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2022-09-07 18:04
    关注
    不知道你这个问题是否已经解决, 如果还没有解决的话:

    如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 以帮助更多的人 ^-^
    评论

报告相同问题?

悬赏问题

  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!
  • ¥15 drone 推送镜像时候 purge: true 推送完毕后没有删除对应的镜像,手动拷贝到服务器执行结果正确在样才能让指令自动执行成功删除对应镜像,如何解决?
  • ¥15 求daily translation(DT)偏差订正方法的代码
  • ¥15 js调用html页面需要隐藏某个按钮
  • ¥15 ads仿真结果在圆图上是怎么读数的
  • ¥20 Cotex M3的调试和程序执行方式是什么样的?
  • ¥20 java项目连接sqlserver时报ssl相关错误
  • ¥15 一道python难题3
  • ¥15 牛顿斯科特系数表表示