0

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

在此处输入图像描述

有人知道如何解决吗?

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

链接到示例 pdf 文件 https://drive.google.com/file/d/0B61KdyZ43x-9cEk5YVV6WVd4WUU/view?usp=sharing

4

1 回答 1

2

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

签名包含嵌入的时间戳,但它是无效的。

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

TSA 证书

您的 TSA 证书无效。

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

参见规范:

TSA 必须使用专门为此目的保留的密钥对每个时间戳消息进行签名。TSA 可以有不同的私钥,例如,以适应不同的策略、不同的算法、不同的私钥大小或提高性能。相应的证书必须仅包含 [RFC2459] 第 4.2.1.13 节中定义的扩展密钥使用字段扩展的一个实例,其 KeyPurposeID 具有值:

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

RFC3161 的第 2.3 节。* TSA 的标识*

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

于 2016-01-04T11:07:29.747 回答