我有一个以RFC 3161格式实现TSA服务器的代码。 当我尝试使用TSAClientBouncyCastle使用时间戳签署PDF文件时,我收到一个签名,其中没有出现证书详细信息
有人知道如何解决这个问题吗?
我可以在这里发布代码,但我不知道它的哪一部分。 如果有人可以引导我到RFC中的特定部分,那将是很好的,然后我将发布相关的代码部分,我们可以讨论它。 提前致谢
链接到示例pdf文件 https://drive.google.com/file/d/0B61KdyZ43x-9cEk5YVV6WVd4WUU/view?usp=sharing
答案 0 :(得分:1)
屏幕截图前面的高级签名属性对话框下的签名属性对话框中显示了未显示某些时间戳授权详细信息的原因:
因此,您不仅需要检查PDF签名代码,还需要检查以XML 3161格式实现TSA服务器的代码或它使用的证书。
TSA证书
您的TSA证书无效。
通过签名,我最终查看了证书。事实证明,您似乎使用相同的证书签署签名和时间戳。这不行!
符合规范:
TSA必须使用保留的密钥对每个时间戳消息进行签名 专门为此目的。 TSA可能有不同的私钥, 例如,为了适应不同的政策,不同的算法, 不同的私钥大小或提高性能。该 相应的证书必须只包含一个实例 [RFC2459]部分中定义的扩展密钥用法字段扩展 4.2.1.13 KeyPurposeID具有值:
id-kp-timeStamping. This extension MUST be critical.
您的用户证书特别没有所需的扩展密钥用法,将其标记为时间戳证书。