java - 如何获取时间戳 token 并将其应用于PDF文件?

标签 java timestamp trusted-timestamp pdfstamper rfc3161

我正在尝试从服务器获取时间戳 token ,并将此 token 应用于稍后将签名的 PDF 文件。
我问是否有人已经使用 java 处理过类似的概念
我有一些有关时间戳机构 (TSA) 的信息,例如:

  • 政策:1.2.504.1.1.1.1.1.3.1.1
  • 格式:RFC 3161
  • 算法:与 2048 位 RSA 关联的 SHA1。
  • UTC 时区


如何获取认证日期并将其放入 PDF 文件中?

最佳答案

您的问题可以分解为两个子问题:

  1. 如何根据 RFC 3161 中描述的时间戳协议(protocol) (TSP) 生成签名

  2. 如何将签名集成到 PDF 文件中?

子问题 1: 为了解决第一个问题,您需要两个利益相关者:TSP 客户端和 TSP 服务器。客户端必须向服务器发送请求(就像每个客户端-服务器通信一样),然后服务器向客户端发回响应。正如您已经提到的,TSA(时间戳机构)有责任处理该请求。挑战在于能够向 TSA 服务器发送请求。我称其为挑战,因为根据 TSP 构建请求很复杂。每个客户端请求必须格式化为 TimeStampReq(请参阅 RFC 3161 第 2.4.1 节),并且 TSP 还扩展了称为加密消息语法 (CMS) 的标准,该标准在 RFC 5652 中进行了描述。 。为了在此阶段为您提供帮助,您可以使用一个加密库,例如 BouncyCaSTLe 或 Eldos,它们以 Java 和/或 C# 实现 CMS 和/或 TSP 规范。

BouncyCaSTLe 是我最喜欢的,我已经使用过它了。它将立即为您完成以下任务:

  1. 使用您选择的哈希算法对您要签名的 PDF/文档进行哈希处理(确保该算法始终是安全的或推荐的)
  2. 使用您传递的参数为您创建一个 TimeStampReq

子问题 2: 为了确保文档或时间戳本身的完整性,不需要执行此步骤。您可以单独存储创建的时间戳和签名的 PDF/文档。我不是 PDF 专家。但我知道可以将数字签名嵌入其中。我无法告诉您哪个版本的 PDF 支持哪种格式的数字签名以及如何将其集成到 PDF 中。

关于java - 如何获取时间戳 token 并将其应用于PDF文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27858636/

相关文章:

java - Java 中的 Ajax 长轮询,Spring MVC - session 范围问题

java - 使用星号制作条形图(处理负值)

mysql - 如何使用列时间戳默认 current_date 创建 mysql 表?

python - 转换时间戳格式时出现问题

时间戳协议(protocol)的Java实现

python - Python 中的时间戳服务器 rfc3161 响应 token 生成

java - JDialog:如何禁用模态对话框的 ESC 键?

java - 如何防止在类的实例上调用静态方法?

python - 如何在 pandas 或 matplotlib 中绘制两个 y 轴上的数据?

ssl - HTTP 上的时间戳签名是否容易受到攻击?