我想签署我的xml文件,以便我给他们的人可以确定他们没有被篡改,我保证这些是我的XML文件。我使用xmlseclib(php似乎工作)。我有一些问题,希望你能回答我:
在库中,我发送私有RSA密钥和证书。我该如何处理证书?如果我使用我为https服务器购买的证书,它只能有效期为1年?我希望我签名的文件永远有效。我应该生成自己的证书吗?我如何在openssl中做到这一点?
有人可以给我一个概述ds:SignatureValue,ds:DigestValue和ds:X509Certificate及其使用方法吗?
我自动添加的标签:
<ds:Signature xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
<ds:SignedInfo><ds:CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml- exc-c14n#"/>
<ds:SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/>
<ds:Reference>
<ds:Transforms>
<ds:TransformAlgorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/>
</ds:Transforms><ds:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>
<ds:DigestValue>WHAT_GOES_HERE</ds:DigestValue>
</ds:Reference>
</ds:SignedInfo>
<ds:SignatureValue>WHAT_GOES_HERE</ds:SignatureValue>
<ds:KeyInfo>
<ds:X509Data>
<ds:X509Certificate>WHAT_GOES_HERE</ds:X509Certificate>
</ds:X509Data>
</ds:KeyInfo>
</ds:Signature>
由于
答案 0 :(得分:0)
证书应包含在字段#3中。它可以帮助构建可信的证书链,以便接收者可以确定签名是否有效。
如果签名仍然有效取决于进行验证的人。通常,您不会使用SSL证书来签名数据。建立另一个信任关系基本上是PKI,并且超出了Stackoverflow的范围。
字段#1只包含对已签名数据进行base64编码的安全散列。可能存在多个哈希值。
字段#2是SignedInfo
部分的签名。签名由SignedInfo
上的另一个安全散列和RSA的模幂运算之类的非对称函数组成。它是二进制的,所以它也将是64位编码。