1

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

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


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

4

1 回答 1

0

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

  1. 如何根据RFC 3161中描述的时间戳协议 (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 中。

于 2015-10-12T18:14:18.450 回答