Java &引用;NameConstraintExtension“的编码无效;通过SSL连接到web服务时

Java &引用;NameConstraintExtension“的编码无效;通过SSL连接到web服务时,java,ssl,certificate,truststore,rampart,Java,Ssl,Certificate,Truststore,Rampart,我在这里遇到了一些关于webservice调用的SSL问题。使用truststore中相同的证书设置,在生产环境中似乎一切正常,但当我尝试对后端运行某个证书签名web服务调用(我无法控制)时,出现以下异常: 线程“main”java.lang.IllegalArgumentException中出现异常:NameConstraintExtension的编码无效。 位于java.security.cert.TrustAnchor.setNameConstraints(TrustAnchor.java

我在这里遇到了一些关于webservice调用的SSL问题。使用truststore中相同的证书设置,在生产环境中似乎一切正常,但当我尝试对后端运行某个证书签名web服务调用(我无法控制)时,出现以下异常:

线程“main”java.lang.IllegalArgumentException中出现异常:NameConstraintExtension的编码无效。 位于java.security.cert.TrustAnchor.setNameConstraints(TrustAnchor.java:283) 位于java.security.cert.TrustAnchor(TrustAnchor.java:132) 位于org.apache.ws.security.components.crypto.Merlin.validateCertPath(Merlin.java:157) 位于org.apache.rampart.PolicyBasedResultsValidator.verifyTrust(PolicyBasedResultsValidator.java:807) 位于org.apache.rampart.PolicyBasedResultsValidator.validate(PolicyBasedResultsValidator.java:168) 位于org.apache.rampart.RampartEngine.process(RampartEngine.java:331) 位于org.apache.rampart.handler.RampartReceiver.invoke(RampartReceiver.java:92)

显然,这不仅仅是证书被信任的情况;在某一点上有一些错误的“编码”。所以,由于不知所措,甚至不知道从哪里开始,我需要一些关于

  • 什么是名称约束扩展
  • 这里需要什么样的编码

编辑:这似乎与信任库中的任何内容都无关,但实际上是密钥库,这使得它变得更加奇怪,因为相同的客户端身份验证在生产环境中运行良好。而且据我所知,在涉及的任何证书中都没有“名称约束”的内容。

我遇到了完全相同的错误,而且这似乎并不常见,所以我找不到答案。我在linux中使用openjdk。我尝试了不同的版本:1.6.0、1.7.0、1.8.0。我认为错误在证书中,但最终解决方案是从Sun/Oracle安装jdk或jre。
希望它能帮助别人。

请参阅(et pred)。虽然NameConstraints是几十年前在X.509v3中定义的,但实际上我很少听说有人使用它,然后通常以bug报告的形式使用,因为它不起作用。如果您(或您的应用程序/系统)有意使用它,您可能正在开拓新的领域。如果你能找出这段代码使用的是哪一个证书,我会亲自查看它,至少确定错误是在创建/生成端还是在解析/使用端。当然,我们并没有开创新局面,因为名称约束文本在任何证书中都没有出现……请准确地引用错误消息。