在使用Java 8重新协商TLS_1.2期间,服务器证书更改受到限制

在使用Java 8重新协商TLS_1.2期间,服务器证书更改受到限制,第1张

概述我对SSL很陌生,并且被看似已知的问题所困扰.我的应用程序是SSL客户端,并调用另一个为双向SSL启用的组件.两个组件中的证书都是正确的,有时连接工作正常.每个服务器都有自己的服务器证书和私钥,但具有相同的根证书和中间证书.服务器中的SSL检查在Apache SW LB中完成.

我对SSL很陌生,并且被看似已知的问题所困扰.我的应用程序是SSL客户端,并调用另一个为双向SSL启用的组件.两个组件中的证书都是正确的,有时连接工作正常.每个服务器都有自己的服务器证书和私钥,但具有相同的根证书和中间证书.

服务器中的SSL检查在Apache SW LB中完成.

                                                                            |-------------|                                                                          / |   Tomcat1   |                                                         |-------------| /  |-------------|                                              |---------->|Apache SW LB |/                                              |           |-------------|\                                                    |                           \                                             |                            \  |-------------||-----------|            |------------|      |                               |  Tomcat 2   ||SSL ClIEnt |---httpS--->|HarDWare LB |------|                               |-------------|    |-----------|            |------------|      |                              |-------------|                                              |                            / |   Tomcat3   |                                             |           |-------------| /  |-------------|                                             |---------->|Apache SW LB |/                                                            |-------------|\                                                                         \                                                                          \|-------------|                                                                             |    Tomcat4  |                                                                           |-------------|

有时我会收到如下错误: –

***%% InvalIDated:  [Session-10,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256]http-nio-8443-exec-10,SEND TLSv1.2 ALERT:  fatal,description = bad_certificatehttp-nio-8443-exec-10,WRITE: TLSv1.2 Alert,length = 2[Raw write]: length = 70000: 15 03 03 00 02 02 2A                               ......*http-nio-8443-exec-10,called closeSocket()http-nio-8443-exec-10,handling exception: javax.net.ssl.SSLHandshakeException: server certificate change is restricted during renegotiation

我使用Spring REST模板来调用REST调用并仅使用TLS_V1.2,但仍然遇到上述错误.

TrustStrategy ts = new TrustStrategy() {      @OverrIDe      public boolean isTrusted(          X509Certificate[] x509Certificates,String s)          throws CertificateException {        return true; // Todo : revisit      }    };    SSLContext sslcontext = org.apache.http.ssl.SSLContexts.custom()        .loadKeyMaterial(keyStore,keypass.tochararray())        .loadTrustMaterial(trustStore,ts)         .build(); SSLConnectionSocketFactory sslsf = new SSLConnectionSocketFactory(            sslcontext,new String[] {                "TLSv1.2" },null,SSLSocketFactory.ALLOW_ALL_HOSTname_VERIFIER);           return httpClIEnts.custom().setSSLSocketFactory(sslsf).build();      }

在谷歌搜索我发现这个问题将不会发生在TLSv1.2和Java 8(java版“1.8.0_60”).我正在使用Spring 4 RestTemplete来调用其余的调用.

我正在使用以下版本的httpclinet: –

 

由于我是SSL的新手,我几乎没有问题: –

1).这是SSL clinet还是SSL服务器问题?

2).有时候连接工作并且有时会破坏的任何真正原因?失败的技术原因.

3).这与客户端的任何缓存有关

如果有人可以指出真正的问题,这也很棒.

最佳答案在硬件负载均衡器将您的连接从一个节点切换到另一个节点之后,Java SSL堆栈可能拒绝重新协商.

要使这样的部署工作,“Apache SW LB”实例都必须使用完全相同的虚拟主机URL和SSL配置.没有明显的理由不这样做,因为它不会与任何系统配置冲突.

因此,即使虚拟主机URL相同,您的问题也会混淆拒绝您的群集部署的客户端行为,每个节点使用不同的私钥/服务器证书.

总结

以上是内存溢出为你收集整理的在使用Java 8重新协商TLS_1.2期间,服务器证书更改受到限制全部内容,希望文章能够帮你解决在使用Java 8重新协商TLS_1.2期间,服务器证书更改受到限制所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1256133.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-07
下一篇 2022-06-07

发表评论

登录后才能评论

评论列表(0条)