2015-12-31 2 views
0

J'ai un code qui implémente le serveur TSA au format RFC 3161. Lorsque j'essaie de signer un fichier PDF avec horodatage à l'aide de TSAClientBouncyCastle, je reçois une signature où les détails du certificat ne sont pas « t apparaissentSignature PDF avec horodatage: les détails du certificat n'apparaissent pas dans les propriétés d'horodatage

enter image description here

Quelqu'un sait comment résoudre cela?

Je peux poster le code ici, mais je ne sais pas quelle partie de celui-ci. Ce serait bien si quelqu'un pouvait me guider vers une section spécifique dans le RFC, puis je posterai la partie pertinente du code et nous pourrons en discuter. Merci à l'avance

Lien vers l'échantillon fichier pdf https://drive.google.com/file/d/0B61KdyZ43x-9cEk5YVV6WVd4WUU/view?usp=sharing

+0

Veuillez partager un exemple de fichier PDF horodaté par votre code pour analyse. – mkl

+0

J'ai ajouté un lien vers mon message principal. Merci – AGDev

Répondre

1

La raison pour laquelle certains détails de l'autorité d'horodatage ne semblent pas est indiqué dans les Propriétés de la signature dialogue sous les Propriétés de la signature avancée dialogue que vous avez en face dans votre capture d'écran:

The signature includes an embedded timestamp but it is invalid.

Ainsi, vous n'avez pas seulement d'inspecter votre code de signature PDF mais aussi votre code qui implémente le serveur TSA au format RFC 3161 ou les certificats qu'il utilise.

Le certificat TSA

Votre certificat de TSA est invalide. En fouillant votre signature, j'ai fini par regarder les certificats. En fin de compte, vous semblez utiliser le même certificat pour signer la signature et l'horodatage. Cela ne peut pas fonctionner!

Cf. la spécification:

Le TSA DOIT signer chaque message horodatage avec une clé réservée spécifiquement à cette fin. Un TSA PEUT avoir des clés privées distinctes, par exemple , pour prendre en charge différentes politiques, différents algorithmes, différentes tailles de clés privées ou pour augmenter les performances. Le certificat correspondant doit contenir qu'une seule instance de l'extension du champ d'utilisation de clé étendue tel que défini dans [RFC2459] Section 4.2.1.13 avec une valeur ayant KeyPurposeID:

id-kp-timeStamping. This extension MUST be critical. 

(Section 2.3. Identification of the TSA of RFC3161)

Votre certificat d'utilisateur en particulier n'a pas l'utilisation de la clé étendue requise pour le marquer comme un certificat d'horodatage.

+0

quand j'ai changé le certificat à un autre avec l'utilisation de la clé d'horodatage, cela fonctionne! merci beaucoup – AGDev

+0

Malheureusement, je suis encore coincé avec un problème plus difficile.J'essaye de signer avec un certificat créé par mon département PKI, il contient id-kp-timeStamping comme requis, mais j'ai le même problème. Je joins l'exemple du mauvais pdf signé [link] (http://jiom.org.il/files/badSignedPDF.pdf). Est-il possible de regarder, qu'est-ce qui ne va pas? – AGDev

+0

@AGDev Il contient l'extension d'utilisation de la clé étendue avec la valeur 'id-kp-timeStamping' mais elle n'est pas marquée comme critique. Voir ci-dessus, pour l'horodatage, il doit être marqué critique. – mkl