Java 发布者名称未经验证,因此列为未知

Java 发布者名称未经验证,因此列为未知,java,certificate,Java,Certificate,我有一个旧的java web应用程序。客户端计算机正在使用JRE 6访问此应用程序,但我需要将它们迁移到JRE 8。 在客户端(windows)上安装JRE 8后,当我第一次运行应用程序时,我收到与名为jacob.jar的文件相关的安全警告消息:发布者名称未经验证,因此列为未知 我可以勾选复选框并单击运行,然后警告不会出现在该浏览器会话中,但是如何完全消除警告消息,使其即使在会话中首次启动时也不会出现? 我试过的东西 将权限、代码库和应用程序名称属性添加到MANIFEST.MF,并制作了我自己的

我有一个旧的java web应用程序。客户端计算机正在使用JRE 6访问此应用程序,但我需要将它们迁移到JRE 8。 在客户端(windows)上安装JRE 8后,当我第一次运行应用程序时,我收到与名为
jacob.jar
的文件相关的安全警告消息:发布者名称未经验证,因此列为未知

我可以勾选复选框并单击运行,然后警告不会出现在该浏览器会话中,但是如何完全消除警告消息,使其即使在会话中首次启动时也不会出现?

我试过的东西 将
权限
代码库
应用程序名称
属性添加到
MANIFEST.MF
,并制作了我自己的证书:

keytool -genkey -alias webutil2 -keystore example.keystore
<Entering data is omitted>
keytool -export -keystore example.keystore -alias webutil2 -file cert3.csr
> sign_webutil.bat jacob.jar
Signature verified OK    jarsigner -verify jacob.jar    jar verified.
Warning:    This jar contains entries whose certificate chain is not validated.    This jar contains signatures that does not include a timestamp. Without a timestamp, users may not be able to validate this jar after    the signer certificate's expiration date (2017-05-14) or after any    future revocation date.
Re-run with the -verbose and -certs options for more details.
我还将我的证书添加到
签名者CA
列表中,并通过
控制面板>Java>安全性>管理证书>系统确认添加了该证书:

C:\Program Files\Java\jre1.8.0_66\lib\security> keytool -import -trustcacerts -alias root -file cert3.csr -keystore cacerts
  • 将URL添加到Java控制面板中的异常列表
  • 在兼容性视图设置和弹出窗口阻止程序设置中添加URL(+IE重启)

但是,在我从Java控制面板重置警告提示后,警告仍然出现。

您将需要正式证书,而不是自签名证书。此外,证书必须是允许软件签名的证书;请记住,这些往往比那些网站或电子邮件更昂贵


编辑:还建议将您自己的自定义CA添加到Java自己的证书路径也可能是一个可行的选择。

我通过制作自定义证书解决了这个问题。高级步骤是:使用CRL位置生成自签名CA密钥对;制作代码签名密钥对;制定代码签署证书的CSR;使用CA批准CSR;使用CA证书生成空CRL并将其放入CRL位置;然后文件就准备好了。将CA证书导入客户端计算机(文件
javahome/lib/security
中的
cacerts
)。之后,可以使用代码签名密钥对对JAR进行签名。客户端计算机不会在每次会话之前发出警告消息。只有一条信息消息,您在其中勾选复选框一次,它将不再显示。