我对SSL非常陌生,并且受到似乎已知问题的影响。我的应用程序是SSL客户端,并调用另一个启用了双向SSL的组件。两个组件中的证书都是正确的,并且连接有时可以正常工作。每台服务器都有自己的服务器证书和私钥,但具有相同的根证书和中间证书。服务器证书更改在与Java 8的TLS_1.2重新协商期间受到限制
服务器中的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_certificate
http-nio-8443-exec-10, WRITE: TLSv1.2 Alert, length = 2
[Raw write]: length = 7
0000: 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
我使用弹簧安置模板调用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();
}
ON google搜索我发现像,这个问题将不会被用于happeneing TLSv1.2工作和Java 8(Java版本 “1.8.0_60”)。我正在使用Spring 4 RestTemplete来调用其余的调用。
,我使用以下版本httpclinet的: -
org.apache.httpcomponents
httpclient
4.4.1
由于我是新来的SSL,我有几个问题入手: -
1)。这是一个SSL clinet或SSL服务器的问题? 2)。为什么连接有时会工作并打破某些时间的任何真正原因?失败的技术原因。 3)。这是否与客户端的任何缓存有关
如果有人可以指出这个问题的实际情况,那么这也很棒。
2016-06-14
Manu
+0
关于goolging,我可以找到的是,与Java verison Java(TM)SE运行时环境(build 1.8.0_60-b27)和httpClient 4.4.1,我们不应该得到这个错误。但我仍然得到这个.. 。 –
+0
你如何初始化你的'sslContext'变量? –
+0
我已将您所要求的详细信息添加到问题 –