Rsa*_*sha 19 java ssl jboss7.x
我有一个Java程序,使用SSL/TLS连接到Web服务器,并通过该连接发送各种HTTP请求.服务器是localhost并使用自签名证书,但我的代码使用自定义TrustManagers,并忽略无效证书.它一直运作到现在.
服务器上的唯一区别是它曾用于运行jboss 6并且现在正在运行jboss 7.我不确定这是否是配置问题,或者我的代码是否有问题,但如果我的代码有问题,我会得到相同的错误我尝试使用其他基于Java的程序(如WebScarab或ZAP)进行连接.
在任何情况下,我可以对我的代码做些什么来解决这个问题?这是完整的错误:
Received fatal alert: handshake_failure
javax.net.ssl.SSLHandshakeException: Received fatal alert: handshake_failure
at com.sun.net.ssl.internal.ssl.Alerts.getSSLException(Unknown Source)
at com.sun.net.ssl.internal.ssl.Alerts.getSSLException(Unknown Source)
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.recvAlert(Unknown Source)
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.readRecord(Unknown Source)
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.performInitialHandshake(Unknown Source)
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.startHandshake(Unknown Source)
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.startHandshake(Unknown Source)
at sun.net.www.protocol.https.HttpsClient.afterConnect(Unknown Source)
at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(Unknown Source)
at sun.net.www.protocol.https.HttpsURLConnectionImpl.connect(Unknown Source)
Run Code Online (Sandbox Code Playgroud)
以下是失败前的调试消息:
main, WRITE: TLSv1 Handshake, length = 75
main, WRITE: SSLv2 client hello message, length = 101
main, READ: TLSv1 Alert, length = 2
main, RECV TLSv1 ALERT: fatal, handshake_failure
Run Code Online (Sandbox Code Playgroud)
Rsa*_*sha 25
所以我发现了问题.Java中可能存在错误,但客户端似乎启动了TLSv1握手,但随后发送了SSLv2客户端问候消息,此时服务器拒绝连接.
即使您使用TLS实例创建SSLContext,也会发生这种情况:
SSLContext sslContext = SSLContext.getInstance("TLS");
Run Code Online (Sandbox Code Playgroud)
解决方案是在进行任何连接尝试之前设置系统属性:
System.setProperty("https.protocols", "TLSv1");
Run Code Online (Sandbox Code Playgroud)
可能还有其他解决方案,但这个对我有用.
| 归档时间: |
|
| 查看次数: |
94348 次 |
| 最近记录: |