自最新的Java更新以来,我的两个小程序向用户显示警告弹出窗口,即使我们使用的两个jar
文件都已签名。我已使用jarsigner -verify MyJarFile.jar
命令验证了它们已签名。以下是我们看到的弹出消息......
我的applet通过JNI调用C ++ dll。 C ++ dll调用C#netmodule。
有谁知道我能做些什么才能让这个弹出窗口消失?它说应用程序包含签名和未签名的代码,但我在我的jar文件中签署每个java文件(只有1个)。我需要做更高级别的签名吗?
编辑:这是在最新的Java更新时发生的。请参阅以下摘自this page。
使用Java applet或Java Web Start技术部署的应用程序的作者和供应商 - 通过Web浏览器或网络在运行时分发给最终用户的应用程序 - 应使用可信证书签署其代码,以获得最佳用户体验。具体来说,客户端浏览器中执行的所有Java代码都会提示用户。提供的对话框消息类型取决于风险因素,如代码签名或未签名,代码请求提升权限,JRE高于或低于安全基线等。低风险方案提供非常小的对话框并包含一个不显示类似对话框的复选框将来由同一供应商提供。考虑到风险增加,更高风险的情况,例如运行未签名的罐子,将需要更多的用户交互。
答案 0 :(得分:7)
我想出了答案。我的eclipse项目中没有清单文件,因此我创建了一个名为manifest.mf
的文件,并将以下代码放入其中。
Manifest-Version: 1.0
Trusted-Library: true
在eclipse中构建jar文件时,在第3页上,它会要求您提供清单文件。我相信它默认此选项为“为我创建清单文件”,但此清单文件仅包含上面的第一行。选择“使用工作区中的现有清单”选项,然后选择刚刚创建的manifest.mf文件。然后像往常一样签下你的罐子。
解决问题的是Trusted-Library
属性。查看this page以获取有关此属性和其他特权代码jar文件的更多信息。