2012-07-26 87 views
30

在OS X 10.8的新版本中,關守會彈出下面的警告,當您嘗試啓動一個簽名的Java小程序:OS X 10.8守和Java小程序

enter image description here

小程序已經使用有效的代碼簽名證書籤名,並且可以在其他平臺以及以前版本的OS X上正常工作。如果我將「允許從...下載的應用程序」更改爲「Anywhere」,則它可以正常工作。

據我所知,「數字簽名無法驗證」,實際上意味着類似於「該簽名未使用Mac開發者ID」。

因此:我可以使用Mac開發人員ID來簽署Java小程序嗎?我可以使用Mac Developer ID和標準代碼簽名證書對它進行簽名嗎?有更好的方法嗎?

+2

順便說一下,我認爲這很愚蠢,因爲Applets被用在網頁瀏覽器中,而且它們是平臺無關的。這是一個恥辱蘋果的工作方式與其他(OS)世界不同...... – tiktak 2012-07-30 18:26:35

+1

@tiktak與此同時,Java已被證明是蘋果公司麻煩的一個很好的來源。別擔心,Flash也是如此。所以,他們的恐懼症在現實中有一些基礎。 – 2012-08-01 12:55:01

回答

10

下面是我從蘋果開發者技術支持得到了答案:

感謝您的耐心等待我們調查這一點。

警報由Java提供,而不是由Gatekeeper提供。但是,您的 正確的是在OS X Mountain Lion上更改了驗證邏輯。

現在有一段時間,當 運行一個已簽名的小程序時,用戶已經看到此警報,因爲已簽名的小程序可以轉義Java沙箱並對用戶系統進行意外更改。如果 他們信任開發人員,並且因此他們不會再看到警報 ,用戶有 選項可以選中「允許所有小程序」框,除非他們從Java安全性首選項中刪除項目。

什麼在山獅改變的是驗證警報現在 基本上意味着Applet的簽名是有效的,但小程序 是一個身份不明的開發者,並試圖在啓用關守升級權限 和用戶必須決定是否允許 。

「身份不明的開發人員」是指除了Mac App Store 或開發人員ID標識的開發人員以外的其他來源。請注意,Java applet不能參與開發人員ID程序 。

如果網閘設置爲只信任Mac App Store的應用程序,那麼你將 無法將小程序添加到信任列表中,除非你使用點擊查看後出現 紙張上的 applet的證書添加到鑰匙鏈細節。

未簽名的小程序根本不允許轉義Java沙箱。

這與Gatekeeper對原生Mac應用程序的處理一致; 來自不明身份開發者的應用程序默認情況下不允許運行。

如果您希望看到警報的措辭已更改,請提交 錯誤報告,地址爲https://developer.apple.com/bugreporter

這基本上意味着沒有辦法以這種方式簽署小程序,您可以避免顯示此消息。我向蘋果公司提交了一個錯誤報告,稱我希望修改消息的措辭不要包含UNIDENTIFIED,UNVERIFIED,INSECURE等詞,因爲這是簽署applet的關鍵,這樣用戶可以感受到溫暖當他們需要允許小程序運行時,他們很舒適,向他們保證,他們將要允許的內容可以被驗證,並且不會對他們的計算機造成任何傷害,並且我們需要在一個地方顯示它將是可見的,捅他們的眼睛。

3

你回答了你自己的問題。 網守認爲不是由Apple頒發的證書/簽名不可信。

Apple Documentation會告訴你如何導出你的證書。您可以照常使用它。 codesign命令也可以做到這一點。

+0

Gatekeeper似乎並未試圖驗證jar簽名,而是正在查看HFS擴展屬性來驗證Apple發佈的開發者ID。 http://stackoverflow.com/a/17222479/101151你測試你的解決方案還是它的猜測? – jla 2015-03-19 19:48:08