0

我正在使用 x509 证书签署 saml 响应和断言。响应发布到 java 应用程序,该应用程序抛出错误签名长度不正确..."。我被要求确保 xml 文档使用 JKS 格式的证书而不是 pkcs12 进行签名。

有没有办法在 c# 中以 jks 格式签署 xml 文档,然后将 saml 响应发布到 java 应用程序?

4

1 回答 1

0

不存在以 JKS 格式签名的 XML 文档。这些是苹果和橙子。

XML 数字签名在 XMLDsig 标准中指定(假设您使用 XML 数字签名)。http://www.w3.org/TR/xmldsig-core/

当您签署某些内容时,您使用非对称密钥对的私钥,可能是 RSA 密钥对。http://en.wikipedia.org/wiki/RSA_%28algorithm%29

当您验证签名时,您使用公钥,通常包装在 X.509 证书中。http://en.wikipedia.org/wiki/Public_key_certificate

JKS 和 PKCS#12 是用于将私钥和证书存储在容器中的两种不同格式,使用密码加密(因为私钥应该是私有的,所以您想使用密码保护它)。

当您签署 XML 文档时,您将打开 JKS/P12 密钥库并使用私钥进行签名,并且可以选择包含证书以便于对收件人进行验证。在这两种情况下,私钥和证书是相同的,也就是说,无论您使用 JKS 还是 P12,XML 签名都是完全相同的。

可能您将 XML 文档PKCS12 密钥库都发送给收件人,而收件人无法正确打开 PKCS12 密钥库?

Java 可以毫无问题地打开 JKS 和 PKCS12,很可能您的问题与 JKS 与 PKCS12 之外的其他问题有关。

我不知道 C# 是否可以读取和/或写入 JKS 文件(JKS == Java Key Store)

于 2013-10-15T12:22:30.790 回答