Pdf Adobe Acrobat时间戳错误

Pdf Adobe Acrobat时间戳错误,pdf,adobe,trusted-timestamp,Pdf,Adobe,Trusted Timestamp,我正在测试RFC3161时间戳服务器,我正在使用Foxit Reader、Xolido Sign Desktop和Adobe Acrobat Pro DC为PDF添加时间戳。我可以使用Foxit Reader和Xolido设置时间戳,但Adobe Acrobat返回“Error durante la firma.El nombre TSA no ocalize”,类似于“签名错误。TSA名称不匹配”。我已经搜索过了,Adobe config中的TSA服务器名称是您想要的,我已经使用证书的主题进行

我正在测试RFC3161时间戳服务器,我正在使用Foxit Reader、Xolido Sign Desktop和Adobe Acrobat Pro DC为PDF添加时间戳。我可以使用Foxit Reader和Xolido设置时间戳,但Adobe Acrobat返回“Error durante la firma.El nombre TSA no ocalize”,类似于“签名错误。TSA名称不匹配”。我已经搜索过了,Adobe config中的TSA服务器名称是您想要的,我已经使用证书的主题进行了准确的测试,只是使用了通用名称,等等。服务器在时间戳响应中将证书主题作为TSA名称返回,但似乎还可以。我不知道为什么Adobe说它、Foxit和Xolido都可以

Foxit Reader对话框显示“签名有效。由TimestampTest签名。文档自签名后未被修改。签名是来自安全时间等的文档时间戳。”


嗯,我终于解决了这个问题。我在使用OpenSSL时发现了相同的“tsa名称不匹配”错误,在阅读OpenSSL源代码时,我发现这是时间戳令牌中tsa名称和证书主题之间的本地比较。我的服务器正在使用BouncyCastle,当您从X500主题创建TSAName时,由于“标准事物”,它会反转de主题RDN(例如,它交换C=Foo、O=SomeOrg等),因为TSA名称是一个GeneralName对象,而不是X500名称对象

我反转主题,然后创建令牌TSA名称,现在Openssl和Adobe都验证ok

在服务器中,我现在有:

tsTokenGen.setTSA(new GeneralName(reverseX500Name(new X500Name(tsuName))));

public static X500Name reverseX500Name(final X500Name name) {
    RDN[] orig = name.getRDNs();
    int n = orig.length;
    RDN[] _new = new RDN[n];
    for (int i = 0; i < n; i++) {
        _new[i] = orig[n - 1 - i];
    }
    return new X500Name(_new);
}
tsTokenGen.setTSA(新的通用名称(reverseX500Name(新的X500Name(tsuName)));
公共静态X500名称反转X500名称(最终X500名称){
RDN[]orig=name.getRDNs();
int n=原始长度;
RDN[]_new=新RDN[n];
对于(int i=0;i

OpenSSL等效错误是INT_TS_RESP_VERIFY_令牌,它可以在TS_rsp_VERIFY.c第459行(与OpenSSL版本相关的行)中抛出de error。

我假设TSA签名者证书或连接安全证书中存在问题。请分享样品进行分析。我不知道你想要什么样的样品。我只是用keystorexplorer和PFX证书生成器生成了很多证书。我下载了一些TSA证书,并与矿山进行了比较,更新了一些字段,但一切都是一样的。我已经扩展了KeyUsage=“timestamp”(Critical)、KeyUsage=“Digital Signature,Non-De抵赖”(Critical)、Basic Constraints=“Subject不是CA,路径长度约束:None”、Authority Key Id和Subject Key Id,就像其他TSA证书一样(例如)。也许我的服务器有问题,不是证书,但我不明白为什么foxit reader工作正常。“我不知道你想要什么样的样本。”-一个带有时间戳的示例PDF,可以观察到你描述的行为。屏幕截图没有帮助。请分享一个带有时间戳的PDF示例,您描述的行为可以被观察到。