我正在使用x509证书签署saml响应和断言。响应发布到java应用程序,这会引发错误签名长度不正确...“。我被要求确保xml doc使用JKS格式的证书而不是pkcs12签名。
有没有办法在c#中以jks格式签署xml文档,然后将saml响应发布到java app?
答案 0 :(得分: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密钥库)