簡體   English   中英

SSL握手失敗 - Java 1.8

[英]SSL Handshake Failed - Java 1.8

只是讓人們知道我升級到Java 1.8后似乎已經遇到的一個問題。 並非所有解決方案都相同,因此發布了我如何解決這個問題。

但首先......由於安全性正在被有效降級,因此這不是一個值得生產系統的解決方案。 但是,如果你被阻止測試等,它可能是非常合適的。

我的問題是無論我做了什么......啟用SSLv3等我總是收到

"javax.net.ssl.SSLHandshakeException: Received fatal alert: handshake_failure".

以下是我為解決這個問題所采取的步驟。

首先,我發現了服務器使用的密碼。 我通過openssl做到了這一點。

openssl s_client -host yourproblemhost.com -port 443

這會產生(最后......)

SSL-Session:
    Protocol  : TLSv1.2
    Cipher    : RC4-MD5

現在..我們使用'Java-wise'來啟用該密碼?

Oracle鏈接

在該鏈接中,它具有名稱和它們的Java對應物。 所以對於RC4-MD5,我們有SSL_RSA_WITH_RC4_128_MD5。

好的。 現在我添加了一個System屬性。

-Dhttps.cipherSuites=SSL_RSA_WITH_RC4_128_MD5

在我的代碼中......

Security.setProperty("jdk.tls.disabledAlgorithms", "" /*disabledAlgorithms */ );

再說.. 這是一個絕對的最后手段'修復' ...但是如果你的頭撞到牆上讓它運行(進行測試),我希望它有用。

使用JDK 1.8.0_51版本 ,Java不再支持RC4作為客戶端(也作為服務器)來協商SSL握手,RC4被認為是弱(和受損)密碼,這就是刪除的原因

http://bugs.java.com/view_bug.do?bug_id=8076221

您仍然可以但是通過由移除RC4啟用jdk.tls.disabledAlgorithms從Java安全性配置或使用progamatically使他們setEnabledCipherSuites()方法

然而,更好的解決方案是更新服務器配置(如果它在您的控制之下)以升級到更強的密碼

RC4現在被視為受損密碼。 已從Oracle JSSE實現中的客戶端和服務器默認啟用的密碼套件列表中刪除RC4密碼套件。 這些密碼套件仍然可以通過SSLEngine.setEnabledCipherSuites()SSLSocket.setEnabledCipherSuites()方法啟用。

至於你使用Security.setProperty()設置它的方法,它不是可靠的方式,因為保存禁用算法字段是靜態的和最終的 ,所以如果該類首先加載你沒有控制它,你可以或者嘗試創建屬性文件

像這樣

## override it to remove RC4, in disabledcipher.properties
jdk.tls.disabledAlgorithms=DHE

在您的JVM中,您可以將其稱為系統屬性

java -Djava.security.properties=disabledcipher.properties blah...

RC4在14年前被有效破解。

Fluhrer,Mantin和Shamir(FMS)攻擊發表在2001年的論文 “RC4的密鑰調度算法中的弱點”中,利用了RC4密鑰調度算法中的弱點來從加密消息中重建密鑰。

問題不在Java 8中。

問題是您的服務器正在使用RC4。

感謝alton分享這樣的生命保護信息。 從那以后我只想改變一件事

openssl s_client -host yourproblemhost.com -port 443
returned ->
Protocol  : TLSv1.2
Cipher    : 0000
openssl s_client -connect X.X.X.X:993  -prexit -tls1
returned -> the expected response as
Protocol  : TLSv1
Cipher    : RC4-MD5

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM