我使用

SignedCms.CheckSignature(certColl,真)

(只有一个在certColl证书)来验证PKCS-7消息的签名。我的问题是,我不想改变我的服务器上的签名者证书(的公共部分)签名者已经更新他的证书:-(公钥,颁发者和使用者都保持不变签名者已经更新了他的证书后了!所以这有工作 - 至少在我看来,即使我可不是一个加密怪胎:-)

..但是,不幸的是,.NET框架在抛出一个异常加密“无法找到原始签名人”之类的堆栈跟踪准确说:

SignerInfo.CheckSignature(X509Certificate2Collection extraStore,布尔verifySignatureOnly)

此必须是由于签署证书的序列号已经改变,并且所述SignerIdentifier属性是只读,并设置为IssuerAndSerialNumber。

有谁知道如何解决办法呢?

或我实施“手工制作”的签名与某物像核实:signedMessage.ComputeSignature(签名者,FALSE)

预先感谢和快乐编程, Krile

有帮助吗?

解决方案

有关所有感兴趣的关于这个问题:

有人告诉我,这是由于PKCS#7规范,其中指出,执行subjectKeyIdentifier总是被设置为IssuerAndSerialNumber。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top