我正在尝试签名XML文件,由于某种原因,它在<X509Certificate>标记下添加了两个<X509Data>标记。
标签中的值不相同。 (请参见下面的示例)

<KeyInfo>
  <X509Data>
    <X509Certificate>KJASHDJASHAHDJA</X509Certificate>
    <X509Certificate>ASJKLDJASDJASDJKLASJDASJKDASA</X509Certificate>
  </X509Data>
</KeyInfo>


这是在我必须在过期后更改旧证书(代码之前运行正常)之后发生的。

我用来获取密钥信息节点的代码:

private KeyInfo getKeyInfo()
{
  KeyInfo keyInfo = new KeyInfo();
  KeyInfoX509Data keyInfoX509Data = new KeyInfoX509Data(this.certificate, X509IncludeOption.ExcludeRoot);
  keyInfo.AddClause(keyInfoX509Data);
  return keyInfo;
}


如果您需要我发布更多信息,请告诉我。

最佳答案

如果要消除输出中的中间证书,请更改

new KeyInfoX509Data(this.certificate, X509IncludeOption.ExcludeRoot);




new KeyInfoX509Data(this.certificate, X509IncludeOption.EndCertOnly);


然后它将只写签名证书,而不写链(根除外)。

08-26 00:09