Altova XMLSpy 2023 Enterprise Edition

要为XML文档创建XML签名,请打开您想要为其创建签名的XML文档。然后,单击菜单命令XML | 创建XML签名。这将打开“创建XML签名”对话框(参见下方截图),其设置如下所述。

单击以展开/折叠

 

身份验证方式:证书或密码

签名可以基于证书或密码。选择您想要使用的方式的单选按钮。

 

证书:单击选择按钮并浏览想要的证书。您选择的证书必须具有私钥。签名是使用证书的私钥生成的。要验证签名,需要访问证书(或其公钥版本)。证书的公钥是用来验证签名的。有关证书的更多详细信息,请参见使用证书部分。

密码:输入一个长度为5到16个字符的密码。随后将需要此密码来验证签名。

 

请注意:XMLSpy 2018版开始,用于签署基于密码的文件的算法已从HMAC-SHA1更新为HMAC-SHA256。以前版本的XMLSpy将无法使用XMLSpy 2018生成的密码来验证签名。

 

转换

XML数据被转换,转换的结果用于创建签名。您可以在执行签名计算之前指定要应用于文件的XML数据(SignedInfo内容)的规范化算法。算法之间的主要差异点如下所示:

 

带注释或不带注释的Canonical XML:如果签名计算包括了注释,则对XML数据中注释的任何更改都将导致验证失败。否则,注释可能会在文档签名后被修改或被添加到XML文档中,但签名仍将被验证为真实的。

Base64:XML文档的根(或文档)元素被认为是Base64编码的,并以其二进制形式读取。如果根元素不是Base64,则将返回错误,或元素被读取为空。

无:不执行任何转换,直接将保存在磁盘上的二进制文件中的XML数据传递给签名创建。数据的任何后续变化都将导致签名验证失败。然而,如果选择了去除空白复选框选项,则所有的空白都将被去除,并且对空白的更改将被忽略。选项和Canonicalization选项之间的一个主要区别在于,规范化生成一个XML数据流,其中的一些差异,例如特性顺序,已被规范化。结果,规范化转换将任何更改规范化,例如特性顺序(因此验证将成功),而无转换将反映这一更改(验证将失败)。请注意,如果签名是嵌入的(封内或封外签名),则会执行默认规范化。当签名是分离的,选择None且未选中去除空白复选框时,将按原样使用XML数据(即不进行转换)。

 

签名放置

签名可以放置在XML文件中,或创建为单独的文件。以下是可用的选项:

 

封内签名:Signature元素被创建为根(或文档)元素的最后一个子元素。

封外签名:Signature元素被创建为根(或文档)元素,XML文档作为子元素插入。

分离签名:XML签名被创建为单独的文件。在这种情况下,您可以指定签名文件的文件扩展名以及是否将文件名与以下项一起创建:(i) 追加到XML文件名的扩展名(例如,test.xml.xsig),或(ii) 替换XML文件的XML扩展名的扩展名(例如,test.xsig)。您还可以指定在签名文件中,对XML文件的引用是相对路径还是绝对路径。

 

提示:XML Schema(.xsd)文件的XML签名可以从Schema视图中以分离签名文件的形式创建(非嵌入)。XBRL文件的XML签名可以从XBRL视图中以分离签名文件的形式创建(非嵌入)。WSDL文件的XML签名可以从WSDL视图中以分离签名文件的形式创建,也可以将其“封装”在WSDL文件中。

 

请注意:如果XML签名以分离(单独)文件的形式创建,则XML文件和签名文件将通过签名文件中的引用而相互关联。因此,在签名位于外部文件中的情况下,签名验证必须在签名文件处于活动状态时进行而不是在XML文件处于活动状态时进行。

 

追加密钥信息

如果签名是基于证书的,则追加Keyinfo选项将可用。如果签名是基于密码的,则该选项将不可用。

 

如果选择了该选项,则公钥信息将放置在签名中,否则密钥信息不会包括在签名中。包括密钥信息的好处是验证过程不需要证书本身(尤其是其中的公钥信息),因为签名中存在密钥信息。

 

© 2017-2023 Altova GmbH