【问题标题】:The publisher name is unverified and therefore listed as UNKNOWN发布者名称未经验证,因此列为 UNKNOWN
【发布时间】:2016-07-08 13:38:41
【问题描述】:

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

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

我尝试过的事情

PermissionsCodebaseApplication-Name 属性添加到MANIFEST.MF 并制作了我自己的证书:

keytool -genkey -alias webutil2 -keystore example.keystore
<Entering data is omitted>
keytool -export -keystore example.keystore -alias webutil2 -file cert3.csr

使用我的自制证书手动签名jacob.jar

> 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.

我还将我的证书添加到Signer CA 列表并确认是通过Control Panel &gt; Java &gt; Security &gt; Manage Certificates &gt; System 添加的:

C:\Program Files\Java\jre1.8.0_66\lib\security> keytool -import -trustcacerts -alias root -file cert3.csr -keystore cacerts
  • Java 控制面板中添加了例外列表的 URL
  • 兼容性视图设置弹出窗口拦截设置中添加了 URL(+ IE 重启)

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

【问题讨论】:

    标签: java certificate


    【解决方案1】:

    您需要一份官方证书,而不是自签名证书。此外,证书必须是允许对软件进行签名的证书;请记住,这些往往比为网站或电子邮件制作的要贵得多。

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

    【讨论】:

    • 我通过制作自定义证书解决了这个问题。高级步骤是: 使用 CRL 位置制作自签名 CA 密钥对;制作代码签名密钥对;为代码签名证书制作 CSR;使用 CA 批准 CSR;使用 CA 证书生成空 CRL 并将其放入 CRL 位置;然后文件就准备好了。将 CA 证书导入客户端计算机(java home/lib/security 中的文件 cacerts)。之后,代码签名密钥对可用于对 jar 进行签名。客户端机器不会在每次会话之前发出警告消息。只有一条信息消息,您在复选框中打勾一次,它就不会再出现了。
    猜你喜欢
    • 2011-02-09
    • 2016-09-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多