在OS X Mountain Lion上具有自签名证书的Java小程序

我们有一个需要以完全信任的方式运行的Java applet。

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

但是,当我们尝试在OS X 10.8的早期阶段启动自签名applet时,我们再也不能选择允许它运行了。 简单地禁用“允许”按钮:

禁用“允许”按钮

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

在此处输入图像描述

它与OS X Lion 10.7上的相同版本的Java JRE一起使用,因此我怀疑它是操作系统的问题,而不是JRE。

有没有解决方法?

我不希望使用真正的代码签名证书进行测试:使用真实的代码签名证书进行签名意味着我的公司声称applet是安全的并且应该是可信的。 在我们测试它之前,我们很难断言。

它是Mac OS X中的新安全function,默认情况下,只允许来自Mac Store和受信任开发人员的应用程序在那里运行。 幸运的是,它很容易改变,你必须在Mac OS X首选项中允许这样做。

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

然后在“允许从下载的应用程序”中选择“Anywhere”。

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

Mac OS X安全和隐私首选项

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

OS X Lion您可以使用内置的Keychain Access工具手动将证书添加为受信任的根证书。 我无法访问OS X Mountain Lion,因此我不知道它是否适用于Mountain Lion,但似乎值得一试。 Lion中的步骤是:

  • 打开Keychain Access(位于/ Applications / Utilities
  • 单击文件 | 导入项目……
  • 将目标钥匙串更改为系统
  • 找到您的证书文件并单击“打开”
  • 它会说“你希望你的计算机从现在开始信任证书吗?”。 单击始终信任

如果直接在Java密钥库中生成证书,则可能没有独立的证书文件。 您可以使用Oracle的本指南轻松导出一个 。

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