Ant SignJar:通过代理路由时间戳请求
配置 Ant SignJar 的时间戳请求所使用的代理,而不是假设构建启动器的设置会传到 jarsigner。
构建可能先下载全部依赖,随后在给 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 收到了该路由。请配置创建该进程的任务。