簡體   English   中英

簽名算法的算法約束檢查失敗:MD5withRSA

[英]Algorithm constraints check failed on signature algorithm: MD5withRSA

今天,我想使用HttpClient在AEM中調用Hybris接口。 但是我收到錯誤消息“ java.security.cert.CertPathValidatorException:簽名算法:MD5withRSA的算法約束檢查失敗”。

在這一行中,引發異常“ java.security.cert.CertPathValidatorException:對簽名算法MD5withRSA的算法約束檢查失敗”。

httpClient.executeMethod(request);

我將java.security文件(C:\\ Program Files \\ Java \\ jdk1.8.0_191 \\ jre \\ lib \\ security \\ java.security)中的以下屬性更改為空,但是它不起作用。

jdk.certpath.disabledAlgorithms
jdk.tls.disabledAlgorithms
jdk.jar.disabledAlgorithms

我的JDK版本:jdk1.8.0_191

有人知道如何解決嗎?

謝謝,阿甘

另外: jdk.jar.disabledAlgorithm屬性與此問題無關。

確保你實際上已經修改了文件由程序所看到。

  • Windows的現代版本(從Vista開始為IIRC,可能是七個)不喜歡\\Program Files\\Program Files (x86)下的\\Program Files ,這些\\Program Files (x86)只能由安裝程序編寫。 他們至少有時要做的一件事是“虛擬化”這樣的寫操作,以隱藏在每個用戶%appdata%下某個地方的另一個文件中。 搜索后,您會發現很多類似的問題和挫敗感。

  • 調用Security.getProperty()來檢查程序中實際看到的設置。

如果您無法在標准文件中修復此設置,則可以通過設置sysprop(而非secprop) java.security.properties=filename或通過在早期調用Security.setProperty()來覆蓋另一個文件(在更方便的位置)中的設置。您的程序(在加載JSSE / PKIX類之前)。 看到:
放松的SSL算法以編程方式進行約束
Java-鎖定java.security中的TLS版本,但允許通過啟動配置覆蓋每個應用程序嗎?

另外,JDK不一定需要位於\\Program Files* 我把它放在另一個頂級目錄中,沒有這些問題。

當然可以告訴負責服務器的人,他們與時俱進:-)

嗨@ dave_thompson_085,

感謝您的重播。 我已通過以下步驟解決了此問題。

  1. 我使用命令“ where java”來檢查我真正使用的是哪個JDK。

  2. 我重新安裝了該JDK。

  3. 我從“ jdk.certpath.disabledAlgorithms”中刪除了MD5,從“ jdk.tls.disabledAlgorithms”中刪除了MD5withRSA

  4. 刪除了“ C:\\ Program Files(x86)\\ Common Files \\ Oracle \\ Java \\ javapath;” 從系統變量的路徑

  5. 重新啟動計算機,則此問題已解決。

謝謝,阿甘

暫無
暫無

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

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