【发布时间】:2015-02-07 17:54:21
【问题描述】:
我有一个包含多个 JAR 库的 Java Web Start 应用程序。现在我需要签署 JAR 以使其通过浏览器工作。
我的问题是:除了主 Jar 签名之外,我还需要对应用程序内的每个库 JAR 进行签名吗?
【问题讨论】:
标签: java security java-web-start sign jar-signing
我有一个包含多个 JAR 库的 Java Web Start 应用程序。现在我需要签署 JAR 以使其通过浏览器工作。
我的问题是:除了主 Jar 签名之外,我还需要对应用程序内的每个库 JAR 进行签名吗?
【问题讨论】:
标签: java security java-web-start sign jar-signing
想象一下,如果您有一个农场并饲养着珍贵的鸵鸟。为了防止鸵鸟四处游荡并被狮子吃掉,你在农场周围竖起了栅栏。但不幸的是,您只有足够的围栏线来在农场 4 个侧面中的 3 个周围设置围栏。鸵鸟(以及您的投资)会安全吗?当然不是。
安全的原理是一样的。 任何没有数字签名的库 Jar 都是潜在的安全漏洞来源。导致底线..
应用中的每个 Jar。必须在应用程序之前进行数字签名。可以被认为是安全和值得信赖的。
..如果我对已经签名的库进行签名,新签名会覆盖旧签名吗?
不一定。从jarsigner docs: Multiple Signatures for a JAR File我们看到..
JAR 文件的多重签名
一个 JAR 文件可以由多个人通过对文件运行 jarsigner 命令来签名 多次,每次都为不同的人指定别名,如下:
jarsigner myBundle.jar susan
jarsigner myBundle.jar kevin
当一个 JAR 文件被多次签名时,生成的 JAR 文件中有多个 .SF 和 .DSA 文件,每个签名一对。在前面的示例中,输出 JAR 文件包含具有以下名称的文件:
SUSAN.SF
SUSAN.DSA
KEVIN.SF
KEVIN.DSA
【讨论】: