在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对话框中的按钮。
如果您收到“ 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
的钥匙串来实现这一点。