首页 > 解决方案 > 签名算法的算法约束检查失败:MD5withRSA

问题描述

今天想在AEM中使用HttpClient调用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

有谁知道如何解决它?

谢谢,阿甘

标签: javaaem

解决方案


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

确保您实际更改了程序所看到的文件

  • 现代版本的 Windows(自 Vista 以来的 IIRC,可能是 7)不喜欢安装程序以外的任何东西下的文件\Program Files\Program Files (x86)由任何东西编写的文件。他们至少有时会做的一件事是将此类写入“虚拟化”到隐藏在 per-user 下某处的不同文件%appdata%。搜索,你会发现很多类似的问题和挫折。

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

java.security.properties=filename如果您无法修复标准文件中的设置,您可以通过设置 sysprop(不是 secprop)或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*. 我把它放在另一个顶级目录中,没有这些问题。

当然,告诉负责服务器的人他们已经落后于时代:-)


推荐阅读