【问题标题】:Algorithm constraints check failed on signature algorithm: MD5withRSA签名算法的算法约束检查失败:MD5withRSA
【发布时间】:2019-04-06 09:14:40
【问题描述】:

今天想在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

有人知道怎么解决吗?

谢谢, 福雷斯特

【问题讨论】:

    标签: java aem


    【解决方案1】:

    嗨@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. 重启电脑,问题就解决了。

    谢谢, 福雷斯特

    【讨论】:

      【解决方案2】:

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

      确定您实际上已经更改了程序所看到的文件。

      • 现代版本的 Windows(自 Vista 以来的 IIRC,可能是 7)不喜欢 \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* 中。我把它放在另一个顶级目录中,没有这些问题。

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-04-15
        • 1970-01-01
        • 2019-07-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多