签名算法的算法约束检查失败:MD5withRSA

时间:2018-11-02 05:49:24

标签: java aem

今天,我想使用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)中的以下属性更改为空,但是它不起作用。 / p>

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

MY JDK版本:jdk1.8.0_191

有人知道如何解决吗?

谢谢, 福雷斯特

2 个答案:

答案 0 :(得分:0)

此外:jdk.jar.disabledAlgorithm属性与此问题无关。

使某些确实已更改了程序所看到的文件。

  • Windows的现代版本(自Vista以来为IIRC,也许是七个)不喜欢​​由\Program Files\Program Files (x86)下的文件通过安装程序来编写。他们至少有时要做的一件事是“虚拟化”这样的写操作,以隐藏在每个用户%appdata%下某个地方的另一个文件中。搜索后,您会发现很多类似的问题和沮丧。

  • 调用Security.getProperty()来检查程序中实际看到的设置。

如果您无法在标准文件中修复此设置,则可以通过设置sysprop(而非secprop)java.security.properties=filename或通过提前调用Security.setProperty()在另一个文件中覆盖它(将其放置在更方便的位置)在程序中(在加载JSSE / PKIX类之前)。参见:
Relaxing SSL algorithm constrains programatically
Java - Lock down TLS version in java.security, but allow per app override via launch config?

或者,JDK确实不需要放在\Program Files*中。我把它放在另一个顶级目录中,没有这些问题。

当然可以告诉谁负责服务器,他们落后于时代了:-)

答案 1 :(得分:0)

@ 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. 重新启动计算机,然后此问题已解决。

谢谢, 福雷斯特