【问题标题】:Java applet with self-signed certificate on OS X Mountain Lion在 OS X Mountain Lion 上带有自签名证书的 Java 小程序
【发布时间】:2012-06-23 14:35:13
【问题描述】:

我们有一个 Java 小程序需要在完全信任的情况下运行。

在开发和预发布测试期间,我们使用自签名证书对其进行签名(生产版本使用真实代码签名证书进行签名)。

但是当我们尝试在 OS X 10.8 的预版本上启动自签名小程序时,我们无法再选择允许它运行。 “允许”按钮被禁用:

如果我按“显示详细信息...”,我可以选择“始终信任”证书,但这没有区别:

它适用于 OS X Lion 10.7 上相同版本的 Java JRE,所以我怀疑这是操作系统的问题,而不是 JRE。

有什么解决方法吗?

我不希望使用真实的代码签名证书进行测试:使用真实的代码签名证书进行签名意味着我的公司断言该小程序是安全的并且应该被信任。在我们对其进行测试之前,我们几乎无法断言。

【问题讨论】:

  • “我不希望使用真正的代码签名证书进行测试。”如果人们提出奇怪且看似武断的要求的理由,我更愿意。
  • @Andrew:我已经添加了这个要求的推理。
  • 谢谢,这个原因并不像我想象的那么奇怪。好问题。 +1 顺便说一句:1)您是否检查了该 JRE 的“错误数据库”? 2) 小程序是否与 JavaScript 交互? (Appleteer 可以在没有 JS 的简单 HTML 中运行小程序 - 它没有安全沙箱)。 3) 你能在操作系统上运行另一个 JRE 来测试小程序吗?
  • 这与java and signed jars on Mac 有一些可疑的相似之处(OS X、签名的 Jars、安全故障)和一些差异(自签名与纯基于 OS 版本和不同版本的 OS X)。
  • @Andrew Thompson:是的,购买通用名称中带有“仅测试”的新代码签名证书肯定会起作用。 Java 喊得更多(在它工作的平台上),但它是可行的。我只是觉得奇怪的是没有解决方法 - 代码签名证书每年花费大约 100 美元,所以这对于在 OS X 上开发的业余爱好者来说是一个障碍。

标签: java macos applet code-signing osx-mountain-lion


【解决方案1】:

如果您收到“Application Blocked by Security Settings”消息,您需要进入System Preferences: Java: Security 并将您的站点添加到例外列表中或将security level 减少到Medium

【讨论】:

    【解决方案2】:

    这是 Mac OS X 中的新安全功能,默认情况下,只有来自 Mac Store 和受信任的开发人员的应用程序才能在其中运行。幸运的是,它很容易更改,您必须在 Mac OS X 偏好设置中允许。

    转到首选项 -> 安全和隐私,然后单击挂锁以允许更改。

    然后在“允许从以下位置下载应用程序”中选择“任何地方”。

    之后,Java 对话框中的按钮将被启用。

    【讨论】:

    • 完美!非常感谢。
    • 当我启用“AnyWhere”选项时,行为发生了变化,但我仍然收到一个错误对话框,指出:“应用程序被安全设置阻止”和“您的安全设置已阻止自签名应用程序来自跑步”。该应用程序是 JavaFX 示例应用程序之一。在 Mac OS X 10.9 Mavericks、Java 8 上。
    • 在mac里呢?
    【解决方案3】:

    OS X Lion 您可以使用内置的钥匙串访问工具手动将证书添加为受信任的根证书。我还没有访问 OS X Mountain Lion,所以我不知道它是否可以在 Mountain Lion 中使用,但似乎值得一试。 Lion中的步骤是:

    • 打开钥匙串访问(位于 /Applications/Utilities
    • 点击文件 | 导入项目...
    • 将目标钥匙串更改为 System
    • 找到您的证书文件并点击打开
    • 它将显示“您希望您的计算机从现在开始信任由 [...] 签名的证书吗?”。点击始终信任

    如果您直接在 Java 密钥库中生成证书,那么您可能没有独立的证书文件。您可以轻松export one using this guide from Oracle

    我注意到您的屏幕截图显示“此证书被标记为此帐户受信任”,这很奇怪,因为我希望这是可以接受的。也许在 OS X Mountain Lion 中,用户添加的根证书在某种程度上比 Apple 分发的官方证书的地位更低?如果您发现上述步骤不起作用,您可以尝试将您的证书添加到官方根钥匙串中。 钥匙串访问不会让你这样做,但我相信你可以使用内置的certtool 手动编辑位于/System/Library/Keychains/SystemRootCertificates.keychain 的钥匙串来实现这一点。

    【讨论】:

    • 哇...我真的希望他不会将这个部署到 1000 名 beta 测试人员。
    • 我在其中一个 JavaFX 示例应用程序中遇到了这个问题。在 Mac OS X 10.9 Mavericks、Java 8 上。我似乎找不到它用于“自签名”应用程序的密钥,或者密钥库可能用于导出密钥并导入到钥匙串的位置。有任何想法吗?同时,我将浏览所有的 ant 构建脚本.....
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-10-15
    • 1970-01-01
    • 1970-01-01
    • 2013-02-12
    • 1970-01-01
    • 2012-08-02
    • 2012-10-21
    相关资源
    最近更新 更多