我正在开发(java)一个 xml 验证应用程序,它需要连接到 Windows keystore 。 目前,我陷入以下消息:CannotBuildCertificationPathExecption:信任 anchor keystore 未初始化。
现在我可以使用以下示例从商店获取 key :http://stackoverflow.com/questions/5476974/java-access-to-intermediate-cas-from-windows-keystores 效果很好。并给了我使用 XAdES4J 的希望。
我使用的代码如下:
trustAnchors = KeyStore.getInstance("Windows-MY");
certValidator = new PKIXCertificateValidationProvider(trustAnchors, false);
p = new XadesVerificationProfile(certValidator);
v = p.newVerifier();
Element sigElem = (Element) signature.item(0); //Which contains the complete signature segment from the xml
XAdESVerificationResult r;
SignatureSpecificVerificationOptions options = new SignatureSpecificVerificationOptions().useBaseUri("http://www.ietf.org/rfc/");
r = v.verify(sigElem, options);
证书是 x509。加密方式XAdES-t。
有人知道如何与 Windows keystore 建立可信连接吗? 是否有有关 SignatureSpecificVerificationOptions 的任何信息。我发现很难根据我需要使用的实际设置来理解手册。
最佳答案
即使它是一个 Wndows keystore ,您仍然需要加载它:
trustAnchors.load(null);
PKIXCertificateValidationProvider 无法执行此操作,因为可能需要保护参数。
此外,您可能需要使用“Windows-ROOT”而不是“Windows-MY”来访问受信任的证书颁发机构。
关于java - 如何使用 XAdES4j 信任 Windows keystore 的 anchor ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13090442/