CRT撤销前签署的文档吊销校验及Adobe签名无效问题咨询
问题根因
- 未给PDF签名嵌入可信RFC3161时间戳:Adobe校验签名吊销状态时,仅以嵌入的TSA时间戳作为签名发生时间的可信依据,无时间戳时会直接用当前校验时间比对证书吊销状态,即使OCSP返回了吊销日期也不会触发比对逻辑。
- OCSP响应的吊销时间格式不符合Adobe要求:Adobe仅识别UTC时区、无毫秒的ASN.1 GeneralizedTime格式的吊销日期,若返回带本地时区偏移或带毫秒的时间,会跳过吊销日期比对逻辑,直接判定签名无效。
修复方案
1. OCSP响应生成代码修正
修正时间生成逻辑,确保输出符合要求的UTC无毫秒格式,参考实现如下(基于BouncyCastle库):
// 将吊销日期转换为UTC时区、不包含毫秒的ASN1GeneralizedTime ASN1GeneralizedTime revocationTimeUtc = new ASN1GeneralizedTime( current_cert.getRevocationDate(), TimeZone.getTimeZone("UTC"), false // 禁用毫秒字段 ); CRLReason crlReason = CRLReason.lookup(current_cert.getReason_num()); RevokedInfo revokedInfo = new RevokedInfo(revocationTimeUtc, crlReason); respGen.addResponse(id, new RevokedStatus(revokedInfo), nowUpdate, nextUpdate);
2. PDF签名流程补充要求
所有PDF签名必须嵌入可信TSA服务签发的RFC3161标准时间戳,只有明确的可信签名时间戳存在时,Adobe才会执行「签名时间早于吊销时间则签名有效」的校验逻辑。
如果是已签署完成、未嵌入时间戳的历史文档,在证书吊销后无法再修复签名有效性,仅能在证书吊销前为文档添加LTV(长期验证)信息固化签名有效性。
内容的提问来源于stack exchange,提问作者Pablo Arriola
相关产品推荐
相关产品推荐

