2012-07-29 29 views
13

我正在使用Apple Developer ID證書籤署應用程序包。我需要使用命令行工具進行簽名,因爲我們的構建是自動化的,並從我們的工具鏈運行。 90%的正常工作使用此命令的時間:錯誤,「時間戳服務不可用。」在Mac OS X上使用代碼簽名時10.8

ws5:bin nick$ codesign -fs "Developer ID Application: <my name here>" MyApp.app 
ws5:bin nick$ spctl --assess MyApp.app 
ws5:bin nick$ 

注: MyApp.app不是我真正的應用程序名稱,<my name here>是不是實際值。

所以,也許在10倍1間歇它失敗,此錯誤:

MyApp.app: The timestamp service is not available. 

我驗證過的。應用程序獲得通過與spctl --assess的隔離機制,並通過它荏苒並下載簽名的文件 - 所以請不要說「你做錯了,使用Xcode」。我知道Apple沒有正式推薦使用codesign作爲開發者ID證書(根據WWDC video),但我們需要將其用於自動化,因爲我們的應用程序是gcc和Qt構建輸出的奇怪組合。

圍繞此錯誤的最佳策略是重試,直到它再次運行爲止?這就是我所能想到的。

回答

2

我認爲這與您簽名的方式無關。今天下午我在Xcode上多次構建了我的項目,但沒有出現這種問題。但是,今天晚上,當我乘坐沒有網絡連接的公共汽車時,我試圖建造三次,每次都有同樣的錯誤。所以我關閉了我的MacBook Air,我們都睡了一覺。當我回到家時,回到無線網絡,我能夠再次建立。

因此,很明顯,Xcode不會進行編碼簽名,因此無法構建一個已編碼的應用程序,除非它可以訪問互聯網上的時間服務器或類似的東西。很煩人,錯誤信息不能解釋這一點!您的互聯網訪問是否間歇?

顯然,刪除代碼化構建階段的蠻力解決方法可能會解決它。我還發現一個easier workaround,除了我會設置一個提醒,記住在構建發貨之前重新打開時間戳開關。否則,我認爲您的未加時間戳的產品可能會失敗Mac App Store評論或Gatekeeper。

4

這是通過Apple rdar:// 11785270進行跟蹤的,對我而言,解決方法是在每次構建之前運行項目清理。

+0

對,就這麼簡單。 – codingFriend1 2014-01-26 13:08:51

6

從網絡/防火牆問題似乎出現此問題。在使用VPN進入限制較少的網絡之前,我始終得到此錯誤。我不知道這個代碼簽名工具試圖訪問哪個服務器。

解決方法似乎是添加--timestamp=none標誌(如果您使用XCode,則爲「其他代碼簽名標誌」)。

-1

清理您的項目+確保您有一個有效的互聯網連接。這至少幫助了我。

7

我不能推薦--timestamp = none解決方法。如果您沒有爲您的簽名添加時間戳,則當證書過期時,您的二進制文件將變爲無符號/無效。至少如果您簽署了時間戳,只要在證書有效期間簽署二進制文件,驗證就會通過。這並不打折實際被吊銷的證書,但是應該讓你保密,以防某人(可能是你)在證書有效期過後的一段時間內使用你的檔案副本。

如果您沒有Internet時間戳您的簽名,那麼您最好禁用完全簽名,直到連接恢復。

編輯:或者,假設您的連接已啓動,但Apple的默認時間戳服務器正在碎片化,您可以選擇提供自己的有效時間戳服務器。