我正在尝试从服务器获取时间戳 token ,并将此 token 应用于稍后将签名的 PDF 文件。
我问是否有人已经使用 java 处理过类似的概念
我有一些有关时间戳机构 (TSA) 的信息,例如:
- 政策:1.2.504.1.1.1.1.1.3.1.1
- 格式:RFC 3161
- 算法:与 2048 位 RSA 关联的 SHA1。
- UTC 时区
如何获取认证日期并将其放入 PDF 文件中?
最佳答案
您的问题可以分解为两个子问题:
如何根据 RFC 3161 中描述的时间戳协议(protocol) (TSP) 生成签名
如何将签名集成到 PDF 文件中?
子问题 1: 为了解决第一个问题,您需要两个利益相关者:TSP 客户端和 TSP 服务器。客户端必须向服务器发送请求(就像每个客户端-服务器通信一样),然后服务器向客户端发回响应。正如您已经提到的,TSA(时间戳机构)有责任处理该请求。挑战在于能够向 TSA 服务器发送请求。我称其为挑战,因为根据 TSP 构建请求很复杂。每个客户端请求必须格式化为 TimeStampReq(请参阅 RFC 3161 第 2.4.1 节),并且 TSP 还扩展了称为加密消息语法 (CMS) 的标准,该标准在 RFC 5652 中进行了描述。 。为了在此阶段为您提供帮助,您可以使用一个加密库,例如 BouncyCaSTLe 或 Eldos,它们以 Java 和/或 C# 实现 CMS 和/或 TSP 规范。
BouncyCaSTLe 是我最喜欢的,我已经使用过它了。它将立即为您完成以下任务:
- 使用您选择的哈希算法对您要签名的 PDF/文档进行哈希处理(确保该算法始终是安全的或推荐的)
- 使用您传递的参数为您创建一个 TimeStampReq
子问题 2: 为了确保文档或时间戳本身的完整性,不需要执行此步骤。您可以单独存储创建的时间戳和签名的 PDF/文档。我不是 PDF 专家。但我知道可以将数字签名嵌入其中。我无法告诉您哪个版本的 PDF 支持哪种格式的数字签名以及如何将其集成到 PDF 中。
关于java - 如何获取时间戳 token 并将其应用于PDF文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27858636/