2009-12-03 10 views
0

J'utiliseSignedCms.CheckSignature() avec cert renouvelé -> nouvelle série?

SignedCms.CheckSignature (certColl, true)

(avec un seul Cert certColl) pour vérifier la signature d'un message PKCS-7. Mon problème est que je ne veux pas changer le certificat de signataires (partie publique du) sur mon serveur après que le signataire ait renouvelé son certificat :-(La clé publique, l'émetteur et le sujet restent inchangés après que le signataire ait renouvelé son certificat! doit fonctionner - au moins à mon avis, même si je ne suis pas un crypto-geek :-)

..mais malheureusement, le .NET-Framework lance une exception cryptographique "Impossible de trouver le signataire d'origine" comme le stacktrace dit exactement à:

SignerInfo.CheckSignature (X509Certificate2Collection extraStore, Boolean verifySignatureOnly)

Cela doit être parce que le numéro de série du certificat du signataire a changé et la propriété SignerIdentifier est en lecture seule et définie sur IssuerAndSerialNumber.

Est-ce que quelqu'un sait comment contourner cela?

Ou est-ce que je dois implémenter une vérification de signature "faite à la main" avec comme: signedMessage.ComputeSignature (signataire, false)?

Merci à l'avance et bonne programmation, Krile

Répondre

0

Pour tous les intéressés sur cette question:

Quelqu'un m'a dit que cela est dû à la PKCS spécification # 7, qui stipule que le SubjectKeyIdentifier est toujours réglé à IssuerAndSerialNumber.

+0

J'ai oublié de vous dire une solution de contournement possible: Vous pouvez mettre le certificat de signature dans la demande PKCS # 7 et sur le côté appelé, vous avez toutes les informations dont vous avez besoin. Bien sûr, le certificat de CA qui est avant tout le certificat de signature (client) doit être approuvé. Codage heureux! – Kr15

Questions connexes