存在冲突的签名证书属性 - 来自TSA for PDF的时间戳

时间:2017-11-26 00:51:40

标签: x509certificate bouncycastle trusted-timestamp

我们的TSA最近升级了他们的TSA服务器,但是当我们尝试对我们的PDF进行数字签名和时间戳(使用C#代码)时,这会导致“存在冲突的签名证书属性”错误。

如果我使用TSA的旧服务器或SignFiles测试服务器,那么一切都按预期工作,但一旦切换到新服务器,就会出现问题。

我们正在使用SignFiles,它看起来是BouncyCastle的简单包装器。该错误发生在Bouncy Castle“Validate(...)”方法中。

VS Code Showing Error

我认为错误是由于下面突出显示的调用而发生的。

BouncyCastle Code - Validate(...) where error happens

此时,我有点迷失,因为我不知道上面的代码检查的值是什么,但我认为它可能是“增强的密钥用法”值。

如果是,那么我看到旧时间戳(左侧)和不起作用的新时间戳(右侧)之间存在以下差异。

Working and Non-Working Certificates Returned by TSA

任何人都可以告知这是否是正在检查的正确值?

任何人都可以告知为什么会出现这种错误,以及TSA可以在其设置中纠正的内容以及如何生成时间戳,还是需要更新Bouncy Castle以使用新的TSA服务器?

我们将继续使用旧版服务器,但需要修复此问题以利用新的更快的服务器。

我在这里只发现了另外一个问题: http://bouncy-castle.1462172.n4.nabble.com/Time-Stamp-with-both-SigningCertificate-and-SigningCertificateV2-td3457605.html

谢谢,

罗布

1 个答案:

答案 0 :(得分:2)

您的客户端库似乎在内部使用的是早于1.8的BouncyCastle,它错误地处理了时间戳。正如你已经正确地发现这个问题(由我在JIRA issue 85中报告并在BouncyCastle 1.8中修复)。

原始RFC3161兼容时间戳仅包含SigningCertificate(OID 1.2.840.113549.1.9.16.2.12)CMS属性,其中包含TSA证书的SHA-1哈希值。但由于全世界放弃了SHA-1,RFC5035更新了RFC3161并允许使用SigningCertificateV2(OID 1.2.840.113549.1.9.16.2.47)CMS属性和SHA-256(或任何其他)TSA证书的哈希值。它还允许同时使用这两个属性来支持可能不支持新哈希算法的旧客户端。所以IMO完全可以让TSA包含这两个属性。

您有两种选择:

  1. 请求您的客户端库的提供商将其升级到the issue has been fixed的BouncyCastle 1.8。 IMO会更容易。
  2. 请求您的时间戳提供程序重新配置其TSA服务器,使其在其生成的时间戳中不包含这两个CMS属性。 IMO会更难。
  3. 如果事情不够清楚或者您需要更多细节,请告诉我。