来自TSA的带有时间戳的PDF签名

来自TSA的带有时间戳的PDF签名,pdf,electronic-signature,Pdf,Electronic Signature,我们正在尝试将时间戳签名作为CMS格式的未签名属性嵌入,但在PDF中标记签名后,给出签名的PDF查看器包含嵌入的时间戳,但它无效 我们使用内部TSA服务(自签名)TSA和bouncy castle API进行加密和签名操作。但不知道时间戳发生了什么。谁知道我做错了什么 还添加了Java代码库和签名pdf示例以供参考 任何帮助都将不胜感激。这意味着Acrobat无法找到用于创建时间戳的证书。查看,看起来您没有在请求中请求时间戳颁发机构的证书(搜索Timestamp Token以将您带到CMS

我们正在尝试将时间戳签名作为CMS格式的未签名属性嵌入,但在PDF中标记签名后,给出签名的PDF查看器包含嵌入的时间戳,但它无效

我们使用内部TSA服务(自签名)TSA和bouncy castle API进行加密和签名操作。但不知道时间戳发生了什么。谁知道我做错了什么

还添加了Java代码库和签名pdf示例以供参考


任何帮助都将不胜感激。

这意味着Acrobat无法找到用于创建时间戳的证书。查看,看起来您没有在请求中请求时间戳颁发机构的证书(搜索Timestamp Token以将您带到CMS的相应部分)。在Bouncy Castle中,这是通过在TimeStampRequestGenerator实例上调用SetCertReq(true)实现的,如下所示:

        TimeStampRequestGenerator reqGenerator = new TimeStampRequestGenerator();
        // Request the server to also include the signing certificate:
        reqGenerator.SetCertReq(true);
当设置该属性时,时间戳授权将包括证书,或者更常见的是时间戳证书及其链,作为实际时间戳的SignedCms中的已签名属性


要确认证书包含在响应中,您可以将时间戳机构的响应作为十六进制字符串写入文本文件,并使用此网站对其进行解码。

TSTInfo结构中存在问题,其
tsa
成员为

C = IN,S = MH,L = NSDL,O = NSDL,OU = NSDL,CN = NSDL,E = nsdl@nsdl.co.in
但你的TSA证书的主题正好相反

E = nsdl@nsdl.co.in,CN = NSDL,OU = NSDL,O = NSDL,L = NSDL,S = MH,C = IN
根据RFC 3161,tsa字段的目的是在识别 运输安全管理局的名称如果存在,则它必须对应于 证书中包含的主题名称,用于 验证令牌

因此,细心的验证器不能使用您提供的证书来验证时间戳



我不知道这是否是唯一的问题,但它确实是一个阻碍。根据TSA RFC 3161,TSA字段的目的是给出识别TSA名称的提示。如果存在,则必须与证书中包含的用于验证令牌的主体名称之一相对应。但是,签署响应的实体的实际标识将始终通过在作为SignerinInfo一部分的SigningCertificate属性中使用证书标识符(ESSCertID属性)来实现(参见[ESS]第5节)。

对于此问题,TSA需要以以下方式构造
TSA
GeneralName
属性。在源代码中进行了以下更改。使用tsa证书构建tsa
SubjectDN

不工作
GeneralName gn=newgeneralname(GeneralName.directoryName,newx500name(cacert.getSubjectX500Principal().getName())

工作代码

X500Name iss=X500Name.getInstance(cacert.getSubjectX500Principal().getEncoded());GeneralName gn=新的GeneralName(GeneralName.directoryName,iss);tkg.setTSA(gn)

“有人知道我做错了什么吗?”-您既不共享PDF文件,也不共享代码。那么,我们应该如何知道你在做什么,更不用说你做错了什么了?实际上,我办公室的所有资源都受到限制,我的代码库在office machine上,我会尝试与你分享一些内容soon@mkl请查找谷歌链接示例pdf,我在其中收到上述消息[链接]下周我会找时间研究这个问题,因为我已经为POC编写了自己的TSA客户端和服务器,这在上面的google链接中共享。这
reqGenerator.SetCertReq(true)我在生成TSA请求时已经这样做了,但问题仍然存在。好的,你是对的,证书在那里,但没有太多!Acrobat说您的证书上似乎没有任何策略扩展。您可以向发送时间戳请求,并将从那里得到的响应中的证书与正在生成的证书进行比较。基本上,我倾向于从已知的运行时间戳证书复制策略扩展和任何其他扩展。另见。