首页 > 解决方案 > 如何使用带有自签名证书的 TSA 服务为 pdf 添加时间戳?

问题描述

我正在尝试做的事情:

证明 PDF 文件在某个时间点之后没有被更改。

我是如何尝试的:使用自签名 RSA 4096 pkcs12 证书并使用受信任的 RFC3161 TSA 服务对 PDF 进行签名。

我是如何尝试的(详细):使用 OpenSSL 创建证书:

openssl genrsa -out john_doe_priv_rsa_key_4096.pem 4096
openssl req -new -key john_doe_priv_rsa_key_4096.pem -out john_doe_sign_req_4096.csr
openssl x509 -req -days 356 -in john_doe_sign_req_4096.csr -signkey john_doe_priv_rsa_key_4096.pem -out john_doe_cert_rsa_4096.crt
openssl pkcs12 -export -out john_doe_cert_rsa_4096.p12 -inkey john_doe_priv_rsa_key_4096.pem -in john_doe_cert_rsa_4096.crt

然后我使用瑞士政府提供的免费工具 ( https://www.e-service.admin.ch/wiki/display/openegovdoc/BatchSigner+Download ) 将签名应用于 PDF 并使用时间戳服务,特别是https://www.bit.admin.ch/bit/de/home/subsites/allgemeines-zur-swiss-government-pki/tsa-service.html不幸的是,这些链接仅提供德语、法语和意大利语,而不是英文(我需要的批处理文件在此处提供了一些修复:https ://pastebin.com/SA4S2udW )。我不需要使用这个工具——它是迄今为止我发现的唯一一个通过命令行签署 PDF 并使用 TSA 进行时间戳的工具。

我得到的结果是: 签名的 PDF 文件

原始 PDF 文件是这样的: 原始 PDF 文件

我用于签名的自签名证书是这样的: 用于签名的证书(密码:123)

当我在 acrobat 中打开签名证书时: Acrobat 显示的内容

现在我的问题:

  1. 如果我正确理解时间戳过程,那么即使证书本身不受信任(只要 TSA 受信任),也无法证明 PDF 没有被篡改,因为它已被时间戳 - 这种理解是否正确?

1.a 如果是:为什么 Acrobate 会说“签名包含嵌入的时间戳,但无法验证”?

1.b 如果否:是否有另一种方法可以使用 TSA 服务为来自受信任的 TSA 服务的 pdf 添加时间戳,而无需官方颁发的证书?

  1. 我如何证明 PDF 在我添加时间戳之后没有被篡改?

  2. 签名的 PDF 的大小大约是原始 PDF 的 4 倍——这真的是添加了这么多数据的签名还是引入了其他有效负载?

标签: pdftimestampcertificatersa

解决方案


推荐阅读