构建可能先下载全部依赖,随后在给 JAR 签名时又需要一次网络请求。该请求会经由 Ant 的 SignJar 任务启动的 jarsigner 进程发往时间戳机构。

SignJar 提供 TSA 专用的代理属性。在现有签名配置中,相关形式如下:

<signjar jar="${jar.to.sign}"
         alias="${signing.alias}"
         keystore="${signing.keystore}"
         storepass="${signing.storepass}"
         tsaurl="https://tsa.example/"
         tsaproxyhost="proxy.example"
         tsaproxyport="8080" />

这些值是构建已批准的签名设置和 TSA 的占位符。Ant 从 1.9.5 版起记录 tsaproxyhost 和 tsaproxyport。

在 Ant 1.10.15 中,SignJar 会检查 TSA URL 的协议,并把这些属性转换为通过 -J-D 传给 jarsigner 的相应 HTTP 或 HTTPS 代理属性。代理主机本身是主机名,端口单独提供。如果已批准的 TSA 可公开访问,且签名过程允许使用未经认证的公共中间人,则HTTP 代理列表中的条目可以填写这两个 TSA 代理属性。

这个子进程边界在 Maven antrun 构建中同样重要。Maven 的仓库代理配置以及运行 Ant 的 JVM 中的属性,并不能证明单独启动的 jarsigner 收到了该路由。请配置创建该进程的任务。

相关文章