带有时间戳的 PDF 签名:证书详细信息不会出现在时间戳属性中

PDF signing with timestamp: certificate details does not appear in timestamp properties

我有一个以 RFC 3161 格式实现 TSA 服务器的代码。 当我尝试使用 TSAClientBouncyCastle 对带有时间戳的 PDF 文件进行签名时,我收到了一个未显示证书详细信息的签名

有人知道怎么解决吗?

我可以post这里的代码,但我不知道是哪一部分。 如果有人可以指导我了解 RFC 中的特定部分,那就太好了,然后我将 post 代码的相关部分,我们可以讨论它。 提前致谢

Link 对 pdf 文件进行采样 https://drive.google.com/file/d/0B61KdyZ43x-9cEk5YVV6WVd4WUU/view?usp=sharing

某些时间戳权限详细信息未显示的原因在您拥有的 高级签名属性 对话框下方的 签名属性 对话框中指出在您的屏幕截图前面:

因此,您不仅需要检查您的 PDF 签名代码,还需要检查以 RFC 3161 格式实现 TSA 服务器的代码或其使用的证书。

TSA证书

您的 TSA 证书无效。

通过你的签名挖掘,我终于看到了证书。事实证明,您似乎使用相同的证书来签署签名和时间戳。这行不通!

对照规范:

The TSA MUST sign each time-stamp message with a key reserved specifically for that purpose. A TSA MAY have distinct private keys, e.g., to accommodate different policies, different algorithms, different private key sizes or to increase the performance. The corresponding certificate MUST contain only one instance of the extended key usage field extension as defined in [RFC2459] Section 4.2.1.13 with KeyPurposeID having value:

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

(Section 2.3.* Identification of the TSA *of RFC3161)

特别是您的用户证书没有将其标记为时间戳证书所需的扩展密钥用法。