如果我创建了一个签名的 Java 小程序,我可以将它托管在我想要的任何域上吗?

Posted

技术标签:

【中文标题】如果我创建了一个签名的 Java 小程序,我可以将它托管在我想要的任何域上吗?【英文标题】:If I create a signed Java applet, can I host it on any domain I want? 【发布时间】:2014-01-22 17:17:19 【问题描述】:

或者当从特定域(即您用作 CA 身份验证的一部分的域)下载时,签名的小程序是否与关联并被视为已签名?

我的情况:我创建了一个小程序,作为工具提供下载,以便其他人可以在他们的网站上使用它。人们不会使用我网站上的小程序,而是将其下载为 zip 文件并将其托管在他们的网站上。 (很明显,我的应用程序是针对开发人员和那些精通 html 的人)。到目前为止,该小程序尚未签名,但是由于 Oracle 在最后一次更新中基本上杀死了未签名的小程序,因此我正在考虑对其进行签名。但我不想费尽心思去签名,结果发现只有在我的网站上使用小程序而不是在其他网站上使用时,签名才有效。

编辑澄清:我不打算自签名。我打算使用 CA。

【问题讨论】:

如果答案对您有帮助,您可以接受。 【参考方案1】:

是的。如果它是自签名的,您可能会收到警告,depending on your security level。如果由受信任的机构签署,则不会发出警告。

【讨论】:

第二句不正确。在最近的 JRE 中处于默认安全级别的自签名应用程序。完全被屏蔽了。 @AndrewThompson 谢谢,澄清了这一点。 +1。编辑:添加了安全级别的链接。 很好的链接!我以前没有看过那个流程图。有了这个,我可以很高兴地为答案+1。 :) 当客户端升级到 Java 7 update 51 或更高版本时,我在使用自签名证书时也遇到了问题。具有自签名证书的小程序被阻止。但是您可以将您的 url 添加到 Java 控制台中的异常列表中并让小程序再次运行。【参考方案2】:

答案实际上是一个合格的“是”。

Missing Codebase manifest attribute for:xxx.jar 警告我们,在最近的安全更新中,引入了一项更改,如果 Jar 清单中缺少 Codebase 属性,则会产生警告。

JAR File Manifest Attributes for Security: Codebase Attribute详细介绍:

Codebase 属性用于将 JAR 文件的代码库限制到特定域。使用此属性可防止有人出于恶意目的在其他网站上重新部署您的应用程序。

注意:如果 Codebase 属性未指定安全服务器,例如 HTTPS,则存在一些风险,即您的代码可能会被重新用于中间人 (MITM) 攻击方案。

将此属性设置为应用程序的 JAR 文件所在的域名或 IP 地址。还可以包括端口号。对于多个位置,用空格分隔值。星号 (*) 只能用作域名开头的通配符下表显示了示例值及其匹配项。

据此,我猜您可以添加 Codebase 属性来禁止对您的客户发出警告,但前提是他们将小程序部署在其站点上的特定位置。

我不确定客户是否可以简单地“热链接”到您站点上的小程序。鉴于我不是安全专家,我几乎预计会有某种神秘的方式被滥用。


鉴于最近的安全性收紧,如果 Oracle 决定在应用程序之前指定 HTTPS 服务器,我不会感到惊讶。将在不将插件的安全性降低到危险级别的情况下启动,并且只能跨站点使用扩展程序(不是主应用程序/applet)。

【讨论】:

以上是关于如果我创建了一个签名的 Java 小程序,我可以将它托管在我想要的任何域上吗?的主要内容,如果未能解决你的问题,请参考以下文章

用于使用智能卡进行签名的跨平台 Java 小程序

适用于未签名小程序的默认 Java 策略文件在哪里?

丢失的 java 密钥库文件和应用程序签名被禁用

如何创建病毒签名?

网络浏览器上的签名

App for Mac App Store 签名后不运行