You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用SyncFusion给PDF加GlobalSign时间戳验证失败求助

PDF数字签名时间戳验证失败的解决方法(SyncFusion + GlobalSign)

问题背景

使用SyncFusion作为PDF库、GlobalSign作为CA实现PDF数字签名时,实现IPdfExternalSigner接口的Sign方法,返回的时间戳始终无法被Adobe验证,提示“签名包含嵌入的时间戳,但无法验证”,但签名主体部分(绿色勾选、LTV支持)均正常。已确认从GlobalSign获取的RFC3161时间戳令牌本身有效,尝试过传入原始DER字节或rfc3161TimestampToken.AsSignedCms().Encode()字节均无效。

核心原因

SyncFusion的IPdfExternalSigner接口要求timeStampResponse返回的是完整的RFC3161 TimeStampResponse结构,而非仅时间戳令牌(TimeStampToken)的DER字节。多数TSA服务直接返回的是TimeStampToken,但SyncFusion需要包含该令牌的完整响应结构(包含状态码、响应内容等字段)。

解决方案

将获取到的TimeStampToken包装为完整的RFC3161 TimeStampResponse后再返回,具体代码调整如下:

public byte[] Sign(byte[] message, out byte[] timeStampResponse)
{
    var sha256MessageDigest = SHA256.HashData(message);
    var hexEncodedSha256MessageDigest = Convert.ToHexString(sha256MessageDigest);

    // 调用GlobalSign服务获取Base64编码的RFC3161时间戳令牌
    var globalSignTimeStampToken = // 此处替换为调用GlobalSign的实际逻辑
    var timeStampTokenBytes = Convert.FromBase64String(globalSignTimeStampToken);

    timeStampResponse = [];
    if (Rfc3161TimestampToken.TryDecode(timeStampTokenBytes, out var rfc3161TimestampToken, out _))
    {
        // 将TimeStampToken包装为完整的TimeStampResponse结构
        var pkcs9Token = new Pkcs9TimeStampToken(rfc3161TimestampToken.AsSignedCms());
        var tsResponse = new TimeStampResponse(
            Pkcs9ObjectIdentifiers.IdTstInfo,
            new TimeStampResponseStatus(TimeStampResponseStatus.Granted),
            pkcs9Token
        );
        
        // 编码为DER格式字节数组作为返回值
        timeStampResponse = tsResponse.Encode();
    }

    // 调用GlobalSign获取签名值
    var hexEncodedSignatureValue = // 此处替换为调用GlobalSign获取签名的实际逻辑
    return Convert.FromHexString(hexEncodedSignatureValue);
}

额外检查项

  • 确认GlobalSign返回的TimeStampToken包含完整的TSA证书链,Adobe需要验证TSA证书的信任路径
  • 确保TimeStampResponse的编码为纯DER格式,避免多余的Base64编码或格式损坏
  • 若Adobe仍无法验证,检查其信任存储是否包含GlobalSign的TSA根证书,或通过LTV将TSA证书链嵌入PDF中

内容的提问来源于stack exchange,提问作者nvoigt

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.17 11:56:16