我们有一个 Java 应用程序,它使用 RxTx 来更新我们游戏机的固件。为了避免用户通过 WebStart 在我们的网站上启动 Java 应用程序时出现安全警报,我们购买了一个受信任的证书并使用该证书对应用程序进行签名。所有检查都表明它已成功签名,如果我在我的 Mac(OS X 10.6.8) 上使用 Java 1.6.0_41 通过 Safari 启动应用程序,它就会启动而没有任何抱怨。
但是,如果我在 Windows 8 机器上使用 IE9 启动它,我会收到一条警报,说“你想运行这个应用程序吗?这个应用程序将以不受限制的访问权限运行,这可能会使你的计算机和个人信息处于危险之中。只有在你信任发布者。此应用程序的数字签名已过期。更多信息”。
如果我点击更多信息,我会得到“此应用程序将在运行时不受限制地访问您计算机上的个人文件和其他设施(网络摄像头、麦克风)。
尽管应用程序具有数字签名,但应用程序的关联文件 (JNLP) 却没有。数字签名可确保文件来自供应商并且未被更改。
数字签名是使用受信任的证书生成的。”我试图找到一个解决方案如何不收到此消息并认为我需要做的是签署 JNLP 文件(即按照此处指出的将其复制到 jar 中)但是什么我找不到如何让 NetBeans 做到这一点!我使用的是 NetBeans 6.9.1。任何人都知道如何做到这一点,是否足以签署 JNLP?
为了验证文件是否正确签名,我执行了以下操作:
jarsigner -verify -certs -verbose OribooDesktopClient.jar
6396 Thu Feb 28 17:14:14 CET 2013 META-INF/MANIFEST.MF
6354 Thu Feb 28 17:14:14 CET 2013 META-INF/MOVINTOF.SF
1843 Thu Feb 28 17:14:14 CET 2013 META-INF/MOVINTOF.RSA
0 Thu Feb 28 17:07:28 CET 2013 META-INF/
0 Thu Feb 28 17:07:26 CET 2013 oribooDesktopClient/
0 Thu Feb 28 17:07:26 CET 2013 oribooDesktopClient/resources/
0 Thu Feb 28 17:07:26 CET 2013 oribooDesktopClient/resources/busyicons/
sm 3912 Thu Feb 28 17:07:26 CET 2013 oribooDesktopClient/BBDatabase.class
X.509, CN=Movinto fun AB, O=Movinto fun AB, STREET=?rev?gen 138, L=?re, ST=J?mtland, OID.2.5.4.17=83013, C=SE
[certificate is valid from 2/28/13 1:00 AM to 3/1/14 12:59 AM]
sm 2497 Thu Feb 28 17:07:26 CET 2013 oribooDesktopClient/Binary.class
X.509, CN=Movinto fun AB, O=Movinto fun AB, STREET=?rev?gen 138, L=?re, ST=J?mtland, OID.2.5.4.17=83013, C=SE
[certificate is valid from 2/28/13 1:00 AM to 3/1/14 12:59 AM]
....