5

jar自最新的 Java 更新以来,即使我们使用的两个文件都已签名,我的两个小程序仍向我们的用户显示警告弹出窗口。我已经验证它们是使用jarsigner -verify MyJarFile.jar命令签名的。下面是我们看到的弹出消息...

在此处输入图像描述

我的小程序通过 JNI 调用 C++ dll。C++ dll 调用 C# 网络模块。

有谁知道我能做些什么来让这个弹出窗口消失?它说应用程序包含签名和未签名的代码,但我正在签署我的 jar 文件中的每个 java 文件(只有 1 个)。我需要做更高级别的签名吗?

编辑:这发生在最新的 Java 更新中。请参阅以下引自此页面的引文。

使用 Java 小程序或 Java Web Start 技术(在运行时通过 Web 浏览器或网络分发给最终用户的应用程序)的作者和供应商应使用受信任的证书对其代码进行签名,以获得最佳用户体验。具体来说,在客户端浏览器中执行的所有 Java 代码都会提示用户。显示的对话框消息的类型取决于风险因素,如代码签名或未签名、请求提升权限的代码、JRE 高于或低于安全基线等。低风险场景显示一个非常小的对话框,并包含一个不显示类似对话框的复选框将来由同一供应商提供。考虑到风险增加,更高风险的场景(例如运行未签名的 jar)将需要更多的用户交互。

4

1 回答 1

7

我想出了答案。我的 eclipse 项目中没有清单文件,所以我创建了一个名为的文件manifest.mf并将以下代码放入其中。

Manifest-Version: 1.0
Trusted-Library: true

在 Eclipse 中构建 jar 文件时,在第 3 页,它会要求您提供清单文件。我相信它默认此选项为“为我创建清单文件”,但此清单文件仅包含上面的第一行。选择“使用工作区中的现有清单”选项,然后选择您刚刚创建的 manifest.mf 文件。然后像往常一样在你的罐子上签名。

这是Trusted-Library解决问题的属性。查看此页面以获取有关此属性和其他特权代码 jar 文件的更多信息。

于 2013-05-08T15:24:56.493 回答