Altova XMLSpy 2023 Enterprise Edition

创建XML签名命令在文本视图、网格视图、Schema视图、WSDL视图以及XBRL视图中启用,它允许您为活动XML文档创建XML签名。单击此命令将打开“创建XML签名”对话框(参见下方截图),其设置如下所述。

SigCreatSigDlg01

 

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

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

 

证书:如果您想要使用证书,则该证书必须具有一个私钥并位于一个可访问的证书存储中。签名是使用证书的私钥生成的。要验证签名,需要访问证书(或其公钥版本)。证书的公钥是用来验证签名的。要选择想要使用的公私钥证书,请单击选择按钮并导航到该证书。有关证书的更多详细信息,请参见使用证书部分。

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

 

转换

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

 

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

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

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

 

签名放置

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

 

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

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

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

 

提示:XML Schema(.xsd)文件和XBRL文件的XML签名仅可以被创建为外部签名文件。对于WSDL文件,签名可以被创建为外部文件,并被“封装”在WSDL文件中。

 

提示:如果XML签名作为单独文件创建,则XML文件和签名文件将通过签名文件中的引用而相互关联。因此,在签名位于外部文件中的情况下,签名验证必须在签名文件处于活动状态时而不是在XML文件处于活动状态时进行。

 

追加密钥信息

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

 

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

 

© 2017-2023 Altova GmbH