标签: xml-signature

什么是xml签名中的规范化?

什么是xml签名中使用的规范化标记.它存在于<signed info>元素中.我通过网络浏览了各种文件.但是所有这些都太抽象了,我无法理解.如果有人可以解释规范化标签中应该包含哪些内容以及应该如何使用它将会有所帮助?
我对<signature value>元素也有疑问.它包含什么签名?

xml xml-signature

2
推荐指数
1
解决办法
2048
查看次数

如何仅签名XML文件的一部分-Java XMLSignature

我是新手,我很着急。我只是想对XML的一部分进行数字签名。

要签名的XML是这样的:

    <?xml version="1.0" encoding="UTF-8"?><ns0:CEE_Adenda xmlns:ns0="http://adenda.es" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://adenda.es Test_v1.xsd">
<ns0:CEE version="1.0" xmlns:ns0="http://adenda.es">//XML to sing
............ 
</ns0:CEE>
<ns0:Adenda> //Part to exclude
......
</ns0:Adenda>
</ns0:CEE_Adenda>
Run Code Online (Sandbox Code Playgroud)

,以获得这样的结构:

        <?xml version="1.0" encoding="UTF-8"?><ns0:CEE_Adenda xmlns:ns0="http://adenda.es" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://adenda.es Test_v1.xsd">
    <ns0:CEE version="1.0" xmlns:ns0="http://adenda.es">//XML to sing
    ............ 
<Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
    <SignedInfo>
    <CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/>
    <SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/>
    <Reference URI="">
        <Transforms>
            <Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/>
        </Transforms>
        <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>
        <DigestValue>vMg+tzKiwC8epApusLGo23at0ss=</DigestValue>
    </Reference>
</SignedInfo>
<SignatureValue>dVqqHp437r7jAeEOB6mxgSOKnpT6EITRscd0mzA/zDep3Wkg1CM/m0ojDHnlkC7l
    </ns0:CEE>
    <ns0:Adenda> //Part to exclude
    ......
    </ns0:Adenda>
    </ns0:CEE_Adenda>
Run Code Online (Sandbox Code Playgroud)

这是我用来尝试对其进行签名的代码,但是我只需要对XML的一部分进行签名并将结果放入此标记中。

这是我正在使用的代码:

//Create a DOM XMLSignatureFactory that will be used to
        // generate the …
Run Code Online (Sandbox Code Playgroud)

java xml-signature

2
推荐指数
1
解决办法
3841
查看次数

使用dsig:签名和TLS客户端证书签署XML消息之间的区别

我意识到这个问题可能有点模糊,或者我可能使用了不正确的术语,那是因为我试图掌握这些东西:).

我需要使用dsig:Signature部分实现XML消息的数字签名.我想我理解这个过程; 我将使用私钥对其进行签名,这将保证收件人发送邮件的是我,并且没有人篡改过它.

我是对的,这与实施TLS客户端证书不同,但目标是一样的吗?(因为TLS是传输级别,对吧?)实现客户端证书会更容易吗?这个比那个好吗?

非常感谢你的回复,

马亭

更新1:

我认为另一个区别是使用TLS客户端证书将整个邮件加密,而使用数字签名时,邮件本身将是纯文本,包含签名部分.

xml security ssl digital-signature xml-signature

1
推荐指数
1
解决办法
2189
查看次数

如何使用证书和私钥在Java中签署XML文档?

我正在尝试使用私钥和证书签署XML文档,这些证书是从数据库中正确检索的.这个私钥和证书给了我,所以我不太确定Java中的提供程序等价.为了签署XML文档,我使用了本教程

