使用密钥和证书对XML进行签名

使用密钥和证书对XML进行签名,xml,certificate,sign,xmlseclibs,Xml,Certificate,Sign,Xmlseclibs,我想对我的xml文件进行签名,以便我提供给他们的人能够确定他们没有被篡改,并且我保证这些是我提供的xml文件。我正在使用xmlseclib(php,它似乎可以工作)。我有一些问题,希望你能为我回答: 在库中,我发送一个私有RSA密钥和一个证书。我应该如何处理证书?如果我使用我为https服务器购买的证书,它的有效期仅为1年?我希望我签署的文件永远有效。我应该生成自己的证书吗?在openssl中如何做到这一点 有谁能给我一个关于ds:SignatureValue、ds:DigestValue和ds

我想对我的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>
    
    
    这里有什么
    这里有什么
    这里有什么
    

    谢谢

    证书应包含在字段#3中。它可以帮助构建一个可信的证书链,以便接收方可以确定签名是否有效

    如果签名仍然有效,则取决于进行验证的人员。但通常情况下,您不会使用SSL证书对数据进行签名。建立另一个信任关系基本上是PKI,不属于Stackoverflow的范围

    字段#1简单地包含一个安全的哈希,该哈希采用base64编码,覆盖已签名的数据。可能存在多个哈希


    字段#2是签名信息部分上的签名。签名由
    SignedInfo
    上的另一个安全散列和一个非对称函数(如RSA的模幂)组成。它是二进制的,因此它也将以base64编码。

    您解决了这个问题吗?如何在base64中为字段#1生成哈希?呃,您遵循digsig标准吗?对不起,这包括了规范化之类的东西,这里要解释的有点多。你能在我提出的这个新问题中解释一下吗?