我正在尝试签名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);
然后它将只写签名证书,而不写链(根除外)。