2017-03-06 76 views
2

我一直在爲此奮鬥了一段時間,如果有人能幫助我理解這裏發生的事情,我將非常感激。如何爲OSX簽署DMG和安裝程序

我有一個install4j項目,爲Windows和OSX創建安裝程序包。我有一個Windows常規簽名證書,這沒有問題。我也有一個Apple開發者證書。我已將私鑰從我的鑰匙串導出到p12文件。我測試了生成的p12文件以確保它可以與密鑰存儲庫密碼一起使用。該證書絕對有效,因爲我今天剛剛創建了它(再次)。而且,當我通過運行Maven的安裝程序生成,它甚至看起來好像一切都很精細:

[INFO] Compressed media file 'Mac OS X Single Bundle': 
[INFO] Compressing files 
[INFO] Generating VM options file vmoptions.txt. 
[INFO] Signing installer 
[INFO] Signing DMG 
[INFO] Moving media files to media directory /Users/.... 
[INFO] The name of the media file is my-app_macos_1_1_1.dmg. 
[INFO] The size of the media file is 4.8 MB 

這似乎不錯,除了安裝和DMG沒有簽名,或至少不會在某種程度上這是有用的:

$ spctl -a -v target/media/my-app_macos_1_1_1.dmg 
target/media/my-app_macos_1_1_1.dmg: CSSMERR_TP_CERT_EXPIRED 
$ spctl -a -v /Volumes/my-app/My\ Application\ Installer.app 
/Volumes/my-app/My Application Installer.app: CSSMERR_TP_CERT_EXPIRED 

cert沒有過期:

Alias name: mac developer: me myself (my company, inc.) 
Creation date: Mar 6, 2017 
Entry type: PrivateKeyEntry 
Certificate chain length: 1 
Certificate[1]: 
Owner: C=US, O="Radiologics, Inc.", OU=K865L34KBQ, CN=Mac Developer: Me Myself (XXXX), UID=YYYY 
Issuer: CN=Apple Worldwide Developer Relations Certification Authority, OU=Apple Worldwide Developer Relations, O=Apple Inc., C=US 
Serial number: 30544da25ea67233 
Valid from: Mon Mar 06 14:46:17 CST 2017 until: Tue Mar 06 14:46:17 CST 2018 

但無論我直接從install4j或通過Maven插件構建DMG /安裝,結果是無效的。我總是得到類似這樣:

$ codesign -dvvv target/media/my-app_macos_1_1_0.dmg 
Executable=.../target/media/my-app_macos_1_1_0.dmg 
Identifier=my-app_macos_1_1_0 
Format=disk image 
CodeDirectory v=20100 size=173 flags=0x0(none) hashes=1+2 location=embedded 
Hash type=sha256 size=32 
CandidateCDHash sha256=XXXXXX 
Hash choices=sha256 
CDHash=XXXXX 
Signature size=8641 
Authority=(unavailable) 
Info.plist=not bound 
TeamIdentifier=not set 
Sealed Resources=none 
Internal requirements count=1 size=36 

爲了讓我們能夠發佈這款應用程式,我們真的需要得到這個工作,但我硬是花了這天沒有在任何進展所有。如果任何人都能對這裏發生的事情有所瞭解,我將不勝感激。

回答

5

有兩種不同的證書可用於在Mac App Store之外分發應用程序。

應用程序證書和安裝程序證實。

檢查您的證書(您可以通過隱藏在/ Application/Utilities中的Keychain Access應用程序中的「My Certificates」來執行此操作),以確保您使用的是安裝程序證書(在我的機器上名稱爲「開發者ID安裝:邁克爾Dautermann。「這是從單獨的‘開發者ID應用程序可以」’你用的協同設計應用證書

更多信息can be seen here

至於DMG的,我原來的答覆會是。」 t做到這一點「,但實際上從MacOS 10.11.5開始,您可以使用CAN登錄dmg文件。更多信息請參見"Signing Disk Images"節「macOS代碼深度簽名」參考指南。您將使用您的開發者ID應用程序證書。

+0

非常感謝您的幫助!我習慣於用一個標準的Java簽名證書來簽署所有的東西,所以有不同目的的多個證書的想法是非常......蘋果:)我必須做的不同的一件事是,當我使用安裝程序證書,我收到錯誤消息「install4j:編譯失敗。原因:com.install4j.cg:在PKCS12文件中找不到開發人員ID應用程序密鑰」。我切換到導出的「開發人員ID應用程序」證書,它的工作。不知道這是關於什麼,但我的安裝程序工作,所以我不在乎;) –

+0

它的工作原理是因爲磁盤映像只應使用您的開發人員ID應用程序身份 –