我为此执行的代码如下:

        PrivateKey pk = null;
        javax.security.cert.X509Certificate cert = null;
        try{
            ByteArrayInputStream bis = new ByteArrayInputStream(keyCer.getLlave());
            ObjectInput in = new ObjectInputStream(bis);
            pk = (PrivateKey) in.readObject(); 
            bis.close();

            bis = new ByteArrayInputStream(keyCer.getCertificado());
            in = new ObjectInputStream(bis);
            cert = (javax.security.cert.X509Certificate) in.readObject(); 
            bis.close();

            keyCer.setCertB64(Base64.encodeBase64String(cert.getEncoded()));

            DocumentBuilderFactory dbfac = DocumentBuilderFactory.newInstance();
            dbfac.setNamespaceAware(true);
            DocumentBuilder docBuilder;
            docBuilder = dbfac.newDocumentBuilder();
            DOMImplementation domImpl = docBuilder.getDOMImplementation();
            Document doc = domImpl.createDocument("http://cancelacfd.sat.gob.mx", "Cancelacion", null);
            doc.setXmlVersion("1.0");
            doc.setXmlStandalone(true);

            Element cancelacion = doc.getDocumentElement();
            cancelacion.setAttributeNS("http://www.w3.org/2000/xmlns/","xmlns:xsd","http://www.w3.org/2001/XMLSchema");
            cancelacion.setAttributeNS("http://www.w3.org/2000/xmlns/","xmlns:xsi","http://www.w3.org/2001/XMLSchema-instance");
            cancelacion.setAttribute("RfcEmisor", rfc);
            cancelacion.setAttribute("Fecha", fecha);

            Element folios = doc.createElement("Folios");
            cancelacion.appendChild(folios);
            for (int …
Run Code Online (Sandbox Code Playgroud)

java security xml-signature

1
推荐指数
1
解决办法
9741
查看次数

如何计算XAdES签名的SignedProperties的摘要?

对于如何计算XAdES签名中SignedProperties元素的摘要,我已经进行了几天的努力。我有一个参考XML文件,其中计算了两个摘要值(正在签名的文件和已签名的属性),我知道它很好,因为它通过了验证程序。我为要签名的文件计算了正确的摘要值,但是无论将什么作为摘要方法的输入(我使用OpenSSL),我都无法获得与参考文件相同的值。当然,我自己的文件此后不会通过验证程序。我使用以下命令来计算摘要:

openssl dgst -sha256 -binary myfile.xml | openssl base64
Run Code Online (Sandbox Code Playgroud)

我通过提取参考文件的SignedProperties元素记录了文件myfile.xml并按原样保存。

<xades:SignedProperties Id="xmldsig-f6a6a2a1-87af-4720-8eed-cf4532e99106-signedprops"><xades:SignedSignatureProperties><xades:SigningTime>2015-09-22T09:02:48.624+02:00</xades:SigningTime><xades:SigningCertificate><xades:Cert><xades:CertDigest><ds:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/><ds:DigestValue>cAJECbIzXZiLH+ILWPrM5jfA13GKcEC8t1qe7/BxqBM=</ds:DigestValue></xades:CertDigest><xades:IssuerSerial><ds:X509IssuerName>CN=thawte SHA256 Code Signing CA,O=thawte\, Inc.,C=US</ds:X509IssuerName><ds:X509SerialNumber>13010307134774063901853305426952669967</ds:X509SerialNumber></xades:IssuerSerial></xades:Cert></xades:SigningCertificate></xades:SignedSignatureProperties><xades:SignedDataObjectProperties><xades:DataObjectFormat ObjectReference="#xmldsig-f6a6a2a1-87af-4720-8eed-cf4532e99106-ref0"><xades:Description>signature détachée du fichier indexfile.txt</xades:Description><xades:MimeType>text/plain</xades:MimeType></xades:DataObjectFormat></xades:SignedDataObjectProperties></xades:SignedProperties></xades:SignedProperties>
Run Code Online (Sandbox Code Playgroud)

显然,我应该得到的价值:

6JK3GHDL25+EIRefNMQJ3SOGSI8uzQ45PiziMomZkYs=
Run Code Online (Sandbox Code Playgroud)

但是我不明白。我不知道是否必须进行一些转换或规范化,关于这部分的说明非常模糊。它以UTF-8编码,没有换行符。

有人怎么做吗?有什么把戏吗?

digest digital-signature xml-signature

1
推荐指数
1
解决办法
2030
查看次数

标签 统计

xml-signature ×5

digital-signature ×2

java ×2

security ×2

xml ×2

digest ×1

ssl ×1