如何使机器信任自签名Java应用程序

如何使机器信任自签名Java应用程序,java,security,certificate,java-web-start,self-signed,Java,Security,Certificate,Java Web Start,Self Signed,我正在使用部署一个应用程序,它一直工作到2013年底,当时我收到一个警告,今天早上Java完全阻止了它。法语的信息是: 应用博客 在Java中,应用程序自动签名的应用程序版本已过时 这大致可以翻译为: 应用程序被安全设置阻止 您的安全设置已阻止运行使用过时或过时Java自签名的应用程序 语法不太清楚,句子的结尾可以理解为: …阻止自签名应用程序使用过时或过时的Java[运行时]运行,这意味着本地运行时太旧,但自签名没有问题 …阻止了使用过时的Java[编译器]自签名的应用程序,这意味着使用的

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

<强>应用博客 在Java中,应用程序自动签名的应用程序版本已过时

这大致可以翻译为:

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

语法不太清楚,句子的结尾可以理解为:

  • …阻止自签名应用程序使用过时或过时的Java[运行时]运行,这意味着本地运行时太旧,但自签名没有问题
  • …阻止了使用过时的Java[编译器]自签名的应用程序,这意味着使用的Java编译器太旧
我在网上搜索了完全相同的英文信息,但找不到。所以语法仍然不清楚。请注意,消息上没有
Name:xyz/From:http://url/
,只有我上面键入的文本和一个蓝色的“I”图标

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

  • 我从密钥库中提取了
    .cer
    证书
  • 在客户端机器上下载,打开
  • 使客户将其作为可信源安装在本地计算机上
它在我的测试设置和一个客户身上发挥了巨大的作用,但另一个客户仍然存在问题,无法运行我的软件


这对我来说是个大问题,我不知道该怎么办。我是否应该升级我的Java编译器,重新编译所有内容,再次对每个JAR文件签名并祈祷?如何使Windows box信任我的证书并让Java应用程序运行?

严重免责声明

此解决方案存在严重的安全缺陷。请自担风险使用。
看看这篇帖子上的评论,看看这个问题的所有答案


好的,我必须去客户处找到一个解决方案。一:

  • 导出了以格式保存签名密钥的密钥库
  • 打开控制面板Java->Security选项卡
  • 单击“管理证书”
  • 已将此新密钥库作为安全站点导入

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

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

只需转到*Startmenu配置Java安全性编辑网站列表复制并粘贴有问题的链接确定
问题已修复:)*

我也遇到了同样的问题,但我通过Java控制面板-->安全-->安全级别:中等解决了它。
正因为如此,没有管理证书、导入、导出等。

另一个选项是将证书添加到
%JAVA\u HOME%\lib\security\cacerts
:我只是遇到了同样的问题,只是在这种情况下我是一个简单的用户-不开发或部署应用程序-因此我无法访问签名密钥,@Mehdi的解决方案工作得很好。。。。这恰好与@troscher的解完全相同。不知道为什么我没有首先看到它。将证书添加为CA并不完全安全。。。然后,他们可以使用该证书签署任何域的证书。steveayre评论+1。这真的不是一个很好的主意,正如psycho所指出的,在大多数情况下根本不实用。你应该认真考虑联合国接受你的答案,并接受Mehdi的答案。然后删除你的答案或编辑它,并说人们应该遵循Mehdi的建议。谢谢你的留言。我已经编辑了我的答案,我想现在已经足够清楚了。非标准端口也必须包括在内。例如,内部Proxmox服务器将使用以
开头的URLhttps://hostname.example.com:8006/foo
。如果只允许
https://hostname.example.com
。您必须包含完整的
https://hostname.example.com:8006
以使其正常工作。仅在某些Java版本上可接受。我知道Java 1.7_45没有白名单选项,但在linux mint中也有同样的问题,所以我必须转到Java 8插件控制面板编辑列表,然后重新启动firefox以应用更改。如果通过Java Web Start(JNLP文件)启动,请用文本编辑器打开文件,找到标记并使用“代码库”中的URL属性添加到白名单。它应该在那之后启动。在java版本1.8.0_74中为我工作(如果不是标准端口80,请确保在url中包含端口,否则它仅假定为端口80)。危险:这可以工作,但会使您的计算机面临许多潜在的安全风险。如果您信任源,那么将该站点添加到异常站点列表的风险要小得多。参见Mehdi或troscher的答案。