【问题标题】:How to make a machine trust a self-signed Java application如何让机器信任自签名的 Java 应用程序
【发布时间】:2014-02-05 02:30:03
【问题描述】:

我正在使用JAWS 部署一个应用程序,它一直工作到 2013 年底我收到警告,然后今天早上 Java 完全阻止了它。法语消息是:

Application bloquée par les paramètres de sécurité
Vos paramètres de sécurité ont bloqué l'execution d'une application auto-signée avec une version obsolete ou arrivée à expiration de Java。

大致可以翻译为:

应用程序被安全设置阻止
您的安全设置已阻止运行使用过时或过时 Java 自签名的应用程序.

语法不是很清楚,句尾可以读成:

  • ...阻止自签名应用程序使用过时或过时的 Java [运行时] 运行,这意味着本地运行时太旧,但自签名很好
  • ...阻止了一个使用过时或过时的 Java [编译器]自签名的应用程序,这意味着使用的 Java 编译器太旧了

我在网上搜索了完全相同的英文消息,但找不到。所以语法还不清楚。请注意,消息中没有Name: xyz / From: http://url/,只有我在上面输入的文本和一个蓝色的“i”图标。

现在,我不太明白这条错误消息的确切含义,但我知道存在问题,因为我的JAR 文件都是自签名的。我已经在其他 Windows 客户端上遇到过这种情况,这很容易:

  • 我从我的密钥库中提取了一个.cer 证书;
  • 在客户端机器上下载,打开;
  • 让客户将其作为受信任的来源安装在本地计算机上。

它对我的测试设置和一位客户来说就像一个魅力,但另一位客户仍然有问题并且无法运行我的软件。

这是我的一个大问题,我不知道该怎么办。我是否应该升级我的 Java 编译器、重新编译所有内容、再次签署每个 JAR 文件并交叉手指?如何让 Windows 机器信任我的证书并让 Java 应用程序运行?

【问题讨论】:

标签: java security certificate java-web-start self-signed


【解决方案1】:

严重免责声明

此解决方案存在严重 安全漏洞。请自行承担使用风险。
看看这篇文章中的 cmets,看看这个问题的所有答案。


好的,我必须去客户所在地找到解决方案。我:

  • PKCS #12 格式导出了包含签名密钥的密钥库
  • 打开的控制面板 Java -> 安全 选项卡
  • 单击管理证书
  • 将此新密钥库导入为安全站点CA

然后我打开了JAWS 应用程序,没有任何警告。这有点麻烦,但比购买签名证书便宜得多!

【讨论】:

  • 我只是遇到了同样的问题,除了在这种情况下我是一个简单的用户 - 没有开发或部署应用程序 - 所以我无法访问签名密钥,@Mehdi 的解决方案完美运行。
  • ... 这恰好是与@troscher 完全相同的解决方案。不知道为什么我没有先看到它。
  • 将证书添加为 CA 并不完全安全......然后他们可以使用该证书为任何域签署证书。
  • steveayre 的评论 +1。这并不是一个非常好的主意,而且正如 Psycho 指出的那样,在大多数情况下根本不实用。您应该认真考虑不接受您的答案并接受 Mehdi 的答案。然后删除你的答案,或者只是编辑它并说人们应该听从 Mehdi 的建议。
  • 感谢安德鲁的说明。我已经编辑了我的答案,我认为现在已经足够清楚了。
【解决方案2】:

我遇到了同样的问题,但我从 Java 控制面板-->安全性-->SecurityLevel:MEDIUM 解决了它。 就这样,没有管理证书、进口、出口等。

【讨论】:

  • 危险:这可行,但会使您的计算机面临许多潜在的安全风险。如果您信任来源,则将该站点添加到例外站点列表的风险要小得多。查看 Mehdi 或 troscher 的回答。
【解决方案3】:

只需转到 *开始菜单 >>Java >>配置 Java >> 安全性 >> 编辑站点列表 >> 复制并粘贴有问题的链接 >> 确定 问题已解决:)*

【讨论】:

  • 非标准端口也必须包括在内。例如,内部 Proxmox 服务器将使用以 https://hostname.example.com:8006/foo 开头的 URL。如果您只允许https://hostname.example.com,则自签名证书检查将失败。您必须包含完整的 https://hostname.example.com:8006 才能使其正常工作。
  • 仅在某些 Java 版本上可接受。我知道 Java 1.7_45 没有白名单选项。
  • 有同样的问题,但在 linux mint 中,所以我不得不去 java 8 插件控制面板并编辑列表,然后重新启动 firefox 以应用更改。
  • 如果通过 Java Web Start(JNLP 文件)启动,请使用文本编辑器打开文件,找到 标记并使用“codebase”属性中的 URL 添加到白名单。它应该在那之后启动。
  • 使用 java 版本 1.8.0_74 为我工作(如果它不是标准端口 80,请确保在 url 中包含端口,否则它仅假定端口 80)。
【解决方案4】:

我遇到了同样的问题。所以我通过控制面板去了Java选项。将我遇到问题的网址复制到异常中并已修复。

【讨论】:

    猜你喜欢
    • 2016-12-23
    • 1970-01-01
    • 2023-04-11
    • 1970-01-01
    • 2019-09-03
    • 1970-01-01
    • 2023-03-11
    • 2015-08-05
    • 1970-01-01
    相关资源
    最近更新 更多