求助:webstart-maven-plugin签名Jar失败,时间戳请求遭拒绝
解决webstart-maven-plugin签名JNLP时的时间戳错误
这个问题我之前帮团队排查过,核心是Java签名过程中无法获取有效的时间戳导致的——毕竟Java要求签名必须附带时间戳来证明签名时证书是有效的,下面给你几个实用的解决方向:
1. 检查时间戳服务器的可用性与网络
默认的时间戳服务器可能因为网络限制、服务商变更等原因无法访问,你可以先测试下常用的公开时间戳服务器是否能连通:
- 用命令行测试:
curl http://timestamp.digicert.com,如果能返回内容说明网络没问题;如果超时,大概率是网络防火墙或者代理的问题,需要调整网络配置。 - 也可以换用其他可靠的时间戳服务器,比如
http://timestamp.sectigo.com或者http://tsa.starfieldtech.com。
2. 明确配置插件的时间戳参数
在你的pom.xml里,给webstart-maven-plugin的签名配置指定可用的时间戳服务器,示例配置如下:
<plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>webstart-maven-plugin</artifactId> <version>1.0-beta-6</version> <configuration> <!-- 保留你原有的其他配置,比如jnlp输出路径、依赖处理等 --> <sign> <keystore>你的密钥库路径</keystore> <storepass>密钥库密码</storepass> <alias>密钥别名</alias> <!-- 指定可用的时间戳服务器 --> <tsaurl>http://timestamp.digicert.com</tsaurl> </sign> </configuration> </plugin>
如果是临时测试(生产环境不推荐),可以关闭时间戳验证,在<sign>节点里添加<tsa>false</tsa>,跳过时间戳请求。
3. 检查本地系统时间
别小看这个细节——如果你的机器系统时间和实际时间偏差过大(比如差了几个小时以上),时间戳服务器会拒绝请求,导致报错。确保本地时间准确,时区设置正确。
4. 升级插件版本
你用的1.0-beta-6是比较老旧的测试版本,存在不少已知问题,包括时间戳服务器的兼容问题。建议升级到最新的稳定版本(比如1.0.0),新版本不仅修复了很多bug,还默认使用更可靠的时间戳服务。
5. 验证目标jar包的完整性
报错里提到的unprocessed_commons-codec-1.10.jar可能存在损坏,你可以尝试:
- 清理本地Maven仓库:执行
mvn clean install -U,强制重新下载所有依赖; - 手动检查这个jar包是否能正常打开,或者替换成官方下载的commons-codec-1.10.jar。
内容的提问来源于stack exchange,提问作者Mayoares
相关产品推荐
相关产品推荐

