我有這個(gè)有效的 PHP 腳本,它向舊服務(wù)器(我無權(quán)訪問)發(fā)出 POST 請求。我需要用 Java/Spring 編寫一個(gè) REST api 來處理與這個(gè)舊服務(wù)器的所有通信。但是,我確實(shí)不斷收到以下異常:SSLHandshakeException:DH ServerKeyExchange 不符合算法約束我的猜測是服務(wù)器的安全級別太低(我無法更改)。PHP 腳本設(shè)置了一個(gè) SSL 密碼列表,我不知道如何在 Java 中復(fù)制。因此問題是,如何降低 Java 應(yīng)用程序的安全級別,以便它可以與服務(wù)器通信?php代碼:$ch = curl_init($url);curl_setopt($ch, CURLOPT_POST, 1);curl_setopt($ch, CURLOPT_POSTFIELDS, $json);curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json; charset=utf8'));curl_setopt($ch, CURLOPT_CONNECTTIMEOUT ,4);curl_setopt($ch, CURLOPT_SSL_CIPHER_LIST, "AES128-SHA");$response = curl_exec($ch);echo $response;我寫的Java代碼:CloseableHttpClient client = HttpClients.createDefault(); HttpPost httpPost = new HttpPost(url);httpPost.setEntity(new StringEntity(json));CloseableHttpResponse response = client.execute(httpPost); //Here SSLHandshakeException occurs String result = getResultStringFromResponse(response); client.close();return result;一般來說,我對 POST 請求的經(jīng)驗(yàn)非常有限,并且已經(jīng)研究這個(gè)問題好幾天了,但沒有任何進(jìn)展。任何指導(dǎo)/提示將不勝感激!
1 回答

牧羊人nacy
TA貢獻(xiàn)1862條經(jīng)驗(yàn) 獲得超7個(gè)贊
我通過刪除 java 對 http 請求所需的關(guān)鍵約束來解決這個(gè)問題。
這是通過轉(zhuǎn)到我的 jdk 文件夾并刪除文件 /conf/security/java.security 中的“DH keySize < 1024”來完成的。這一變化使得java接受服務(wù)器的低安全級別。如果有人知道如何在運(yùn)行時(shí)執(zhí)行此操作(例如僅針對特定的 POST 請求),那將是一個(gè)更好的解決方案。
- 1 回答
- 0 關(guān)注
- 159 瀏覽
添加回答
舉報(bào)
0/150
提交
取消