Apache Poi生成Xades签名添加时间戳吊销信息后校验失败求助
问题排查方案
1. 确认TSP证书链的吊销数据匹配性
- 检查你添加的CRL是否完全覆盖时间戳签名证书、时间戳根证书、中间CA证书全链,不要只添加终端时间戳证书的CRL,校验工具会对证书链逐张检查吊销状态
- 确认你传入的OCSP响应对应的是时间戳链中的证书,不要误传文档签名证书的OCSP响应
2. 补全Apache POI XAdES配置项
POI 5.1.0的XAdES签名默认仅对签名主体证书链嵌入吊销数据,时间戳的吊销数据需要额外开启配置,添加如下代码即可:
// 开启时间戳证书吊销数据嵌入开关 signatureConfig.setIncludeRevocationInfoForTimestamp(true);
同时确认你使用的XAdES级别为XAdES-T及以上,低于该级别的签名不会嵌入时间戳相关的吊销数据。
3. 校验RevocationDataService调用逻辑
- 打日志确认生成时间戳阶段,你的自定义RevocationDataService是否被POI正常调用,如果未触发调用,说明你遇到了POI 5.1.0版本的已知bug,可升级到POI 5.2.0及以上版本修复
4. 验证吊销数据格式有效性
- 检查你传入的CRL为DER编码格式,OCSP响应是完整的
OCSPResponse结构编码,不要仅传入BasicOCSPResponse部分 - 确认CRL和OCSP的有效期覆盖签名生成时间,过期的吊销数据会被校验工具直接忽略,提示缺少有效吊销信息
内容的提问来源于stack exchange,提问作者Mike
相关产品推荐
相关产品推荐

